xslt 3.0 条件动态元素创建

xslt 3.0 conditional dynamic element creation

我有一个变量:

<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" 必须以匹配的结束标记“”结束。

有什么办法可以实现吗?

您提供的内容不多,但您当然可以使用例如

<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 run-time 但无论是使用字面结果元素还是 xsl:element.

对于原始问题的解决都没有关系