XPath エレメント名が〜でないものを取得 2008/05/03

XPathを使って、エレメント名が〜でないものを取得します。
どういうことかといいますと、


<root>
<a>a1</a>
<b1>b1</b1>
<b2>b2</b2>
<b3>b3</b3>
</root>

上記のような構造のXML文書があった場合なのですが、aというエレメント名でないエレメントを取得したい場合にどうXPathを書けばいいか、考えて、ある集合から単純にaではないという集合(NodeSet)を求めればいいだろうという、結論に達したのでした。たいしたことではありませんが....

というわけで下記のようなXPathで取得できます。
*[local-name()!='a']


このlocal-name関数は、ノード集合関数であり、なにやらエレメント名を返してくれる関数のようです。

ちなみに、用語は正確に使いたいのですが、いまいちよくわかってないのが、XML。
お仕事では毎日のようにみているXMLなのですが、正確に説明しようとすると、自信がないです。
エレメント名という言い方をしました、タグとかいってしまっていいのかどうかとか...

参考

: