使用通配符匹配xpath中的属性

hgu*_*ser 8 asp.net xpath

我正在开发基于.net 2.0的asp.net应用程序.

我处理XML时遇到了一些问题.

假设我有这样的XML:

<person name="xxxyx" age="32" />

<person name="zzz" age="32" />

<person name="yyyxx" age="32" />
Run Code Online (Sandbox Code Playgroud)

现在我想选择名字中包含的人 yx

我如何使用xpath来实现它?

我只知道这个表达式会匹配名字正好是"yx"的人:

"//person[name='yx'"]"
Run Code Online (Sandbox Code Playgroud)

如何进行模糊搜索?

顺便说一下,有没有想过按照"名字"这样的指定属性对匹配的人进行排序?

hie*_*ppe 9

像@Utkanos建议//person[contains(@name, 'yx')]应匹配您想要的节点.

至少据我所知,XPath本身并不具备能力,也不打算在节点上提供顺序,而是返回节点集,这些节点集是"无重复节点的无序集合"(参见1和注释).但是在2.0版本中,可能会对此更改2,我不熟悉.

假设排序应该在XSL转换中完成,你可以<xsl:sort />像这样使用:

<xsl:apply-templates select="//person[contains(@name, 'yx')]">
    <xsl:sort select="@name" />
</xsl:apply-templates>
Run Code Online (Sandbox Code Playgroud)

这里记录了一些更多的属性<xsl:sort />:http://www.w3.org/TR/xslt#sorting

  • 在XPath 2.0(实际上是3.0)中,独立的XPath没有排序功能 - 你需要转到XSLT或XQuery. (2认同)

Utk*_*nos 8

使用该contains()功能.

//person[contains(@name, 'yx')]
Run Code Online (Sandbox Code Playgroud)

此外,请注意您需要@在前面,name因为它是一个属性.

演示.