XQuery Adición de elementos y atributos
El documento de ejemplo XML
Usaremos el documento "books.xml" en los ejemplos a continuación (el mismo archivo XML que en los capítulos anteriores).
Vea el archivo "books.xml" en su navegador .
Adición de elementos y atributos al resultado
Como hemos visto en un capítulo anterior, podemos incluir elementos y atributos del documento de entrada ("books.xml) en el resultado:
for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
La expresión XQuery anterior incluirá tanto el elemento de título como el atributo lang en el resultado, así:
<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>
La expresión XQuery anterior devuelve los elementos del título exactamente de la misma forma en que se describen en el documento de entrada.
¡Ahora queremos agregar nuestros propios elementos y atributos al resultado!
Agregar elementos HTML y texto
Ahora, queremos agregar algunos elementos HTML al resultado. Pondremos el resultado en una lista HTML, junto con algo de texto:
<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>
La expresión XQuery anterior generará el siguiente resultado:
<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>
Agregar atributos a elementos HTML
A continuación, queremos usar el atributo de categoría como un atributo de clase en la lista 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>
La expresión XQuery anterior generará el siguiente resultado:
<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>