XQuery 要素と属性の追加

XML インスタンスドキュメント

以下の例では、この「books.xml」ドキュメント(前の章で使用されている XML ファイルと同じ)を使用します。

ブラウザで「books.xml」ファイルを確認してください

結果に要素と属性を追加

前節で見たように、私たちは結果で入力ファイルの要素と属性を参照できます:

for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x

上記の XQuery 表現は、結果で title 要素と lang 属性を参照し、以下のように表示されます:

<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

上記の XQuery 表現は、title 要素の返し方とそれが入力ドキュメントでどのように記述されているかが同じです。

今、私たちは結果に自分自身の要素と属性を追加します!

HTML 要素とテキストを追加

今、私たちは結果に HTML 要素を追加します。結果は HTML リストに配置されます:

<html>
<body>
<h1>ブックストア</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}</li> カテゴリ: {data($x/@category)}</li>
}
</ul>
</body>
</html>

上記の XQuery 表現は以下の結果を生成します:

<html>
<body>
<h1>ブックストア</h1>
<ul>
<li>Everyday Italian. カテゴリ: COOKING</li>
<li>Harry Potter. カテゴリ: CHILDREN</li>
<li>Learning XML. カテゴリ: WEB</li>
<li>XQuery Kick Start. カテゴリ: WEB</li>
</ul>
</body>
</html>

HTML 要素に属性を追加

次に、category 属性を HTML リストの class 属性として使用します:

<html>
<body>
<h1>ブックストア</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li class="{data($x/@category)}">{data($x/title)}</li>
}
</ul>
</body>
</html>

上記の XQuery 表現は以下の結果を生成できます:

<html>
<body>
<h1>ブックストア</h1>
<ul>
<li class="COOKING">Everyday Italian</li>
<li class="CHILDREN">Harry Potter</li>
<li class="WEB">Learning XML</li>
<li class="WEB">XQuery Kick Start</li>
</ul>
</body>
</html>