Hallo Julian,
Anbei mein XSLT:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> <xsl:output method="xml" indent="yes"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="LineItem/GTIN"> <xsl:copy> <xsl:variable name="LineItem" select="'GTIN'"/> <xsl:value-of select="concat(substring('00000000000000', 1, 14 - string-length($LineItem)), $LineItem)"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
Im gezeigten Code wählt select="'GTIN'"
den String in den einfachen Anführungszeichen selbst. Direkt am gesuchten Element benötigt man den Kontextknoten, mit . abgekürzt [alternativ text()].
<xsl:template match="LineItem/GTIN">
<xsl:copy>
<xsl:variable name="LineItem" select="."/>
<xsl:value-of select="concat(substring('00000000000000', 1, 14 - string-length($LineItem)), $LineItem)"/>
</xsl:copy>
</xsl:template>
Es geht kompakt auch ohne Variable und direkt über das Element GTIN
:
<xsl:template match="GTIN">
<xsl:copy>
<xsl:value-of select="concat(substring('00000000000000', 1, 14 - string-length(.)), .)"/>
</xsl:copy>
</xsl:template>
Grüße,
Thomas