有没有办法在XSLT中将标记作为可选标记?

时间:2016-03-16 04:31:55

标签: xml xslt xsd

<xsl:attribute name="ACTIVATE_FIRST_MODEL_VIEW">
    <xsl:choose>
        <xsl:when test="ACTIVATE_FIRST_MODEL_VIEW='X'">true</xsl:when>
        <xsl:when test="ACTIVATE_FIRST_MODEL_VIEW=''">false</xsl:when>
    </xsl:choose>
</xsl:attribute>

<xsl:attribute name="VARIANT" use-attribute-sets="OPTIONAL">
    <xsl:value-of select="VARIANT"/>
</xsl:attribute>

这里我希望带有属性名称=“VARIANT”的标签是可选的。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

如果,则表示仅将其复制到输出(如果存在),请勿使用xsl:attribute>

<xsl:apply-templates select="@VARIANT"/>

否则,你不清楚你在问什么,特别是“带有属性名称=”VARIANT“的标签是没有意义的。

答案 1 :(得分:0)

一种可能性是在<xsl:if>中创建属性,如下所示:

<xsl:if test="VARIANT != ''">
  <xsl:attribute name="VARIANT" use-attribute-sets="OPTIONAL">
    <xsl:value-of select="VARIANT"/>
  </xsl:attribute>
</xsl:if>

如果该属性不为空,则仅创建该属性。

答案 2 :(得分:0)

如果您的要求是在输出中创建属性VARIANT,当且仅当输入中存在属性VARIANT时,只需使用

<xsl:copy-of select="@VARIANT"/>

顺便说一下,我不知道你认为&#34;标签&#34;是的,但你错误地使用了这个词,这是让你的帖子混乱的一个原因。让你感到困惑的另一件事是,你没有告诉我们你的输入是什么样的,或者你想要输出的样子。