是否可以从XSLT中调用另一个xslt转换?

时间:2014-09-18 09:11:05

标签: xml xslt reverse

我问了一个问题XSLT: how to reverse the tree?并得到了解答。

现在我有transform1.xsl生成一些XML输出。我想颠倒transform1.xslreverse.xsl的输出。我不想更改transform1.xsl的功能,因为它在别处使用。

是否可以从transform1.xsl内拨打reverse.xsl,然后撤消其输出?

我尝试了以下reverse.xsl的代码,但它只反转了未触及的节点:

  <xsl:include href="transform1.xsl" />

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*" />
      <xsl:apply-templates select="node()">
        <xsl:sort select="position()" data-type="number" order="descending" />
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>

我准备了一个简化的例子。 输入XML文件:

<root>
   <child1/>
   <child2/>
</root>

`transform1.xsl&#39;,我不想改变:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
  </xsl:template>

 <xsl:template match="child2" >
    <xsl:copy-of select="." />
        <child3>
          <grandchild1 />
          <grandchild2 />
        </child3>
  </xsl:template>

</xsl:stylesheet>

reverse.xml的预期输出:

<root>
   <child3>
      <grandchild2 />
      <grandchild1 />
   </child3>
   <child2 />
   <child1 />
</root>

0 个答案:

没有答案