【发布时间】:2011-01-13 00:22:26
【问题描述】:
我需要使用 xslt 转换 XML。
逻辑:
如果父节点具有不同的子地址,则拆分父节点,并在序列号后附加父名称。还需要孩子的行号。 这里我们可能有多个父节点,每个父节点可能有更多的子节点。
我尝试了多种方法来实现这一点,但我一直坚持在 foreach 中生成序列号。因此,任何人都可以尝试为此提供解决方案。
源 XML 如下:
<Data>
<Parent>
<Name>P1</Name>
<Child>
<Name>CName1</Name>
<Address>Address1</Address>
</Child>
<Child>
<Name>CName2</Name>
<Address>Address2</Address>
</Child>
<Child>
<Name>CName3</Name>
<Address>Address1</Address>
</Child>
</Parent>
<Parent>
<Name>P2</Name>
<Child>
<Name>CName1</Name>
<Address>Address1</Address>
</Child>
</Parent>
</Data>
目标 XML 应如下所示:
<Data>
<Parent>
<Name>P1_1</Name>
<Address>Address1</Address>
<Child>
<LineNumber>1</LineNumber>
<Name>CName1</Name>
</Child>
<Child>
<LineNumber>2</LineNumber>
<Name>CName3</Name>
</Child>
</Parent>
<Parent>
<Name>P1_2</Name>
<Address>Address2</Address>
<Child>
<LineNumber>1</LineNumber>
<Name>CName2</Name>
</Child>
</Parent>
<Parent>
<Name>P2_1</Name>
<Address>Address1</Address>
<Child>
<LineNumber>1</LineNumber>
<Name>CName1</Name>
</Child>
</Parent>
</Data>
【问题讨论】:
-
请用{}按钮格式化代码
-
对于分组问题,您确实需要告诉我们您是否可以使用 XSLT 2.0,或者您是否坚持使用 XSLT 1.0。使用 2.0 进行分组非常。此外,如果您已经解决了问题的一部分(分组)并且被另一部分(编号)困住了,那么向我们展示您已经走了多远会很有帮助 - 它可能需要一个相当小的调整,或者您的方法可能已经完全被误导了。
标签: xslt