xslt tutorial xslt transformations elements with examples
Questo tutorial spiega cosa è XSLT, le sue trasformazioni, elementi e utilizzo con esempi. Copre anche l'importanza di XPath per sviluppare codice di conversione XSLT:
Il termine 'XSLT' viene generato dalla combinazione di due parole, ovvero 'XSL' e 'T', 'XSL' è la forma abbreviata di 'Extensible Stylesheet Language' e 'T' è una forma abbreviata di 'Trasformazione'.
Quindi, in pratica, XSLT è un linguaggio di trasformazione utilizzato per trasformare / convertire documenti XML di origine in documenti XML o in altri formati come HTML, PDF utilizzando XSL-FO (Formatting Objects), ecc.
Cosa imparerai:
Introduzione a XSLT
La trasformazione avviene con l'aiuto del processore XSLT (come Saxon, Xalan). Questo processore XSLT accetta uno o più documenti XML come origine con un file XSLT che contiene il codice XSLT scritto in esso ei documenti risultato / output verranno generati in seguito come mostrato nel diagramma seguente.
Il processore XSLT analizza i documenti XML di origine utilizzando X-Path per navigare su diversi elementi di origine a partire dall'elemento radice fino alla fine dei documenti.
Lettura consigliata => Tutto quello che devi sapere X-Path
Trasformazione XSLT
Per avviare la trasformazione è necessario un documento XML su cui verrà eseguito il codice XSLT, il file di codice XSLT stesso e lo strumento o il software con processore XSLT (è possibile utilizzare qualsiasi versione gratuita o versione di prova del software per scopi di apprendimento).
# 1) Codice XML
Di seguito è riportato il codice XML di origine su cui verrà eseguito il codice XSLT.
Nome del file: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) Codice XSLT
Di seguito è riportato il codice XSLT basato su cui verrà eseguito il documento XML sopra.
Nome del file: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Codice risultato / output
Il codice seguente verrà prodotto dopo aver utilizzato il codice XSLT nel documento XML sopra.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) Visualizza risultati / output nel browser web
Libri:
ID libro | Nome del libro | Nome dell'autore | Editore | Prezzo | Edizione |
---|---|---|---|---|---|
5350192956 | Riferimento del programmatore XSLT | Michael Kay | Wrox | $ 40 | 4 ° |
3741122298 | Head First Java | Kathy sierra | O'reilly | $ 19 | 1 ° |
9987436700 | SQL Il riferimento completo | James R. Groff | McGraw-Hill | $ 45 | 3 ° |
Elementi XSLT
Per capire il codice XSLT sopra e funziona, dobbiamo prima comprendere i diversi elementi XSLT e i loro attributi.
# 1) OR
Ogni codice XSLT deve iniziare con l'elemento root o
Attributi:
- @xmlns: xsl: Collega il documento XSLT con lo standard XSLT.
- @versione: Definisce la versione del codice XSLT per il parser.
#Due)
Questa dichiarazione definisce un insieme di regole applicate per elaborare o trasformare l'elemento di input selezionato del documento di origine nelle regole dell'elemento di destinazione definite dei documenti di output.
Fondamentalmente sono disponibili due tipi di modelli secondo i loro attributi:
(i) Modello denominato: Quando l'elemento xsl: template contiene l'attributo @name, questo viene chiamato Named Template.
I modelli con nome vengono chiamati dall'elemento xsl: call-template.
(ii) Modello di corrispondenza: L'elemento xsl: template contiene l'attributo @match che contiene un modello corrispondente o XPath applicato ai nodi di input.
I modelli di corrispondenza sono chiamati dall'elemento xsl: apply-template.
xsl: l'elemento template deve avere l'attributo @ match o l'attributo @name o entrambi. Un elemento xsl: template che non ha un attributo match non deve avere alcun attributo mode e nessun attributo di priorità.
Riscriviamo il precedente XSLT (
per) Codice XSLT basato su Match Template con. Vedi sotto il codice modificato evidenziato in giallo e grigio, produrrà lo stesso risultato di output sopra.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Fare riferimento allo screenshot per l'area evidenziata:
b) Codice XSLT basato sul modello denominato con estensione. Vedi sotto il codice modificato evidenziato in giallo e grigio, produrrà lo stesso risultato di output sopra.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Fare riferimento allo screenshot per l'area evidenziata:
# 3)
Il processore troverà e applicherà tutti i modelli che hanno XPath definito nell'attributo @select.
L'attributo @mode viene utilizzato anche se vogliamo fornire più di un modo di output con lo stesso contenuto di input.
# 4)
Il processore effettuerà una chiamata ai modelli che hanno valore all'interno dell'attributo @name (obbligatorio).
elemento viene utilizzato per passare i parametri al modello.
qual è la migliore app spia per cellulari
# 5)
Fornire il valore stringa / testo relativo all'espressione XPath definita nell'attributo @select, come definito nel codice precedente.
Questo darà il valore del nome del libro.
# 6): ripetizione
Questo elaborerà le istruzioni per ogni set di nodi (xpath definito nell'attributo @select (obbligatorio)) nella sequenza ordinata.
Il codice di cui sopra significa per ciascun nodo set di negozio / libro significa:
/ store / book (1)
/ store / book (2)
/ store / book (3)
può anche essere usato come figlio di xsl: for-each per definire l'ordine di ordinamento.
# 7): elaborazione condizionale
Le istruzioni xsl: if verranno elaborate solo se il valore booleano dell'attributo @test sarà vero altrimenti l'istruzione non verrà valutata e verrà restituita la sequenza vuota.
2'> Condition True: Count of books are more than two.
Risultato: Condizione True: il conteggio dei libri è superiore a due.
Qui il count () è la funzione predefinita.
# 8): elaborazione delle condizioni alternative
xsl: scegli hanno più casi per condizioni diverse che vengono testate all'interno dell'attributo @test degli elementi xsl: when, la condizione di test che si verifica per prima tra tutte xsl: when, che verrà elaborata per prima e ci sono un xls opzionale: altrimenti elemento in modo che se nessuno dei test di condizione si verifica, verrà considerato xsl: altrimenti.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Risultato: Condizione vera: il conteggio del libro è tre.
# 9)
xsl: copy funziona sull'elemento di contesto, cioè se questo è un nodo, copierà il nodo di contesto nel nodo appena generato e questo non copierà i figli del nodo di contesto. Per questo motivo, questa viene chiamata copia superficiale. A differenza dell'elemento xsl: copy-of, xsl: copy non ha l'attributo @ select.
Nel codice seguente, gli elementi di contesto vengono copiati nell'output e tutti gli elementi figli vengono chiamati e copiati da xsl: apply-template in modo ricorsivo.
node () | @ * Sta per tutti i nodi e tutti i loro attributi in modo ricorsivo.
Risultato: Questo copierà ricorsivamente tutti i nodi e gli attributi del documento di origine nel documento di output, ovvero creerà una copia esatta del documento di origine.
# 10)
xsl: copy-of copierà la sequenza di nodi con tutti i suoi figli e attributi in modo ricorsivo per impostazione predefinita, a causa di questa natura questo è anche chiamato come copia profonda. L'attributo @select è richiesto per la valutazione di XPath.
Risultato: Questo copierà ricorsivamente tutti i nodi e gli attributi del documento di origine nel documento di output, ovvero creerà una copia esatta del documento di origine.
Sta per una copia del nodo corrente e dell'attributo corrente.
#undici)
Questo elemento viene utilizzato per scrivere un commento sul risultato di destinazione, qualsiasi contenuto di testo che è accanto a questo tag verrà stampato come output commentato.
Questo verrà stampato per l'output come nodo di commento.
Risultato:
# 12)
Questo genererà un nodo di testo al documento del risultato, il valore all'interno di xsl: text verrà stampato come una stringa per l'output.
Questo è un
riga di testo.
Produzione:
Questo è un
riga di testo.
# 13)
Questo genererà un elemento nel documento dei risultati con il nome menzionato nel suo attributo @name. L'attributo name è l'attributo richiesto.
Risultato: 5350192956
# 14)
Questo genererà un attributo al suo elemento genitore nel documento dei risultati. Il nome dell'attributo è definito dall'attributo name e il valore dell'attributo viene calcolato dall'XPath menzionato nell'attributo select come indicato nel codice seguente. L'attributo name è l'attributo richiesto.
Risultato:
#quindici)
Questo elemento ordinerà il nodo selezionato in modo sequenziale di conseguenza in direzione ascendente o discendente. Il nodo o XPath viene fornito tramite l'attributo @select e la direzione dell'ordinamento è definita dall'attributo @order.
Nel codice sottostante otterremo l'elenco di tutti i libri secondo il nome del libro in ordine alfabetico.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Fai riferimento a questo screenshot per l'area evidenziata:
differenza tra java e c ++
Risultato: L'elenco seguente contiene i nomi dei libri in ordine alfabetico, ovvero in ordine crescente.
Libri:
ID libro | Nome del libro | Nome dell'autore | Editore | Prezzo | Edizione |
---|---|---|---|---|---|
3741122298 | Head First Java | Kathy sierra | O'reilly | $ 19 | 1 ° |
9987436700 | SQL Il riferimento completo | James R. Groff | McGraw-Hill | $ 45 | 3 ° |
5350192956 | Riferimento del programmatore XSLT | Michael Kay | Wrox | $ 40 | 4 ° |
# 16)
Questo elemento dichiara una variabile che contiene un valore al suo interno. Una variabile potrebbe essere una variabile globale o una variabile locale. Il nome della variabile è definito dall'attributo @name e il valore che questa variabile conterrà è definito dall'attributo @select.
L'accesso alla variabile globale è globale, ovvero le variabili possono essere chiamate all'interno di qualsiasi elemento e rimangono accessibili all'interno del foglio di stile.
Per definire una variabile globale, dobbiamo solo dichiarare che accanto all'elemento radice del foglio di stile come mostrato nel codice sotto evidenziato in giallo, la variabile 'SecondBook' è la variabile globale e contiene il nome del secondo libro.
L'accesso della variabile locale è locale all'elemento in cui è definita ovvero quella variabile non sarebbe accessibile al di fuori dell'elemento in cui è definita come mostrato nel codice sottostante evidenziato in grigio, la variabile 'primo libro' è un variabile locale e contiene il nome del primo libro.
Per chiamare sia la variabile globale che la variabile locale, il simbolo del dollaro ($) viene utilizzato prima del nome della variabile, come mostrato di seguito in giallo evidenziato $ .
First Book Name: Second Book Name:
Fare riferimento allo screenshot per l'area evidenziata:
Risultato:
Nome del primo libro: riferimento del programmatore XSLT
Nome del secondo libro: Head First Java
# 17)
Questo elemento viene utilizzato per dichiarare le chiavi, per i valori del modello corrispondenti a quella particolare chiave.
Il nome è un fornitore di quella chiave per l'attributo @name (' get-publisher “), Che viene successivamente utilizzato all'interno della funzione key (). L'attributo @match viene fornito per indicizzare il nodo di input dalle espressioni XPath (' libro “), Come nel seguito evidenziato in giallo, @match viene utilizzato per indicizzare tutti i libri disponibili nel negozio.
Relativamente all'attributo @match, viene utilizzato l'attributo @use, che dichiara il nodo per ottenere il valore per quella chiave tramite l'espressione XPath ('publisher').
Supponiamo ora che se abbiamo bisogno dei dettagli del libro che è pubblicato solo dall'editore 'Wrox', possiamo ottenere facilmente quel valore tramite xsl: key element creando una coppia chiave-valore.
chiave ('get-publisher', 'Wrox') Key () accetta due parametri, il primo è il nome della chiave, che in questo caso è 'get-publisher', il secondo è il valore della stringa da cercare che nel nostro caso è 'Wrox'.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Fare riferimento allo screenshot per l'area evidenziata:
Risultato:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Visualizzazione risultato / HTML:
Libri:
ID libro | Nome del libro | Nome dell'autore | Editore | Prezzo | Edizione |
---|---|---|---|---|---|
5350192956 | Riferimento del programmatore XSLT | Michael Kay | Wrox | $ 40 | 4 ° |
# 18)
Questo elemento viene utilizzato per scopi di debug nello sviluppo XSLT. L'elemento fornisce il suo output alla schermata di output standard dell'applicazione.
domande del colloquio di programmazione lato server java
L'attributo @terminate viene utilizzato con due valori 'yes' o 'no', se il valore è impostato su 'yes', il parser termina immediatamente non appena la condizione di test viene soddisfatta affinché il messaggio venga eseguito.
Per capirlo, supponiamo che se nel nostro documento di input l'elemento prezzo si svuota accidentalmente come nel codice sottostante, l'elaborazione dovrebbe interrompersi immediatamente non appena il processore incontra l'elemento prezzo vuoto che può essere facilmente ottenuto utilizzando xsl: messaggio all'interno della condizione di test if come nel codice XSLT sottostante.
L'avviso del debugger viene mostrato dalla schermata standard dell'applicazione: Elaborazione terminata da xsl: messaggio alla riga 21.
Inserisci il codice XML:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Fare riferimento allo screenshot per l'area evidenziata:
Codice XSLT:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Fare riferimento allo screenshot per l'area evidenziata:
Risultato: Si noti che non appena il parser incontra il cartellino del prezzo vuoto, termina immediatamente l'elaborazione a causa della quale i tag di chiusura die non sarebbe arrivato alla fine del file.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st Fare riferimento allo screenshot per l'area evidenziata:

# 19) e
element definisce il parametro da template se definito all'interno. Può essere definito all'interno come parametro globale o all'interno come parametro locale di quel modello.
Il valore di viene passato / fornito quando il modello viene chiamato byor.

passa il valore del parametro definito all'interno del template. Attributo come @name contiene il nome del parametro che dovrebbe corrispondere all'attributo @name dell'elemento. L'attributo @Select viene utilizzato per impostare un valore per quel parametro.

Per recuperare il valore del parametro viene utilizzato lo stesso come un segno di dollaro variabile ($).

Codice XML di origine:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Codice XSLT:
List of Books Name :-
Book Name:
Fare riferimento allo screenshot per l'area evidenziata:

Output dei risultati:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference