- Enkonduko al XSLT
- Books:-
- Books:-
- List of Books Name :-
- List of Books Name :-
- Conclusion
- Books:-
- Books:-
- Books:-
- Books:-
- Books:-
- Books:-
- Books:-
Ĉi tiu lernilo Klarigas Kio estas XSLT, ĝiaj Transformoj, Elementoj kaj Uzado kun Ekzemplo. Ankaŭ kovras la Gravecon de XPath por Disvolvi XSLT-Konvertan Kodon:
La esprimo "XSLT" estas generita kombinante du vortojn t.e. 'XSL' kaj 'T', 'XSL' estas la mallonga formo de ' Extensible Stylesheet Language' kaj 'T' estas mallonga formo de 'Transformation'.
Do, esence, XSLT estas transformlingvo, kiu estas uzata por transformi/konverti fontajn XML-dokumentojn al XML-dokumentoj aŭ al aliaj formatoj kiel ekzemple. kiel HTML, PDF per uzado de XSL-FO (Formatado-Objektoj), ktp.
Enkonduko al XSLT
Transformo okazas helpe de la XSLT-procesoro ( kiel saksa, Xalan). Ĉi tiu XSLT-procesoro prenas unu aŭ plurajn XML-dokumentojn kiel fonton kun unu XSLT-dosiero kiu enhavas XSLT-kodon skribitan en ĝi kaj la rezultaj/eligaj dokumentoj estos generitaj poste kiel montrite en la suba diagramo.
La XSLT-procesoro analizas la fontajn XML-dokumentojn uzante X-Path por navigi tra malsamaj fontelementoj ekde la radika elemento ĝis la fino de dokumentoj.
Ĉio, kion Vi Devas Scii Pri X-Path
XSLT-Transformo
Por komenci transformon ni bezonas unu XML-dokumenton sur kiu ruliĝos la XSLT-kodo, la XSLT-koddosiero mem kaj la ilo aŭ programaro kun XSLT-procesoro (Vi povas uzi ajnan senpagan version aŭ provversion de la programaro pordokumenti la prezelementon malpleniĝas hazarde kiel en la suba kodo, tiam la prilaborado devus ĉesi tuj tuj kiam la procesoro renkontas la malplenan prezelementon, kiu povas esti facile atingita per uzado de xsl:mesaĝo ene de la if-testkondiĉo kiel en la sube. XSLT-kodo.
Atentigo de erarmilo montriĝas per la aplika norma ekrano: Pretigo finita per xsl:mesaĝo ĉe linio 21.
Enigu XML-kodon:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Referu ekrankopion por reliefigita areo:
XSLT-Kodo:
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
Referu al ekrankopio por emfazita areo:
Rezulto: Bonvolu noti, ke tuj la analizilo renkontas la malplenan prezetikedon, ĝi tuj ĉesigas la traktadon pro kiu la fermaj etikedoj de , kaj ne venus ĉe la fino de la dosiero.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $40 | 4th |
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1st |
Referu ekrankopion por emfazita areo:
#19) &
elemento difinas la parametron al ŝablono se estas difinita ene de . Ĝi povas esti difinita aŭ interne kiel la tutmonda parametro aŭ interne kiel la loka parametro al tiu ŝablono.
La valoro de la estas transdonita/liverita kiam la ŝablono estas vokita de aŭ .
ĝi pasas la valoron de la parametro difinita ene de al la ŝablono. Atributo kiel @name enhavas la nomon de la parametro kiu devus kongrui kun la @name-atributo de la elemento. @Select-atributo estas uzata por agordivaloro al tiu parametro.
Por preni la valoron de la parametro same kiel ŝanĝiĝema dolaro-signo ($) estas uzata.
Fonta XML-Kodo:
XSLT Programmer's Reference Michael Kay Wrox $40 4th Head First Java Kathy Sierra O'reilly $19 1st SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd
XSLT-Kodo:
List of Books Name :-
Book Name:
Referu ekrankopion por la reliefigita areo:
Rezulta Eligo:
lernceloj).List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference
#20)
is used to import another stylesheet module inside our current stylesheet. This helps in achieving a modular XSLT development approach.
After importing all the templates get available to use. The priority of the templates defined in the parent stylesheet(which is importing another stylesheet) is higher than the imported stylesheet (which is imported by the parent stylesheet).
If another stylesheet also has the same name template as defined inside the template that is importing then the foreign templates get overridden by your own template.
Attribute @href is used as the URI of the stylesheet that you want to import.
#21)
Same as the above xsl:import, also helps in achieving a modular XSLT development approach. All the templates included by have the same priority/precedence as the calling stylesheet. It is like you copy all the templates from another stylesheet to your own stylesheet.
Attribute @href is used as the URI of the stylesheet that you want to import.
#22)
This element is used to specify the result tree in the output file. It contains attributes like @method that can have values like ‘XML’, ‘HTML’, ‘XHTML’ and ‘text’ by default is ‘XML’.
@encoding specifies the character encoding that comes in the output file as shown in below example encoding=”UTF-16″, the default values for XML or XHTML could be either UTF-8 or UTF-16. @indent specifies the indentation of the XML or HTML output code, for XML the default value is ‘no’ and for HTML and XHTML the default value is yes.
#23)
This element is used for stripping(removing) non-significant whitespace for the listed source element inside the @element attribute and if we want to strip whitespace from all the elements then we can use ‘*’ inside @elements attribute.
#24)
This element is used to preserve white spaces for the listed source element inside the @element attribute and if we want to preserve whitespace from all the elements, then we can use ‘*’ inside @elements attribute.
Conclusion
Thus in this article, we have learned about XSLT, frequently used XSLT elements, their usage with example source and target/result code, conversion or transformation of the source element to the target element.
We also discussed the importance of XPath to develop XSLT conversion code. We have seen the XSL template declaration and template calling & passing parameters. We learned to declare global and local variables, their usage in the XSLT code, and how to call them.
We learnt about different branching or conditional XSLT elements like xsl:if, xsl:for-each, xsl:choose. We understood the difference between shallow copying and deep copying, sorting of nodes, debugging of XSLT code by using xsl:message, the difference between named templates and match templates, and output formatting by using xsl:output.
About the Author: Himanshu P. is an experienced professional in the field of Information Technology. He has worked with ITC MNCs on cross-business domains and multiple technologies. Himanshu’s favorite pastime is reading magazines and blogging.
#1) XML-Kodo
Malsupre estas la fonto XML-kodo sur kiu ruliĝos la XSLT-kodo.
Dosiera Nomo: Books.xml
XSLT Programmer's Reference Michael Kay Wrox $40 4th Head First Java Kathy Sierra O'reilly $19 1st SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd
#2) XSLT-Kodo
Malsupre estas la XSLT-kodo surbaze de kiu funkcios en la ĉi-supra XML-Dokumento.
Dosiera Nomo: Books.xsl
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
#3) Rezulta/Eliga Kodo
La suba kodo estos produktita post uzado de la XSLT-kodo en la ĉi-supra XML-dokumento.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $40 | 4th |
3741122298 | Head First Java | Kathy Sierra | O'reilly | $19 | 1st |
9987436700 | SQL The Complete Reference | James R. Groff | McGraw-Hill | $45 | 3rd |
# 4) Rigardu Rezulton/Eligon en Retumilo
Libroj:
Libro ID | Nomo de libro | Nomo de aŭtoro | Eldonisto | Prezo | Eldono |
---|---|---|---|---|---|
5350192956 | XSLT-Referenco de Programisto | Michael Kay | Wrox | $40 | 4-a |
3741122298 | Kapo Unue Java | Kathy Sierra | O'reilly | $19 | 1a |
9987436700 | SQL La Kompleta Referenco | James R. Groff | McGraw-Hill | $45 | 3a |
XSLT-Elementoj
Por kompreni la suprajn XSLT-kodo kaj ĝia funkciado, ni unue devas kompreni la malsamajn XSLT-elementojn kaj iliajn atributojn.
#1) AŬ
Ĉiu XSLT-kodo devas komenciĝi per la radika elemento aŭ aŭ
Atributoj:
- @xmlns:xsl: Ligas XSLT-dokumenton kun XSLT-normo.
- @version: Difinas la version de la XSLT-kodo al laanalizilo.
#2)
Tiu ĉi deklaro difinas aron de reguloj aplikataj por prilabori aŭ transformi la elektitan enigelementon de la fontdokumento al la difinitaj celelementaj reguloj de la eligdokumentoj. .
Esence, du specoj de ŝablonoj disponeblas laŭ siaj atributoj:
(i) Nomita Ŝablono: Kiam la xsl: ŝablona elemento enhavas la @name-atributon tiam ĉi tio nomiĝas Nomita Ŝablono.
Nomitaj ŝablonoj estas vokitaj per xsl:call-template-elemento.
(ii) Kongrua Ŝablono: La xsl:template-elemento enhavas la @match-atributon kiu enhavas kongruan ŝablonon aŭ XPath aplikitan ĉe la enignodoj.
Match-ŝablonoj estas vokitaj per xsl:apply-template-elemento.
xsl :ŝablona elemento devas havi aŭ @match-atributon aŭ @name-atributon aŭ ambaŭ. Xsl:ŝablona elemento kiu havas neniun kongruan atributon devas havi neniun reĝiman atributon kaj neniun prioritatan atributon.
Ni reskribu la ĉi-supran XSLT(
a) XSLT-kodo bazita sur Match Ŝablono kun . Vidu malsupre flava & grize elstarigita ŝanĝita kodo, ĝi produktos la saman supran eligrezulton.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|
Referu la ekrankopion por reliefigita areo:
b) XSLT-kodo bazita sur la Nomita Ŝablono kun . Vidu malsupre flava & grize emfazita ŝanĝita kodo, ĝi produktos la saman supran eligrezulton.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|
Referu la ekrankopion por emfazita.areo:
#3)
La procesoro trovos kaj aplikos ĉiujn ŝablonojn, kiuj havas XPath difinitan en la @select-atributo.
La @mode-atributo ankaŭ estas uzata se ni volas doni pli ol unu manieron de eligo kun la sama eniga enhavo.
#4)
La procesoro faros alvokon al la ŝablonoj havantaj valoron ene de la @name-atributo (postulata).
elemento estas uzata por transdoni parametrojn al la ŝablono.
#5)
Provizo la ĉeno/teksta valoro pri la XPath-esprimo difinita en la @select-atributo, kiel difinite en la ĉi-supra kodo.
Ĉi tio donos la valoron de la libronomo.
#6) : Ripeto
Ĉi tio prilaboros la instrukciojn por ĉiu aro de nodoj (xpath difinita en la @select (postulata) atributo) en la ordigita sinsekvo.
La ĉi-supra kodo signifas por ĉiu noda aro de vendejo/libro signifas:
/store/book[1]
/store/book[2 ]
/store/book[3]
ankaŭ povas esti uzata kiel infano de xsl:for-each por difini la ordon de ordigo.
#7) : Kondiĉa Pretigo
La instrukcioj xsl:if nur procesiĝos se la Bulea valoro de la @testa atributo estos vera, alie la instrukcio ne estos taksita kaj la malplena sekvenco estas resendita.
2"> Condition True: Count of books are more than two.
Rezulto: Kondiĉo Vera: Nombro de libroj estas pli ol du.
Ĉi tie la count() estas la antaŭdifinita funkcio.
#8) :atributo estas postulata por la taksado de la XPath.
Rezulto: Ĉi tio kopios ĉiujn nodojn kaj atributojn de la fontdokumento rekursie al la eligodokumento, t.e. ĝi kreos precizan kopion de la fonta dokumento.
Senbas kopion de la nuna nodo kaj nuna atributo.
#11)
Tiu elemento estas uzata por skribi komenton al la celo rezulto, ajna tekstenhavo kiu apudestas ĉi tiun etikedon estos presita kiel komentita eligo.
Ĉi tio estos presita al eligo kiel komenta nodo.
Rezulto:
#12)
Ĉi tio generos tekstan nodon al la rezultdokumento, la valoro ene de la xsl:text estos presita kiel ĉeno por eligi .
Ĉi tio estas
teksta linio.
1>Eligo:
Ĉi tio estas
teksta linio.
#13)
Tio generos elementon al la rezultdokumento kun la nomo menciita en ĝia @name-atributo. La nomo atributo estas la postulata atributo.
Rezulto: 5350192956
#14)
Ĉi tio generos atributon al ĝia gepatra elemento en la rezultdokumento. La nomo de la atributo estas difinita per la nomo atributo kaj la valoro de la atributo estas komputita de la XPath menciita en la elekta atributo kiel donita en la suba kodo. La nomo atributo estas la postulata atributo.
Rezulto:
#15)
Tiu elemento ordigosla elektita nodo en sinsekva maniero laŭe en ascenda aŭ malsupreniranta direkto. La nodo aŭ XPath estas donita per @select-atributo kaj la direkto de ordigo estas difinita per la @order-atributo.
En la suba kodo ni ricevos ĉiujn librojn liston laŭ la libronomo en alfabeta ordo.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
Referu al ĉi tiu ekrankopio por la reliefigita areo:
Rezulto: La suba listo enhavas la librojn nomojn en alfabeta ordo t.e. en kreskanta ordo.
Libroj:
Libro ID | Nomo de libro | Nomo de aŭtoro | Eldonisto | Prezo | Eldono |
---|---|---|---|---|---|
3741122298 | Head First Java | Kathy Sierra | O 'reilly | $19 | 1a |
9987436700 | SQL La Kompleta Referenco | James R. Groff | McGraw-Hill | $45 | 3a |
5350192956 | XSLT-Referenco de Programisto | Michael Kay | Wrox | $40 | 4a |
#16)
Ĉi tiu elemento deklaras variablo kiu tenas valoron en ĝi. Variablo povus esti tutmonda variablo aŭ loka variablo. La nomo de la variablo estas difinita per la @name-atributo kaj la valoro, kiun ĉi tiu variablo havos, estas difinita per la @select-atributo.
La aliro de la tutmonda variablo estas tutmonda t.e. la variabloj povas esti nomitaj ene de iu ajn. elemento kaj restu alireblaene de la stilfolio.
Por difini tutmondan variablon, ni nur bezonas deklari, ke apud la radika elemento de la stilfolio kiel montrite en la suba kodo en la flava emfazita, la variablo 'SecondBook' estas la tutmonda variablo. kaj ĝi enhavas la nomon de la dua libro.
La aliro de la loka variablo estas loka al la elemento en kiu ĝi estas difinita t.e. tiu variablo ne estus alirebla ekster la elemento en kiu ĝi estas difinita kiel montrite en la suba kodo kiu estas grize emfazita, la variablo 'unua libro' estas loka variablo kaj ĝi enhavas la nomon de la unua libro.
Por voki aŭ la tutmondan variablon al la loka variablo la Dolara simbolo. ($) estas uzata antaŭ la nomo de la variablo, kiel montrite malsupre en flave emfazita $ .
First Book Name: Second Book Name:
Referu la ekrankopion por la reliefigita areo:
Rezulto:
Unua Libronomo: Referenco de Programisto XSLT
Dua Libronomo: Ĉefo Unue Java
#17)
Ĉi tiu elemento estas uzata por deklari ŝlosilojn, por la kongruaj ŝablonaj valoroj al tiu aparta ŝlosilo.
Nomo estas provizanto de tiu ŝlosilo per @name-atributo (" get-publisher “), kiu estas poste uzata ene de la funkcio key(). @match-atributo estas provizita al indeksa eniga nodo per XPath-esprimoj (" libro "), kiel en la malsupre flave emfazita @match estas uzata por indeksi sur ĉiuj libroj disponeblaj en la vendejo.
Rilate al@match-atributo, la @use-atributo estas uzata, ĝi deklaras la nodon por ricevi la valoron por tiu ŝlosilo per XPath-esprimo ("eldonisto").
Nun, supozu, se ni bezonas la detalojn de la libro, kiu estas eldonita nur de 'Wrox'-eldonisto, tiam ni povas facile akiri tiun valoron per xsl:key-elemento farante ŝlosil-valoran paron.
key('get- eldonisto', 'Wrox') Key() prenas du parametrojn, unue estas la nomo de la ŝlosilo, kiu ĉi-kaze estas 'get-publisher', dua estas la ĉenvaloro, kiu bezonas serĉi, kiu en nia kazo estas 'Wrox'.
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
Referu la ekrankopion por la reliefigita areo:
Rezulto:
Books:-
Book ID | Book Name | Author Name | Publisher | Price | Edition |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $40 | 4th |
Rezulto/HTML-Vido:
Libroj:
Libro ID | Nomo de libro | Nomo de aŭtoro | Eldonisto | Prezo | Eldono |
---|---|---|---|---|---|
5350192956 | XSLT-Referenco de Programisto | Michael Kay | Wrox | $40 | 4a |
#18)
Tiu ĉi elemento estas uzata por sencimigaj celoj en Evoluo de XSLT. La elemento donas sian eliron al la norma eliga ekrano de la aplikaĵo.
La @terminate-atributo estas uzata kun du valoroj aŭ 'jes' aŭ 'ne', se la valoro estas agordita al 'jes' tiam la analizilo tuj finiĝas tuj kiam la testkondiĉo estas kontentigita por ke la mesaĝo estos plenumita.
Por kompreni ĉi tion, ni supozu, se en nia enigoAlternativa kondiĉo prilaborado
xsl:choose havas multoblajn kaŭzojn por malsamaj kondiĉoj kiuj estas testitaj ene de @testa atributo de la xsl:when elementoj, la testa kondiĉo kiu realiĝas unue inter ĉiuj xsl:when, tio estos procesita unue kaj estas nedeviga elemento xls:otherwise tiel ke se neniu el la kondiĉtestoj realiĝas tiam ĉi tiu xsl:otherwise estos konsiderata.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Rezulto: Kondiĉo Vera: Nombro de la libro estas tri.
#9)
xsl:copy funkcias sur kunteksta ero t.e. se tio estas nodo tiam ĝi kopios la kuntekstan nodon al la nove generita nodo kaj ĉi tio ne kopios la infanojn. de la kunteksta nodo. Pro ĉi tiu kialo, ĉi tio estas nomita malprofunda kopio. Male al xsl:copy-of-elemento, la xsl:copy ne havas la @select-atributon.
En la suba kodo, la kuntekstaj eroj estas kopiitaj al eligo & ĉiuj infanaj eroj nomiĝas & kopiite per la xsl:apply-template rekursie.
node()