XSLT常见问题及解决(三)xsl中variable标签在什么情况下使用

问题描述:

xsl中variable标签在什么情况下使用
解决:

当在某一个模板里要使用到 match的当前作用域的根节点之上的节点时,可以在外层定义一个该节点的变量,方便使用

变量名称是‘name’,变量值分两种情况:

1)variable标签中含有select属性,那么其值就是select的值

2)variable标签中不包含select属性,其值是标签之间的内容,下面的两个例子都是这种情况


variable标签经常与$符号配对出现

$是取值符号,用在变量取值(@是取值符号,用在属性(xml中的节点属性)取值)


xsl:

eg1:

<xsl:template name="assign-id">
    <xsl:variable name="id">
        <xsl:apply-templates select="." mode="id"/>
    </xsl:variable>
    <xsl:attribute name="id">
        <xsl:value-of select="$id"/>
    </xsl:attribute>
</xsl:template>
eg2:

可以与choose等标签共同使用,类似于一个有if/else的函数返回一个变量值,

<xsl:template name="named-anchor">
    <!-- generates an HTML named anchor -->
    <xsl:variable name="id">
        <xsl:choose>
            <xsl:when test="@id">
                <!-- if we have an @id, we use it -->
                <xsl:value-of select="@id"/>
            </xsl:when>
            <xsl:when test="not(preceding-sibling::*) and
      (parent::alternatives | parent::name-alternatives |
       parent::citation-alternatives | parent::collab-alternatives |
       parent::aff-alternatives)/@id">
                <!-- if not, and we are first among our siblings inside one of
           several 'alternatives' wrappers, we use its @id if available -->
                <xsl:value-of select="(parent::alternatives | parent::name-alternatives |
        parent::citation-alternatives | parent::collab-alternatives |
        parent::aff-alternatives)/@id"/>
            </xsl:when>
            <xsl:otherwise>
                <!-- otherwise we simply generate an ID -->
                <xsl:value-of select="generate-id(.)"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
    <a id="{$id}">
        <xsl:comment>named anchor</xsl:comment>
    </a>
</xsl:template>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值