8

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

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

假设我有这样的 XML:

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

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

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

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

如何使用 xpath 来实现它?

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

"//person[name='yx'"]"

如何进行模糊搜索?

顺便说一句,任何想法通过指定属性(如“名称”)对匹配的人进行排序?

4

2 回答 2

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>

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

于 2012-07-09T11:13:22.187 回答
8

使用该contains()功能。

//person[contains(@name, 'yx')]

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

演示

于 2012-07-09T10:22:40.927 回答