In einem for-each
Anweisung, ich möchte IDs für jeden übereinstimmenden Knoten generieren.
Einige XML-Datei gegeben:
<event attr1="qwertz">
<test>Test</test>
</event>
<event attr1="asdfg">
<test>Test</test>
</event>
... und folgende Regel:
<xsl:for-each select="event">
<xsl:element name="event">
<xsl:attribute name="id">id/{generate-id(test)}</xsl:attribute>
</xsl:element>
</xsl:for-each>
Ich bekomme immer so etwas:
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
...
Wie lautet die korrekte Syntax für den Aufruf dieser Funktion in XSLT? Danke im Voraus!
Antworten:
2 für die Antwort № 1Benutzen:
<event id="id/{generate-id(test)}"/>
Oder das Verbose:
<xsl:element name="event">
<xsl:attribute name="id">
<xsl:text>id/<xsl:text>
<xsl:value-of select="generate-id(test)"/>
</xsl:attribute>
</xsl:element>
Hinweis: Attributwertvorlagen gelten nur für literale Ergebniselemente und nur einige Attribute von XSLT-Anweisungen.