【发布时间】:2018-02-06 13:34:09
【问题描述】:
我最近遇到了一个尚未找到好的解决方案的问题。
给定一个具有平面层次结构的 XML 文件,并希望将其转换为定义的层次结构。
<xml_file>
<dd/>
<b/>
<b/>
<dd/>
<b/>
<b/>
<dd/>
<k/>
<b/>
<b/>
<dd/>
<b/>
<b/>
</xml_file>
我想把它变成什么:
<xml_file>
<dd>
<b/>
<b/>
</dd>
<dd>
<b/>
<b/>
</dd>
<dd>
<k>
<b/>
<b/>
</k>
</dd>
<dd>
<b/>
<b/>
</dd>
</xml_file>
使用 xslt 2.0 的最佳方法是什么?
非常感谢您的帮助。
编辑:
对不起。我真的没有很好地解释它..
我给定了一个元素列表,这些元素按列表中的顺序组织。
dd 之后的所有 b's 和 k's 都应该是前面 dd 的子代。 p>
k 之后的所有 b 的 都应该是前面 k 的子级。
【问题讨论】:
-
您的 XML 样本是否真的代表了您的实际 XML?目前,它的格式不正确,因为(除了
xml_file)没有任何标签具有关联的结束标签,这意味着 XSLT 将无法处理它。 -
您需要解释“定义”层次结构的逻辑。
-
感谢您的回复。我更新了我的问题的描述。
-
使用嵌套的
xsl:for-each-group group-starting-with例如<xsl:for-each-group select="*" group-starting-with="dd"><xsl:copy><xsl:for-each-group select="current-group() except ." group-starting-with="k">...
标签: xml xslt xpath transformation flat