Thêm phần tử và thuộc tính XQuery

Tệp văn bản XML mẫu

Chúng ta sẽ tiếp tục sử dụng tệp "books.xml" trong ví dụ sau (cùng với tệp XML được sử dụng trong các chương trước).

Xem tệp "books.xml" trong trình duyệt của bạn.

Thêm phần tử và thuộc tính vào kết quả

Như đã thấy ở phần trước, chúng ta có thể tham chiếu đến các phần tử và thuộc tính trong tệp đầu vào trong kết quả:

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

Biểu đạt XQuery trên sẽ tham chiếu phần tử title và thuộc tính lang trong kết quả như sau:

<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>

Cách biểu đạt XQuery trả về phần tử title và chúng được mô tả trong văn bản đầu vào là giống nhau.

Bây giờ chúng ta sẽ thêm phần tử và thuộc tính của riêng mình vào kết quả!

Thêm phần tử HTML và văn bản

Bây giờ, chúng ta sẽ thêm phần tử HTML vào kết quả. Chúng ta sẽ đặt kết quả trong một danh sách HTML:

<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}. Category: {data($x/@category)}</li>
}
</ul>
</body>
</html>

Biểu đạt XQuery trên sẽ tạo ra kết quả sau:

<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian. Category: COOKING</li>
<li>Harry Potter. Category: CHILDREN</li>
<li>Learning XML. Category: WEB</li>
<li>XQuery Kick Start. Category: WEB</li>
</ul>
</body>
</html>

Thêm thuộc tính vào phần tử HTML

Tiếp theo, chúng ta sẽ sử dụng thuộc tính category như thuộc tính class trong danh sách HTML:

<html>
<body>
<h1>Bookstore</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 biểu đạt trên có thể tạo ra kết quả sau:

<html>
<body>
<h1>Bookstore</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>