oooohhh mein Fehler, hatte das mit when schon probiert, aber halt noch mit "|" anstatt "or" und natürlich hat es dann nicht geklappt.
Zu guter letzt (vorerst 😛) müsste ich jetzt am kopf unter "HeaderInformation" ausgeben, ob es eine änderung unter "Item" gibt. -> Hier müsste aber eine zusätliche prüfung auf die "LineNum" erfolgen, wie mach ich das? 😅
XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<OrderResponse>
<HeaderInformation>
<Test>1</Test>
</HeaderInformation>
<LineInformation>
<Item>
<LineNum>1</LineNum>
<SupplierArticleNumber>BK07050S8C40</SupplierArticleNumber>
<OrigSupplierArticleNumber>BK07050S8C40</OrigSupplierArticleNumber>
<Quantity>3.00</Quantity>
<QtyOrdered>3.00</QtyOrdered>
<DeliveryDate>2019-12-06</DeliveryDate>
<OrigDeliveryDate>2019-12-06</OrigDeliveryDate>
</Item>
<Item>
<LineNum>2</LineNum>
<SupplierArticleNumber>BK07050S8C403</SupplierArticleNumber>
<OrigSupplierArticleNumber>BK07050S8C403</OrigSupplierArticleNumber>
<Quantity>3.00</Quantity>
<QtyOrdered>3.00</QtyOrdered>
<DeliveryDate>2019-12-06</DeliveryDate>
<OrigDeliveryDate>2019-12-06</OrigDeliveryDate>
</Item>
</LineInformation>
</OrderResponse>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" standalone="yes" indent="yes"/>
<xsl:strip-space elements="*" />
<xsl:template match="HeaderInformation">
<xsl:copy>
<Changes>
<xsl:choose>
<xsl:when test="../LineInformation/Item/OrigDeliveryDate != ../LineInformation/Item/DeliveryDate or
../LineInformation/Item/QtyOrdered != ../LineInformation/Item/Quantity or
../LineInformation/Item/OrigSupplierArticleNumber != ../LineInformation/Item/SupplierArticleNumber">yes</xsl:when>
<xsl:otherwise>no</xsl:otherwise>
</xsl:choose>
</Changes>
<!--copy all other nodes-->
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Item">
<xsl:copy>
<LineChange>
<xsl:choose>
<xsl:when test="OrigDeliveryDate != DeliveryDate or
QtyOrdered != Quantity or
OrigSupplierArticleNumber != SupplierArticleNumber">6</xsl:when>
<xsl:otherwise>5</xsl:otherwise>
</xsl:choose>
</LineChange>
<LineChangeDeliveryDate>
<xsl:choose>
<xsl:when test="OrigDeliveryDate = DeliveryDate">no</xsl:when>
<xsl:otherwise>yes</xsl:otherwise>
</xsl:choose>
</LineChangeDeliveryDate>
<LineChangeQty>
<xsl:choose>
<xsl:when test="QtyOrdered = Quantity">no</xsl:when>
<xsl:otherwise>yes</xsl:otherwise>
</xsl:choose>
</LineChangeQty>
<LineChangeArticle>
<xsl:choose>
<xsl:when test="OrigSupplierArticleNumber = SupplierArticleNumber">no</xsl:when>
<xsl:otherwise>yes</xsl:otherwise>
</xsl:choose>
</LineChangeArticle>
<!--copy all other nodes-->
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<!-- Identity-Template für die nicht explizit benannten Elemente -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<!-- delete empty nodes -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>
</xsl:stylesheet>
vielen vielen dank