juls_pro_37: XSLT 1.0 Abweichung Prüfung

Beitrag lesen

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