2011-10-31 88 views
1

如果XML是由定义的以下:XPath和操作者的文本()序列

<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 Whatever元素Tag元素的并集comp将text()AND运算符结合起来?

书写/ns:Whatever[ns:Tag/text() = ('hello','Peter','how are you')]匹配上述两个文档。我只想匹配Tag的文本等于'hello' AND 'Peter' AND 'how are you'

+0

我不知道这是什么,但它绝对不是一个有效的.xml文件。如果你修复它,那么我们可以回答你的问题。无论有没有名称空间的标签都必须使用完全相同的标签关闭。 – FailedDev

+0

假设你指的是拼写错误的“ns:Watever”,它应该有“ns:无论”。 –

+0

我编辑了你的文章,因为它是完全错误的。 – FailedDev

回答

0

希望你的.xml包含错别字。

您需要或操作不和:

<xsl:value-of select="/ns:Whatever/ns:Tag[ . = 'hello' or . = 'Peter' or . = 'how are you']"/> 
+0

不起作用。或者作为操作员甚至可以将单个条目的标签元素匹配。 –

+0

@MatthewYoung你想匹配什么?我对你的描述感到困惑。 – FailedDev

+0

将上面的XML文档片段与3个Tag元素一起使用。只有一个Tag的片段有一个常见的Tag'hello'。使用“或”运算符就可以做到这一点,它会返回两个片段,因为每个片段都有一个带有“hello”的标签作为文本值。如果Tag元素的值等于几个值,我想要一个“和”样式操作来匹配一个片段。 –