我不明白如何找到搜索“多值”属性的属性。
我会写一个W3school的例子
[链接:https://www.w3schools.com/xml/xpath_examples.asp]
<bookstore>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
</bookstore>
例如,如何使用字符串<xsl:value-of "/bookstore/book[author = James McGovern]/title"/>
搜索标题。
有人可以帮助我吗?我是刚开始使用XML和XSL。
谢谢。
答案 0 :(得分:0)
首先,请谨慎使用术语。在您的XML中,只有category
和lang
是属性。另一方面,author
是一个元素。因此,您真正要问的是当多个子元素具有相同名称时如何匹配。
答案是完全按照您想做的去做,希望您只需要将作者姓名放在撇号中即可表明它是字符串文字
<xsl:value-of select="/bookstore/book[author = 'James McGovern']/title"/>
当您使用类似author = 'James McGovern'
的表达式时,它将实际上检查所有author
元素,如果至少有一个匹配项,则返回true。因此,即使“ James McGovern”是列出的最后一位作者,它仍将返回true。
((如果您想了解更多信息,可以在https://www.w3.org/TR/xpath-10/#booleans的W3C官方规范中阅读布尔表达式。特别地,这种情况由“ 如果要比较的对象是一个节点集,另一个是字符串,则当且仅当该节点集中存在一个节点,从而对节点和另一个节点的字符串值执行比较的结果时,比较才为真字符串为真“)