XSLT: не содержит проверку
Мне нужно создать XSL, который проверяет условие "не содержит". Например, мой XML выглядит следующим образом:
<Categories>
<category>
<blog>ABC</blog>
<link>http://www.msdn.com</link>
</category>
</Categories>
Я хочу показать каждый <blog>
, где <link>
не содержит "msdn"
. Я не хочу использовать equals, потому что просто хочу проверить часть ссылки.
Ответы
Ответ 1
Я не уверен, какой именно вывод 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>
Вы также можете включить тест в соответствие шаблону (или выбрать шаблон шаблона) следующим образом:
<xsl:template match="category[not(contains(link, 'msdn'))]">
Ответ 2
Используйте функцию not с функцией contains.
Пример: нет (содержит ( "XML", "XM" ))
Результат: false
http://www.w3schools.com/Xpath/xpath_functions.asp
Ответ 3
Xpath для xsl: apply-templates или xsl: значение-должно содержать следующие
/Categories/category/blog[not( contains(following-sibling::link/text(), 'msdn'))]