Kryptische XML Log-, Daten- oder Konfigurationsfiles Anwendungsgebiete Log- und Konfigurationsdaten können leicht mit XSLT "menschenlesbar" formatiert werden. Ein Arbeitskollege im neuen Job kam kürzlich auf mich zu, ob ich um eine Möglichkeit wüsste, wie man sein kryptisches Datenfile für einen Übersetzungsdienst formatieren könnte:
<?xml version="1.0" encoding="UTF-8"?>?<?xml-stylesheet type="text/xsl" href="de.xsl"?> <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" jcr:language="de" jcr:mixinTypes="[mix:language]" jcr:primaryType="sling:Folder"> <b_manual jcr:primaryType="sling:MessageEntry" sling:message="Bedienungsanleitung"/> <b_warning jcr:primaryType="sling:MessageEntry" sling:message="Warnung"/> <b_danger jcr:primaryType="sling:MessageEntry" sling:message="Vorsicht"/> <b_note jcr:primaryType="sling:MessageEntry" sling:message="Notiz"/> <b_notice jcr:primaryType="sling:MessageEntry" sling:message="Hinweis"/> [...]Plain Text
Mit einem eingehängten XSLT Stylesheet de.xsl wird so ein Datenfile als Tabelle formatiert:
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sling="http://sling.apache.org/jcr/sling/1.0"> <xsl:template match="jcr:root"> <html> <table border="1" cellpadding="5" cellspacing="5"> <xsl:apply-templates/> </table> </html> </xsl:template> <xsl:template match="*"> <tr> <td> <xsl:value-of select="concat(count(preceding::*[@sling:message]) + 1,'.')"/> </td> <td> <xsl:value-of select="name()"/> </td> <td contenteditable="true"> <xsl:value-of select="@sling:message"/> </td> </tr> </xsl:template> </xsl:stylesheet>Plain Text
Hängt man an dieses Beispiel noch ein bisschen JavaScript Logik und macht die Felder für die Übersetzungen mittels des HTML5 contenteditable Attributs Attribute contenteditable editierbar, dann bräuchte man nur noch eine Rücktransformation HTML nach XML und hätte schon einen kleinen XML Editor gebaut. So funktioniert auch der Editor in Tektur.