■
- @i でインポート(えび日記)
- 2003-12-13: 'xml' で始まる名前 #2 (マーク付けノート)
-
これはありそうだと思って検索したら、一個発見。即座に修正。
検索に使用したXPath:
/descendant::*/@id[substring(translate(string(self::node()), "xml", "XML"), 1, 3) = "XML"]
/descendant::*/@id
は全てのid属性ノードを表現。続く[]
内に条件式を書いてそれらのid属性ノード達をフィルタリングします。translate(string(self::node()), "xml", "XML")
は、そのid属性ノードの文字列値、string(self::node())
内の 小文字xを大文字Xに、小文字mを大文字Mに、小文字lを大文字Lに置き換えた文字列を返却します。substring(文字列, 1, 3)
は、文字列の第1文字から第3文字を抽出したものを返します。つまり最初の三文字になります。この三文字を "XML" と比較しています。偽ならフィルタに「濾され」ます。結果、最初の三文字がxml(case insensitive)なid属性を表現することになります。