可能很明顯,我對XML和XSLT的瞭解相當有限。請有人幫助我提供一個翻譯文件,該文件將允許下面XML中的每個ItemNumber/Sales Order傳遞,以便爲每個項目生成第二個XML。換句話說,我需要生成多個輸出xml(每個銷售訂單一個)。目前,我只在最初的xml上獲得最後一個訂單項/銷售訂單的一個輸出xml。爲每個xml行循環翻譯文件
這裏是我需要翻譯的XML:
<?xml version="1.0" encoding="Windows-1252"?>
<postsalesorderssct Language='05' Language2='EN' CssStyle='' DecFormat='1' DateFormat='01' Role='01' Version='6.1.009' OperatorPrimaryRole=' '>
<Item>
<Key>
<SalesOrder>197588</SalesOrder>
<SourceWarehouse>A3</SourceWarehouse>
<TargetWarehouse>PV</TargetWarehouse>
<CustomerPoNumber/>
</Key>
<ItemNumber>000001</ItemNumber>
</Item>
<Item>
<Key>
<SalesOrder>197589</SalesOrder>
<SourceWarehouse>A3</SourceWarehouse>
<TargetWarehouse>HI</TargetWarehouse>
<CustomerPoNumber/>
</Key>
<ItemNumber>000002</ItemNumber>
</Item>
<Item>
<Key>
<SalesOrder>197590</SalesOrder>
<SourceWarehouse>A3</SourceWarehouse>
<TargetWarehouse>WS</TargetWarehouse>
<CustomerPoNumber/>
</Key>
<ItemNumber>000003</ItemNumber>
</Item>
<Item>
<Key>
<SalesOrder>197591</SalesOrder>
<SourceWarehouse>A4</SourceWarehouse>
<TargetWarehouse>HI</TargetWarehouse>
<CustomerPoNumber/>
</Key>
<ItemNumber>000004</ItemNumber>
</Item>
<Item>
<Key>
<SalesOrder>197592</SalesOrder>
<SourceWarehouse>A4</SourceWarehouse>
<TargetWarehouse>PV</TargetWarehouse>
<CustomerPoNumber/>
</Key>
<ItemNumber>000005</ItemNumber>
</Item>
<Item>
<Key>
<SalesOrder>197593</SalesOrder>
<SourceWarehouse>A4</SourceWarehouse>
<TargetWarehouse>WS</TargetWarehouse>
<CustomerPoNumber/>
</Key>
<ItemNumber>000006</ItemNumber>
</Item>
<StatusOfItems>
<ItemsProcessed>000006</ItemsProcessed>
<ItemsInvalid>000000</ItemsInvalid>
</StatusOfItems>
</postsalesorderssct>
這是我目前使用的翻譯文件:
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="Windows-1252" omit-xml-declaration="yes" />
<xsl:template match="/">
<Query>
<Key>
<xsl:for-each select = "postsalesorderssct/Item/Key">
<SalesOrder><xsl:value-of select="SalesOrder"/></SalesOrder>
</xsl:for-each>
</Key>
</Query>
</xsl:template>
</xsl:stylesheet>
下面是每個上的ItemNumbers所需的輸出最初的XML。換句話說,我需要爲每個銷售訂單編號生成這些中的一個:
<Query xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORQRY.XSD">
<Key>
<SalesOrder>197588</SalesOrder>
<Invoice/>
</Key>
<Option>
<IncludeStockedLines>Y</IncludeStockedLines>
<IncludeNonStockedLines>Y</IncludeNonStockedLines>
<IncludeFreightLines>Y</IncludeFreightLines>
<IncludeMiscLines>Y</IncludeMiscLines>
<IncludeCommentLines>Y</IncludeCommentLines>
<IncludeCompletedLines>Y</IncludeCompletedLines>
<IncludeSerials>N</IncludeSerials>
<IncludeLots>Y</IncludeLots>
<IncludeBins>Y</IncludeBins>
<IncludeAttachedItems>N</IncludeAttachedItems>
<IncludeCustomForms>Y</IncludeCustomForms>
<IncludeDetailLineCustomForms>Y</IncludeDetailLineCustomForms>
<XslStylesheet/>
</Option>
</Query>
感謝您的期望。
您的XSLT與您的輸入XML不匹配。例如,在您的XSLT中,您使用'postsororderstatus/Item/Order',但在輸入XML中,根是'',因此在那裏沒有匹配。你也循環遍歷每個'',但是這個元素也不在你的輸入XML中。當我看到所需的輸出時,這也不符合。所以你想要什麼?或者請糾正你的問題! –
2013-02-21 09:34:20
您正在使用哪個版本的XSLT?在XSLT 1.0中,現在有一種方法可以在不使用擴展元素的情況下執行此操作(如果您有權訪問exslt,則可以使用)。在XSLT 2.0中,您可以使用生成多個輸出文件。 –
2013-02-21 10:17:05
我的歉意標記我打開了多個文件並複製了錯誤的文件。我會相應地調整問題。 – 2013-02-21 14:55:11