0
我們有小數據遷移作業。在那裏,我們輸出到XML,然後使用XSLT2.0應用轉換。XSLT Transformer ThrowsException:無法將多個結果文檔寫入同一個URI
方案
但是,當我們增加一個子元素到XML的OrderHeader。 即OrderLineID。然後,它不會寫入預期訂單的多個文件。
例如: 它應該在XSLT之後寫入多個文件。
SORTOIDOC_ORD-411323
SORTOIDOC_ORD-411324
SORTOIDOC_ORD-411325
它投擲以下錯誤:
Error at xsl:result-document on line 15 of so4.xsl:
XTDE1490: Cannot write more than one result document to the same URI:
file:/C:/Data/dir/SORTOIDOC_ORD-411324.xml
Exception in component tXSLT_1
SystemID: file:/C:/Software/TOS_BD-20150908_1633-V6.0.1/workspace/xmlout/so4.xsl; Line#: 15; Column#: -1
net.sf.saxon.trans.XPathException: Cannot write more than one result document to the same URI: file:/C:/Data/dir/SORTOIDOC_ORD-411324.xml
輸出XML是:
<?xml version="1.0" encoding="Windows-1252"?>
<SalesOrders xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
xsd:noNamespaceSchemaLocation="SORTOIDOC.XSD">
<Orders>
<OrderHeader>
<CustomerPoNumber>Manual Order 3</CustomerPoNumber>
<SalesForceOrderNumber>ORD-411325</SalesForceOrderNumber>
<OrderLineID>OR-1561180</OrderLineID>
</OrderHeader>
<OrderDetails>
<StockLine>
<CustomerPoLine>9999</CustomerPoLine>
<LineCancelCode/>
<StockCode>ACSH-NHH-12OZ-12</StockCode>
<StockDescription>NHH ABYSS CHIA SHAMPOO 12OZ CS</StockDescription>
<Warehouse/>
<CustomersPartNumber/>
</StockLine>
</OrderDetails>
</Orders>
</SalesOrders>
XSLT 2。 O IS看起來像:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="Windows-1252" indent="yes"/>
<xsl:template match="@xsi:nil[.='true']" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<xsl:template match="@*|node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:for-each-group select="SalesOrders/Orders" group-by="OrderHeader">
<xsl:result-document href="SORTOIDOC_{OrderHeader/SalesForceOrderNumber}.xml">
<SalesOrders xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORTOIDOC.XSD">
<xsl:apply-templates select="current-group()"/>
</SalesOrders>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
爲什麼:
只是添加元素插入XML輸出模式導致編寫XML及其行項目的多個文件的問題。在添加此(OrderLineID)之前,整體方案按預期工作。
對此的任何幫助將是非常讚賞?
在此先感謝!
所以要組嗎? '將對具有各種子元素的OrderHeader元素的字符串值進行分組,該元素至少聽起來奇怪或可能根據需要產生更多的組。 –
我想要導致更多的羣組。 – NEO
請考慮發佈一個小而完整的輸入XML,以便獲得您顯示的錯誤。如果你想讓結果文檔在每個文件名中都有'OrderHeader/SalesForceOrderNumber',你確定你不想在這個值上分組嗎? ''? –