PR0375 — Transformació de Documents XML
Objectius
- Escriure expressions XPath per navegar i filtrar documents XML
- Crear fulls d'estil XSLT per transformar XML a HTML
- Crear fulls d'estil XSLT per transformar XML a XML
- Usar
xsl:for-each,xsl:sort,xsl:if,xsl:choose
Lliurament
Format: Carpeta comprimida .zip amb nom PR0375_nom_cognom.zip
Termini: Consulteu la programació d'aula
Eines: VS Code + extensió XML (Red Hat), Saxon o xsltproc
Exercici 1 — Consultes XPath
Pren el document comandes.xml que trobaràs a la carpeta de pràctiques. Escriu les expressions XPath que donin els resultats sol·licitats:
<!-- comandes.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<comandes>
<comanda id="C001" data="2025-01-15" estat="entregada">
<client id="CL001">
<nom>Joan Garcia</nom>
<email>joan@exemple.com</email>
</client>
<linia producte="P001" quantitat="2" preu="15.50">Teclat USB</linia>
<linia producte="P002" quantitat="1" preu="45.00">Ratolí sense fils</linia>
</comanda>
<comanda id="C002" data="2025-01-20" estat="pendent">
<client id="CL002">
<nom>Maria López</nom>
<email>maria@exemple.com</email>
</client>
<linia producte="P003" quantitat="3" preu="8.99">Cable HDMI</linia>
</comanda>
<comanda id="C003" data="2025-02-01" estat="entregada">
<client id="CL001">
<nom>Joan Garcia</nom>
<email>joan@exemple.com</email>
</client>
<linia producte="P004" quantitat="1" preu="129.99">Monitor 24"</linia>
</comanda>
</comandes>
Escriu en un fitxer xpath_resultats.txt les expressions XPath per:
- Tots els noms de clients
- Totes les comandes amb estat
entregada - L'id de la primera comanda
- Nombre total de comandes
- La data de l'última comanda
- Tots els productes amb preu superior a 20 euros
- Noms dels clients que han fet comandes pendents
- Suma de preus de totes les línies de la comanda C001
Exercici 2 — XSLT: XML a HTML
Crea el fitxer comandes.xsl que generi una pàgina HTML a partir de comandes.xml:
- Títol: "Gestió de Comandes"
- Taula amb columnes: ID comanda, Data, Client, Productes, Estat
- La columna Estat ha de mostrar un badge de color: verd per "entregada", groc per "pendent", vermell per qualsevol altre
- Ordena les comandes per data (de més nova a més antiga)
- Afegeix al final: nombre total de comandes i una línia amb les comandes entregades vs pendents
Aplica el XSLT afegint la instrucció de processament al comandes.xml.
Exercici 3 — XSLT: XML a XML (filtrat)
Crea comandes_entregades.xsl que generi un nou comandes_entregades.xml que contingui únicament les comandes amb estat "entregada". El document XML resultant ha de:
- Tenir el mateix esquema que l'original
- Incloure l'atribut
generatedAta l'element arrel amb la data d'avui - Ordenar les comandes per id
# Executa amb Saxon:
java -jar saxon-he.jar -s:comandes.xml -xsl:comandes_entregades.xsl -o:comandes_entregades.xml
Verifica el resultat i inclou els dos fitxers XML al lliurament.
Criteris d'avaluació
| Criteri | Pes |
|---|---|
| Expressions XPath correctes (Exercici 1) | 30% |
| XSLT HTML amb format, colors i ordenació | 40% |
| XSLT XML→XML amb filtrat correcte | 30% |