1

私はこの.xmlファイルを持っています

<root xmlns:h="http://www.w3.org/TR/html4/"
      xmlns:f="http://www.w3.org/TR/html4/">

<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

 <f:table>
  <f:tr>
    <f:td>Red</f:td>
    <f:td>Yellow</f:td>
  </f:tr>
</f:table>

</root>

指定した名前空間を持つ要素のみを取得するにはどうすればよいですか? たとえば、「h」名前空間の要素のみを取得したいとします。どうすれば入手できますか?exist-db では、「namespace::」軸が機能しなくなりました

4

2 に答える 2

0

コメントでは、からの戻り値を解析するソリューションを示しますname()

//*[substring-before(name(), ":")='h']

プレフィックスにマップされている名前空間内のすべての要素を取得するはるかに簡単な方法があります。h

//h:*

注: これを最初にテストしたとき、ドキュメント内のすべての要素を取得していました。これは、両方のプレフィックスが同じ名前空間にマップされているためです。

xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3.org/TR/html4/"

これも修正する必要があります。

于 2014-01-17T19:20:36.177 に答える
0

述語で in-scope-prefixes()関数を使用してみてください。

//*[in-scope-prefixes(.)='h']

于 2013-11-09T16:42:34.587 に答える