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