XSLT

Ideja XSLT-a

xslt-procesor.png, 8,3kB

XSLT procesori

U praksi se ispostavlja da nijedan od navedenih alata nije dovoljan, te je stoga potrebno kombinovati ih. Za kreiranje XSLT listova i testiranje XPath-izraza je posebno zgodan Exchanger (kao nekomercijalni editor). On sadrži i program za izvršavanje korak po korak, otkrivanje i otklanjanje grešaka (eng. debugger), ali taj koji ne funkcioniše uvek. Jedno od pouzdanijih rešenja za testiranje XSL-transformacija je XML Visualizer.

XSLT stilski list

Šabloni

XSL-transformacije koriste XPath-izraze da prepoznaju određeni deo XML-dokumenta i da izvrše odgovarajuće akcije. Par (XPath-izraz, akcija) se naziva XSL-šablon i realizuje se pomoću elementa xsl:template.

XSL stilski list vrši obradu XML dokumenta po sledećim pravilima:

  1. Obrada uvek počinje od korenog čvora (/).
  2. Ako tokom obrade dođe red na neki čvor XML drveta (tekući čvor ili kontekstni čvor), postoje dve mogućnosti:
    1. Ako u XSL-stilskom listu postoji šablon koji propisuje akciju obrade za tekući čvor, onda se izvršava ta akcija (akcija može da definiše da li ima još čvorova koje treba obraditi ili ne, i kojim redosledom se oni obrađuju). Ako ima više šablona koji definišu akciju za isti čvor, bira se šablon sa preciznijim XPath-izrazom (apsolutne adrese imaju prioritet nad relativnim).
    2. U protivnom, ako ne postoji nijedan šablon koji definiše akciju obrade za tekući čvor, izvršava se podrazumevana akcija i to:
      • ako je tekući čvor koreni čvor (/) ili element, prelazi se na obradu svakog elementa-deteta tekućeg čvora;
      • ako je tekući čvor atribut ili tekstuelni čvor, ispisuje se vrednost tekućeg čvora;
      • ako je tekući čvor prostor imena, XML komentar ili instrukcija obrade, ne radi se ništa.
  3. Obrada se završava kada više nema čvorova koje treba obraditi.

Kontrolne strukture

Sortiranje

U narednim zadacima se koristi ista ulazna XML datoteka ispiti.xml.

Beline II

MARC (Stanislava Gardašević)

U svim narednim primerima koristi se isti ulazni XML: marc-primeri.xml, pri šemu se u tekstovima zadataka na elemente marc:record, marc:datafield i marc:subfield referiše tim redom kao na zapise, polja i potpolja. Kada se govori o "polju 653" i sl., misli se na element marc:datafield sa atributom tag='653'. Takođe, pod potpoljem a) i sl., podrazumeva se marc:subfield sa atributom code='a'.

Biblioteke funkcija