首页 > 解决方案 > 从一个 XSLT 输出两个不同的 XML 根元素/结构

问题描述

我正在研究使用单个 XSLT 根据条件转换为不同 XML 根元素的方法,例如

<A>                      if A/a = true, then output ---->  <B><b>something</b></B>
<a>true</a>     --XSLT-->            
</A>                     otherwise output           ---->  <C><c>something</c></C>

不知道如何去做,如果它能够做到。快速搜索但没有找到任何相关资源。

我可以在 Java/xslt 中实现相同的逻辑,比如有两个单独的 xslt,并让一个 java 程序检查输入 xml,并根据输入值,使用一个或另一个 xslt 进行转换。如果可能的话,我正在尝试在 xslt 中做同样的事情。

非常感谢任何帮助!

提前致谢!

标签: xmlxslt

解决方案


似乎您只是想编写不同的模板来表达您拥有的标准(我已经为a元素制作了示例值):

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

  <xsl:output indent="yes"/>

  <xsl:template match="A[a = 'foo']">
      <B>
          <b>
              <xsl:value-of select="a"/>
          </b>
      </B>
  </xsl:template>

  <xsl:template match="A[a = 'bar']">
      <C>
          <c>
              <xsl:value-of select="a"/>
          </c>
      </C>
  </xsl:template>

</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/3NzcBt8/https://xsltfiddle.liberty-development.net/3NzcBt8/1有例子。


推荐阅读