2012-07-09 27 views
8

私は.net 2.0に基づいてasp.netアプリケーションを作成しています。xpathで属性を一致させるためにワイルドカードを使用する

そして、私はXMLを処理するときにいくつかの問題を抱えています。

は、私はこのようなXMLがあるとします。

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

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

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

を今、私は、その名前を、私はそれを実装するためのXPathを使用するにはどうすればよいyx

が含まれている人物を選択したいですか?

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

がどのようにあいまい検索をする:私は、この式は、名前が正確に「YX」である人物と一致することがわかっている

ところで、 "名前"のような指定された属性で一致する人物をソートする方法はありますか?

+0

方法は、ないソートは、あなたがこのような<xsl:sort />を使用することができXSL変換で行うべきであると仮定すると、

これはXSL変換を指しますか? – hielsnoppe

+0

私はxslを使ったことがありません。 – hguser

+0

これは役立つはずです:http://stackoverflow.com/questions/5607592/xpath-and-wildcards/5607636#5607636 –

答えて

9

@Utkanosのように、//person[contains(@name, 'yx')]は必要なノードと一致する必要があります。

XPath自体は、少なくとも私の知るところでは、ノードに命令を出すことはできず、代わりに「重複のないノードの順序付けられていない集合」(1とコメントを参照)であるノード集合を返します。しかし、バージョン2.0では、私には馴染みがない2の変更があるかもしれません。

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

ここに文書<xsl:sort />上のいくつかのより多くの属性があります:ソートが行われるべきであるhttp://www.w3.org/TR/xslt#sorting

+2

スタンドアロンのXPathにはソート機能がないということは、XPath 2.0(そして確かに3.0)にも当てはまります。 XSLTまたはXQueryに変換します。 –

8

機能を使用してください。また

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

は、それが属性なので、あなたがnameの前で@が必要に注意してください。

Demo

関連する問題