Konvertieren von XML-Dokument für die Verwendung mit .NET 2.0 TreeView-Steuerelement
Frage
Ich habe eine XML-Datei, die in folgendem Format ist:
<root>
<category>
<doctype>
<name>Doc1</name>
<site>
<name>Site1</name>
<target>iframe</target>
<url>http://www.gmail.com</url>
</site>
</doctype>
<doctype>
<name>Doc2</name>
<site>
<name>Site2</name>
<target>iframe</target>
<url>http://www.bbc.co.uk</url>
</site>
</doctype>
</category>
</root>
Ich brauche es auf einem Standard-.net 2.0 TreeView-Steuerelement zu verwenden, die die XML im folgende Format erfordert
<root>
<category>
<doctype name="Doc1">
<site name = "Site1" target = "iframe" url = "http://www.gmail.com">
</site>
</doctype>
<doctype name="Doc2">
<site name = "Site2" target = "iframe" url = "http://www.bbc.co.uk">
</site>
</doctype>
</category>
</root>
Die größte Komplikation ist die Tatsache, dass einige untergeordneten Knoten des DOCTYPE Knoten auf Attribute (d NAME), während einiger Aufenthalt als untergeordneten Knoten konvertiert werden müssen, die Eigenschaften ihres eigenen (d SITE) erforderlich ist.
Wie kann dies mit Hilfe von XSLT zu tun?
Lösung
Die folgende XSLT 1.0 Transformation tut, was Sie beabsichtigen.
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root | category | doctype | site">
<xsl:copy>
<xsl:apply-templates select="*" />
</xsl:copy>
</xsl:template>
<xsl:template match="name | target | url">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
Ausgabe:
<root>
<category>
<doctype name="Doc1">
<site name="Site1" target="iframe" url="http://www.gmail.com"></site>
</doctype>
<doctype name="Doc2">
<site name="Site2" target="iframe" url="http://www.bbc.co.uk"></site>
</doctype>
</category>
</root>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow