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
.
对于原始问题的解决都没有关系
我有一个变量:
<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
.