输入XML:
<tree>
<node name="GrandParent">
<node name="Parent1">
<qualifier>Fat</qualifier>
</node>
<node name="Parent2">
<qualifier>Slim</qualifier>
<node name="Child1">
<qualifier>Tall</qualifier>
</node>
<node name="Child2">
<qualifier>Short</qualifier>
</node>
</node>
</node>
</tree>
必需的输出:
<tree>
<node name="GrandParent-Parent1">
<qualifier>Fat</qualifier>
</node>
<node name="GrandParent-Parent2">
<qualifier>Slim</qualifier>
</node>
<node name="GrandParent-Parent2-Child1">
<qualifier>Tall</qualifier>
</node>
<node name="GrandParent-Parent2-Child2">
<qualifier>Short</qualifier>
</node>
</tree>
我想获得一个优化的XSLT脚本来实现相同的目标。请帮帮我。
(注意:给出的输入只是一个示例。子节点可以嵌套到任何深度。)
答案 0 :(得分:2)
以下是一些指示您正确方向的提示:
<xsl:template>
和<xsl:apply-templates>
说明;他们将成为这个问题解决方案的支柱。parent::*
,ancestor::*
以及../
或../../
等相对XPath。此外,请查看此问题(以及后续答案) - 它在您的方案中也可能有用:Merge successive descendant nodes into one
听起来你明天会有一个艰难的截止日期,但是我会建议花点时间在XSLT / XPath上阅读好材料。你可以在这里找到几个:https://stackoverflow.com/questions/339930/any-good-xslt-tutorial-book-blog-site-online/341589#341589