XML Emergerで情報取得する場合のXPathの指定例について説明します。
XPathの指定例と、それぞれのXPathが指す箇所を以下に示します。
図A.12 情報取得の指定例
図内の番号 | XPathでの指定 | 説明 |
---|---|---|
(1) | /booklist/book/title/@subtitle | 最初に出現する“title”の属性“subtitle”の値“emerge”が取得されます。 |
(2) | /booklist/book/title/text() | 最初に出現する“/booklist/book/title”の要素内容“XML Emerger”が取得されます。 |
(3) | /booklist/book/price | “/booklist/book/price”タグが存在するので、以下が返却されます。
|
(4) | /booklist/book[2]/@bookid | 2番目に出現する“/booklist/book”の属性である“bookid”の値“B02”が取得されます。 |
(5) | /booklist/book[2]/title/text() | 2番目に出現する“/booklist/book”の子要素である“title”の要素内容“XML Parts”が取得されます。 |
- | /booklist/book[2]/summary/text() | 2番目に出現する“/booklist/book”の子要素である“summary”は存在しないため、ログに警告が出力され、以下が返却されます。
|
- | /booklist/book[2]/summary | 2番目に出現する/booklist/book/summaryタグが存在しないので、以下が返却されます。
|
- | /booklist/book/summary/text() | 最初に出現する“/booklist/book/summary”の要素内容が空なので、ログに警告が出力され、以下が返却されます。
|
- | /booklist/book[2]/*/text() | 2番目に出現する“/booklist/book”の子要素のうち、最初に出現する要素であるtitleの要素内容、“XML Parts”を取得します。 |
- | /booklist/book[1]/price + /booklist/book[2]/price | 最初と2番目の“/booklist/book”の子要素priceの内容を数値化し、足し合わせた値“2500”を取得します。 |
- | local-name(/booklist/book/price) | 最初に出現する“/booklist/book/price”の要素名、“price”を取得します。 |
- | boolean(/booklist/book/price) | “/booklist/book/price”タグが存在するので、文字列“true”を返します。 |
- | boolean(/booklist/book/story) | “/booklist/book/story”タグが存在しないので、文字列“false”を返します。 |
(6) | /*/*[namespace-uri()='http://user'] [local-name()=’book’]/@bookid | 2階層目のすべての要素のうち、URIが“http:// user”の名前空間に属し、かつ要素名が“book”である要素の属性“bookid”の値“B03”を取得します。 |
(6) | /booklist/p:book/@bookid(※1) | “/booklist”の子要素のうち、URIが“http:// user”の名前空間に属する“book”要素の属性“bookid”の値“B03”を取得します。 |
※1:処理対象のXML文書で使用されていない接頭辞をXPath式に使用する場合、接頭辞とその接頭辞に対応するURIの対応付けが必要です。対応付けは、名前空間接頭辞URI対応付け定義ファイルに、以下のように記述してください。
p = http://user |
定義ファイルは、以下に格納されています。
“<INSDIR>\etc\def\properties\XPathNamespace.properties”
“/opt/FJSVesi/etc/def/properties/XPathNamespace.properties”
青色のXPathは、ISI 9.1以降のXPath指定を行う場合に指定できます。
日本語を使用した名前空間接頭辞およびURIを定義する場合は、ASCIIファイルに変換する必要があります。
ASCIIファイルへの変換は、native2asciiを使用してください。native2asciiはJDKに含まれます。