xsl:element name=""
Danzelot
- xsl
hallo
kann mir jemand sagen was das folgende bedeutet?
<xsl:element name="{name(.)}"
Hallo Danzelot,
kann mir jemand sagen was das folgende bedeutet?
<xsl:element name="{name(.)}"
Damit werden Elemente mit dynamischen Namen ausgehend von den Namen der verarbeiteten Elemente erzeugt. Das Konstrukt {...} ist dabei ein Attribute Value Template (AVT).
Kleines Beispiel:
XML-Dokument:
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<x>1</x>
<y>2</y>
<z>3</z>
</root>
XSL-Stylesheet:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
<xsl:template match="root">
<output>
<xsl:for-each select="*">
<xsl:element name="{name(.)}">...</xsl:element>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
Ergebnis:
<?xml version="1.0" encoding="ISO-8859-1"?>
<output>
<x>...</x>
<y>...</y>
<z>...</z>
</output>
Das ist nicht besonders originell, interessanter wäre z. B. eine erweiterte Benennung wie name="{concat(name(.),'_neu')}". Dann entsteht:
<?xml version="1.0" encoding="ISO-8859-1"?>
<output>
<x_neu>...</x_neu>
<y_neu>...</y_neu>
<z_neu>...</z_neu>
</output>
Grüße,
Thomas
[Nachtrag:]
Damit werden Elemente mit dynamischen Namen ausgehend von den Namen der verarbeiteten Elemente erzeugt.
Das ist natürlich nicht auf Elementknoten beschränkt, die Umwandlung von Attributnamen in Elementnamen ist auch gängige Praxis.
Thomas