xslt 3.0条件动态元素创建

时间:2018-04-04 12:32:14

标签: dynamic element xslt-3.0

我有一个变量:

<xsl:variable name="courseType" select="Record[1]/course-type"/>  

并基于我想要创建动态元素的值:

<xsl:if test="$courseType ='B'">
    <xsl:element name="newElement">
</xsl:if>
...
other nodes
...
<xsl:if test="$courseType ='B'">
    </xsl:element>
</xsl:if>

问题在于:

元素类型“xsl:element”必须由匹配的结束标记“”终止。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

您还没有提供太多内容,但您当然可以使用例如。

<xsl:variable name="other-nodes">
  ...
</xsl:variable>

<xsl:choose>
  <xsl:when test="$course-type = 'B'">
    <newElement>
      <xsl:sequence select="$other-nodes"/>
    </newElement>
  </xsl:when>
  <xsl:otherwise>
    <xsl:sequence select="$other-nodes"/>
  </xsl:otherwise>
</xsl:choose>

请注意,我使用newElement的文字结果元素而不是xsl:element,因为如果您想在运行时计算元素名称,我只考虑使用xsl:element时间,但是对于原始问题的解决方案,无论使用文字结果元素还是xsl:element,都无关紧要。