2016-05-10 6 views
1

Da ich nur ein Anfänger bei der XML-Programmierung bin, bin ich auf ein kleines Problem gestoßen, als ich versucht habe, das for-each zum Laufen zu bringen. Ich habe anderen Code, der ähnlich ist, der richtig funktioniert, also etwas Code von dort ausgeliehen und ein paar Zeilen geändert hat (klingt einfach) - allerdings, wenn ich den Code ausprobiere und ausführe, bekomme ich nur den ersten Kind-Knoten angezeigt, den For- Jeder scheint nicht auf das zweite Kind überzugehen.XML for-each funktioniert nicht richtig

Dank

XML-Input-:

<?xml version="1.0" encoding="Windows-1252"?> 
<SalesOrders> 
    <Order> 
    <OrderHeader> 
     <Customer>000008</Customer> 
     <SalesOrder>000809</SalesOrder> 
    </OrderHeader> 
    <OrderDetails> 
     <StockLine> 
     <SalesOrderLine>0001</SalesOrderLine> 
     <StockCode>LOT100</StockCode> 
     <Warehouse>FG</Warehouse> 
     <Quantity>3.000</Quantity> 
     <Lot>500</Lot> 
     </StockLine> 
     <Stockline> 
     <SalesOrderLine>0002</SalesOrderLine> 
     <StockCode>LOT101</StockCode> 
     <Warehouse>FG</Warehouse> 
     <Quantity>4.000</Quantity> 
     <Lot>501</Lot> 
     </Stockline> 
    </OrderDetails> 
    </Order> 
</SalesOrders> 

XSL Übersetzung;

<?xml version="1.0" encoding="windows-1252"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" omit-xml-declaration="yes" /> 
    <xsl:template match="/"> 
    <PostSorBackOrderRelease> 
     <xsl:for-each select="//OrderDetails/StockLine"> 
     <Item> 
      <Customer> 
      <xsl:value-of select="../../OrderHeader/Customer" /> 
      </Customer> 
      <SalesOrder> 
      <xsl:value-of select="../../OrderHeader/SalesOrder" /> 
      </SalesOrder> 
      <StockCode> 
      <xsl:value-of select="StockCode" /> 
      </StockCode> 
      <Warehouse> 
      <xsl:value-of select="Warehouse" /> 
      </Warehouse> 
      <Quantity> 
      <xsl:value-of select="Quantity" /> 
      </Quantity> 
      <ActualShipQty> 
      </ActualShipQty> 
      <UnitOfMeasure /> 
      <Units /> 
      <Pieces /> 
      <ReleaseFromMultipleLines>N</ReleaseFromMultipleLines> 
      <SalesOrderLine> 
      <xsl:value-of select="SalesOrderLine" /> 
      </SalesOrderLine> 
      <CompleteLine>N</CompleteLine> 
      <AdjustOrderQuantity>N</AdjustOrderQuantity> 
      <OrderStatus>3</OrderStatus> 
      <ReleaseFromShip>N</ReleaseFromShip> 
      <ZeroShipQuantity>N</ZeroShipQuantity> 
      <AllocateSerialNumbers>N</AllocateSerialNumbers> 
      <eSignature> 
      </eSignature> 
     </Item> 
     </xsl:for-each> 
    </PostSorBackOrderRelease> 
    </xsl:template> 
</xsl:stylesheet> 

erhält nur die erste Zeile Knoten von;

<PostSorBackOrderRelease> 
    <Item> 
    <Customer>000008</Customer> 
    <SalesOrder>000809</SalesOrder> 
    <StockCode>LOT100</StockCode> 
    <Warehouse>FG</Warehouse> 
    <Quantity>3.000</Quantity> 
    <ActualShipQty /> 
    <UnitOfMeasure /> 
    <Units /> 
    <Pieces /> 
    <ReleaseFromMultipleLines>N</ReleaseFromMultipleLines> 
    <SalesOrderLine>0001</SalesOrderLine> 
    <CompleteLine>N</CompleteLine> 
    <AdjustOrderQuantity>N</AdjustOrderQuantity> 
    <OrderStatus>3</OrderStatus> 
    <ReleaseFromShip>N</ReleaseFromShip> 
    <ZeroShipQuantity>N</ZeroShipQuantity> 
    <AllocateSerialNumbers>N</AllocateSerialNumbers> 
    <eSignature /> 
    </Item> 
</PostSorBackOrderRelease> 
+0

und OldProgrammer

+0

@SteveEClarke http://stackoverflow.com/help/someone-answers –

Antwort

1

XML ist case-sensitive:

<xsl:for-each select="//OrderDetails/StockLine"> 

tut nicht Stockline mit Klein l zu wählen.