XSLT 1.0: Wenn 0 dann löschen
juls_pro_37
- xml
- xsl
2 ThomasM
Hi,
würde gerne die "GTIN" unter "Item" löschen, wenn diese "0“ ist.
Habe es wie folgt gelöst, denke aber, dass es einfacher/kürzer gehen sollte.
XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<SALESINVOICE>
<LineInformation>
<Item>
<LineNum>1</LineNum>
<GTIN>1234567893695</GTIN>
</Item>
</LineInformation>
<LineInformation>
<Item>
<LineNum>2</LineNum>
<GTIN>0</GTIN>
</Item>
</LineInformation>
</SALESINVOICE>
XSLT:
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Item">
<xsl:copy>
<xsl:choose>
<xsl:when test="GTIN = 0">
<xsl:apply-templates select="node()|@*" mode="exclude" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="node()|@*" />
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
<xsl:template match="Item/GTIN" mode="exclude" />
<xsl:template match="node()|@*" mode="exclude">
<xsl:copy>
<xsl:apply-templates select="node()|@*" mode="exclude" />
</xsl:copy>
</xsl:template>
Danke & LG Julian
Hallo Julian,
würde gerne die "GTIN" unter "Item" löschen, wenn diese "0“ ist.
Habe es wie folgt gelöst, denke aber, dass es einfacher/kürzer gehen sollte.
Ja, geht einfacher und kürzer:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Item/GTIN[. = 0]"/>
</xsl:stylesheet>
Grüße,
Thomas