XSL常见问题及解决(二)有关Xpath

http://blog.csdn.net/huwei2003/article/details/48338165

问题描述:当template的match已经写好路径时,其中的select还是要写全部的路径才行,有没有好的解决办法

原因:因为template的调用方式是call-template,当使用call-template时,select中的路径都要从根节点开始选取;但是apply-template可以继承节点层次

xsl代码举例:

其中的arNav模板,for-each语句中的select路径不能够继承match中的路径,match只是匹配元素,但不作为当前节点,所以子元素不可以继续往下继承


<xsl:template name="main-article" match="article/front/article-meta">
    <div class="cMain show clearfloat" id="mainArticle">
        <xsl:call-template name="arNav"/>
        <xsl:call-template name="arText"/>
    </div>
</xsl:template>
<!--1.2.2.1.3.1.1 左侧一级标题导航栏-->
<xsl:template name="arNav" match="article/body/sec">
    <ul id="arNav">
        <xsl:for-each select="article/body/sec">
            <xsl:choose>
                <xsl:when test="./@id='s1'">
                    <li class="navItem nav0 navActive">
                        <a href="#section0">
                            <xsl:value-of select="title"/>
                        </a>
                    </li>
                </xsl:when>
                <xsl:otherwise>
                    <li class="navItem nav0">
                        <a href="#section0">
                            <xsl:value-of select="title"/>
                        </a>
                    </li>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each>
    </ul>
</xsl:template>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值