1

输入 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 脚本来实现相同的目标。请帮我。

(注意:给出的输入只是一个示例。子节点可以嵌套到任何深度。)

4

1 回答 1

2

这里有一些提示可以为您指明正确的方向:

  • 了解<xsl:template><xsl:apply-templates>说明;他们将成为解决这个问题的支柱。
  • 还要了解 `concat()' 函数。这将有助于您更改命名方案。
  • 熟悉 XPath 轴(特别是parent::*ancestor::*和相对 XPath,如../../../.

此外,请看一下这个问题(以及后续答案) - 它在您的场景中可能也很有用:将连续的后代节点合并为一个

听起来您明天的截止日期很艰难,但展望未来,我建议您花时间阅读有关 XSLT/XPath 的优秀材料。你可以在这里找到几个:https ://stackoverflow.com/questions/339930/any-good-xslt-tutorial-book-blog-site-online/341589#341589

于 2013-05-30T16:30:51.647 回答