XSLT:不包含检查

时间:2010-02-03 16:15:38

标签: xslt

我需要创建一个检查“不包含”条件的XSL。例如,我的XML是这样的:

<Categories>
  <category>
    <blog>ABC</blog>
    <link>http://www.msdn.com</link>
  </category>
</Categories>

我想展示<blog> <link>不包含"msdn"的每个{{1}}。我不想使用equals,因为我只想查看部分链接。

3 个答案:

答案 0 :(得分:35)

我不确定你想要什么样的HTML输出,但希望这可以让你开始。

<xsl:template match="category">
    <xsl:if test="not(contains(link, 'msdn'))">
        <a href="{link}">
            <xsl:value-of select="blog" />
        </a>
    </xsl:if>
</xsl:template>

您还可以在模板匹配(或apply-templates select)谓词中包含测试,如下所示:

<xsl:template match="category[not(contains(link, 'msdn'))]">

答案 1 :(得分:1)

将not函数与contains函数一起使用。

示例:not(contains('XML','XM'))

结果:false

  

http://www.w3schools.com/Xpath/xpath_functions.asp

答案 2 :(得分:0)

xsl:apply-templates或xsl:value-of的Xpath应包含以下内容

/Categories/category/blog[not( contains(following-sibling::link/text(), 'msdn'))]