首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板匹配问题

模板匹配问题
EN

Stack Overflow用户
提问于 2012-04-26 01:47:11
回答 2查看 65关注 0票数 0

我有一个源码html看起来像:

代码语言:javascript
复制
<p class="heading-8">Emergency Care<span class="char-style-override-68">, if not already done:</span></p>
<p class="List-Bullet-CHAM1-CHAM-1-List-Bullet-1 para-style-override-3"><span>  </span><span class="char-style-override-25">1.</span><span> Do Initial Assessment (p. 72).</span></p>

现在我为p创建一个模板匹配:

代码语言:javascript
复制
<xsl:template match="x:p">
<xsl:choose>
 <xsl:when test="contains(@class,'heading-8')">
   <xsl:variable name="current-name" select="generate-id(.)"/>
   <xsl:variable name="noTable" select="count(preceding-sibling::x:table)"/>
   <p>
    <b>
        <xsl:apply-templates/>
    </b>
   </p>
            <xsl:if test="following-sibling::*[1][self::x:p][contains(@class,'List-Bullet-CHAM1-CHAM-1')][generate-id(preceding-sibling::x:p[contains(@class,'heading-8 ')][1]) = $current-name]">
                <ol>
                    <xsl:apply-templates select="following-sibling::x:p[contains(@class,'List-Bullet-CHAM1-CHAM-1')][count(preceding-sibling::x:table)=$noTable][generate-id(preceding-sibling::x:p[contains(@class,'heading-8 ')][1]) = $current-name]" mode="bullet"/>
                </ol>
            </xsl:if>
 </xsl:when>

我现在遇到的问题是,我似乎永远无法进入内部的if分支。但我认为源html与它非常匹配,只是不知道我可能错在哪里。

PS,我使用generate-id()函数来确定前面同级节点的身份。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-26 04:22:44

据我所知,xsl:if语句的测试条件看起来很好,除了contains(@class,'heading-8 ')中的尾随空格。没有包含字符串"heading-8“的class属性。删除xsl:if和xsl:apply-template元素中的空格应该可以解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2012-04-26 04:21:07

我认为您可能将if条件过于复杂化了。看起来您正在检查下面的兄弟是否是一个p标记,并且它有一个特定的属性。因为您已经定位到一个标题为“-8”的p元素,所以您可能不需要担心generate-id(),只需将其简化为以下内容:

代码语言:javascript
复制
<xsl:if 
   test="following-sibling::*[1][self::x:p][contains(@class,'List-Bullet-CHAM1-CHAM-1')]"> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10320978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档