2016-03-23 8 views
1

Ich habe eine Desktop-Anwendung, die eine XML-Datei als Eingabe nimmt. Ich muss eine neue XML-Datei erstellen, wenn neue Funktionen in die Anwendung eingeführt werden.XML-Transformation Automatisierung

Das Format des neuen XML ist 80% ähnlich zu dem bestehenden. Daher wird die Automatisierung dieses XML meine Zeit für neue Verbesserungen um 80% reduzieren.

Ich dachte schon über XSD nach, aber ich weiß nicht, ob das der richtige Weg ist oder nicht.

Oder ist noch etwas für die XML-Transformationsautomatisierung möglich?

Antwort

1

XSLT ist ideal für die automatische Umwandlung von XML, sofern Sie eine deklarative Programmiersprache erlernen möchten.

Wenn die neue XML 80% ähnlich dem bestehenden XML ist, beginnen Sie mit der Identitätstransformation,

<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

die identisch über XML kopiert.

Fügen Sie dann Vorlagen hinzu, um abzudecken, wie sich das neue XML von dem alten unterscheiden sollte. Zum Beispiel das Hinzufügen dieser Vorlage auf die Identitätstransformation,

<xsl:template match="not-needed"/> 

not-needed Elemente werden umgewandelt in das neue XML zu verhindern.

Und diese Vorlage,

<xsl:template match="old-element"> 
    <new-element/> 
</xsl:template> 

wird old-element (und alles darunter) ersetzen mit new-element.

Oder diese Vorlage,

<xsl:template match="old-element"> 
    <new-element> 
     <xsl:apply-templates select="@*|node()"/> 
    </new-element> 
    </xsl:template> 

ersetzt old-element (aber nicht alles darunter) mit new-element.

Es ist üblich, auf diese Weise in nur wenigen Minuten identitätsbasierte Transformationen zu erstellen. Glücklicherweise erstreckt sich diese Art von Macht auch auf kompliziertere Transformationen mit einem ähnlich hohen Ergebnis-zu-Aufwand-Verhältnis.

Siehe auch: How to get started with XSLT?