带text()序列的XPath和运算符

带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

如果XML由以下内容定义:

<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”样式的操作来匹配片段。