Salta el contingut

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:

  1. Tots els noms de clients
  2. Totes les comandes amb estat entregada
  3. L'id de la primera comanda
  4. Nombre total de comandes
  5. La data de l'última comanda
  6. Tots els productes amb preu superior a 20 euros
  7. Noms dels clients que han fet comandes pendents
  8. 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 generatedAt a 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%