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:sort />XSL 変換で並べ替えを行う必要があると仮定すると、次のように使用できます。

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

<xsl:sort />ここに文書化されたいくつかの属性があります: http://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 に答える