6

.一部のノードの名前に が含まれる XML ドキュメントがあります。

<com.site.blah>
   <id>asdkjasd</id>
   <com.site.testing>
       <name>test</name>
    </com.site.testing>
</com.site.blah>

を試す@doc.search("/*/id").first.xpathと が返されます/com.site.blah/idが、実行@doc.search("/com.site.blah/id").first.inspectすると が返されますnil

の下の名前を選択する XPath クエリを作成できるようにしたいのですがcom.site.testing、クエリが拒否され続けます。

何か案は?

(違いがある場合はhpricotを使用しています)

4

1 に答える 1

4

XPath ライブラリが壊れています。XPath 名テストは QName ( http://www.w3.org/TR/xpath/#NT-NameTest ) であり、EBNF のうさぎの穴をたどると、ピリオドが含まれます ( http://www.w3.org /TR/REC-xml/#NT-NameChar )。エラーを開発者に報告してください。

回避策として、コメントに記載されているエスケープ メカニズムはいずれも XPath の一部ではありませんが、次のように述語を使用して要素名を確認できます。

/*[name(.) = 'com.site.blah']/id
于 2013-07-04T14:11:59.813 に答える