带text()序列的XPath和运算符
如果XML由以下内容定义:带text()序列的XPath和运算符,xpath,Xpath,如果XML由以下内容定义: <xs:complexType name="Whatever" ....> <xs:sequence> <xs:element name="Tag" type="xs:string" minOccurs="0" maxOccurs="unbounded"> </xs:sequence> </xs:complextType> 文档可以包含: <ns:Whatever> &l
<xs:complexType name="Whatever" ....>
<xs:sequence>
<xs:element name="Tag" type="xs:string" minOccurs="0" maxOccurs="unbounded">
</xs:sequence>
</xs:complextType>
文档可以包含:
<ns:Whatever>
<ns:Tag>hello</ns:Tag>
<ns:Tag>Peter</ns:Tag>
<ns:Tag>how are you</ns:Tag>
</ns:Watever>
你好
彼得
你好吗
或者它可以包含:
<ns:Whatever>
<ns:Tag>hello</ns:Tag>
</ns:Watever>
你好
如何编写XPath表达式来查找XML任何元素标记元素的联合,并将text()
与和运算符进行比较
书写/ns:Whatever[ns:Tag/text()=('hello'、'Peter'、'how are')]
匹配上述两个文档。我只想在标记
的文本等于'hello'
和'Peter'
和'howe'you'
时进行匹配,希望您的.xml包含打字错误
您需要的是or运算符,而不是and:
<xsl:value-of select="/ns:Whatever/ns:Tag[ . = 'hello' or . = 'Peter' or . = 'how are you']"/>
我不知道这是什么,但它肯定不是有效的.xml文件。如果你修好了,我们就可以回答你的问题。带或不带命名空间的标记必须以完全相同的标记结尾。假设您引用的是拼写错误的“ns:Watever”,其中应包含ben“ns:Whather”。我编辑了您的文章,因为它完全错误。不起作用。或者作为一个运算符,用单个条目匹配偶数标记元素。@MatthewYoung您想匹配什么?我被你的描述搞糊涂了。以上面的XML文档片段和3个标记元素为例。有一个公共标记“hello”,其中片段只有一个标记。使用“or”操作符就可以返回这两个片段,因为每个片段都有一个以“hello”作为文本值的标记。当存在等于多个值的标记元素时,我希望使用“and”样式的操作来匹配片段。