4

w3cschool で xpath を学び始めました。ゲーム内のプレイヤー数を評価しようとしています。(スクリーンネームと text() 要素/属性を数えます)

これが私のxmlの例です:

<game>
    <info>
        <name>My Game</name>
        <description>A <i>very</i> interesting game.</description>
        <started>2012-03-01T18:00:00Z</started>
        <players number="2">
            <screenname player="1">Alice</screenname>
            <screenname player="2">Bob</screenname>
        </players>
        <rounds>2</rounds>
        <winner player="2"/>
    </info>
</game>

私が使用するxpathクエリは次のとおりです。

//game/info/players[count(.//screenname/text())]

しかし、私は得るだけです:

"Result is a NodeSet containing 1 element" 

(ツール: http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm )

このエラーの原因は何ですか?

4

1 に答える 1

11

XPath クエリはおそらく次のようになります。

count(/game/info/players/screenname)

game/info/players現在使用している XPathは、ゼロ以外の数のscreenname/text()子孫ノードを持つすべてのノードを要求しています。要素が 1 つしかないためplayers、結果のノードセットには要素が 1 つだけ含まれます。

axis::nodetest[predicate]XPath は、ステップ ( ) で区切られた一連の axis-nodetest-predicate 式 ( ) であることを思い出してください/。次のステップに送られる結果セットには、axis-nodetest のみが含まれます。述語は、フィルタリングにのみ使用されるため、結果セットには表示されません。

于 2012-05-19T15:19:58.237 に答える