我得到一个需要转换成另一种标准类型的 XML 文件。XSLT2 触手可及,但我无法控制任一文件的格式。第一个有两个序列,它们使用一个数值来匹配它们。第一个序列可能有 0..n 的第二个。
一个例子是:
输入:
<foo>
<structure name="items">
<item>
<itemCode>1</itemCode>
<itemValue>1111</itemValue>
</item>
<item>
<itemCode>2</itemCode>
<itemValue>2222</itemValue>
</item>
</structure>
<structure name="subItems">
<subItem>
<itemCode>1</itemCode>
<subValue>12</subValue>
<subType>MISC</subType>
</subItem>
<subItem>
<itemCode>1</itemCode>
<subValue>15</subValue>
<subType>MISC2</subType>
</subItem>
<subItem>
<itemCode>2</itemCode>
<subValue>40</subValue>
<subType>MISC</subType>
</subItem>
</structure>
</foo>
我想要的输出是
<bar>
<items>
<item>
<code>1</code>
<value>1111</value>
<subItems>
<subItem>
<subValue>12</subValue>
<subType>MISC</subType>
</subItem>
<subItem>
<subValue>15</subValue>
<subType>MISC2</subType>
</subItem>
</subItems>
</item>
<item>
<code>2</code>
<value>2222</value>
<subItems>
<subItem>
<subValue>40</subValue>
<subType>MISC</subType>
</subItem>
</subItems>
</item>
</items>
</bar>
我没有成功将 item.itemCode 映射到 subItem.itemCode 只是因为 XSLT 处理器似乎在看到下一个序列之前退出了第一个序列。我无法知道我将在任一序列中获得多少,所以我无法制作静态地图。
有任何想法吗?
提前致谢