1
我使用XSLT 2.0(Saxon PE 9.5)從輸入創建多個XML文件,使用xsl:result-document
。每個項目可以包含多個項目,並且在一個項目中有typeA和typeB。對於每個我想要生成的類型和XML。 實施例:
input.xml中:
XSLT2從嵌套輸入結構生成多個輸出
<task>
<items>
<item>
<typeA>
<id>A1</id>
...
</typeA>
<typeB>
<id>B</id>
...
</typeB>
</item>
<item>
<typeA>
<id>A2</id>
...
</typeA>
</item>
</items>
</task>
希望的輸出:
out1_typea.xml:
<task>
<items>
<item>
<typeA>
<id>A</id>
...
</typeA>
</item>
</items>
</task>
out1_typeb.xml:
<task>
<items>
<item>
<typeB>
<id>B</id>
...
</typeB>
</item>
</items>
</task>
out2_typea.xml:
<task>
<items>
<item>
<typeA>
<id>A2</id>
...
</typeA>
</item>
</items>
</task>
我開始使用其將基於項目的下列轉換:
<xsl:template match="/task">
<xsl:for-each select="items/item">
<xsl:result-document href="out{position()}.xml">
<task xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<items>
<item>
<xsl:copy-of select="*" />
</item>
</items>
<xsl:copy-of select="../../(* except items)" />
</task>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
但不知道如何進一步分裂的類型。
謝謝各位高手!只是一個小問題:該位置是基於類型元素的位置。而不是生成out1_typeA,out2_typeB,out3_typeA如何根據項目進行定位,即:out1_typeA,out1_typeB,out2_typeA? – Bruckwald
我已經編輯了答案來做到這一點。 –
我知道你的時間不多,但你能否給你的答案添加解釋?否則,如果你願意,我可以自己編輯解釋。 –