xslt tutorial xslt transformations elements with examples
Deze tutorial legt uit wat XSLT is, zijn transformaties, elementen en gebruik met voorbeelden. Behandelt ook het belang van XPath om XSLT-conversiecode te ontwikkelen:
De term ‘XSLT’ wordt gegenereerd door twee woorden te combineren, namelijk ‘XSL’ en ‘T’, ‘XSL’ is de korte vorm van ‘Extensible Stylesheet-taal’ en ‘T’ is een korte vorm van ‘Transformatie’.
Dus in feite is XSLT een transformatietaal die wordt gebruikt om XML-brondocumenten te transformeren / converteren naar XML-documenten of naar andere formaten zoals HTML, PDF met behulp van XSL-FO (Formatting Objects), enz.
Wat je leert:
Inleiding tot XSLT
Transformatie gebeurt met behulp van de XSLT-processor (zoals Saxon, Xalan). Deze XSLT-processor neemt een of meer XML-documenten als bron met een XSLT-bestand waarin XSLT-code is geschreven en de resultaat- / uitvoerdocumenten worden later gegenereerd, zoals weergegeven in het onderstaande diagram.
De XSLT-processor parseert de XML-brondocumenten door X-Path te gebruiken om door verschillende bronelementen te navigeren, beginnend bij het root-element tot het einde van de documenten.
Aanbevolen literatuur => Alles wat u moet weten X-pad
XSLT-transformatie
Voor het starten van de transformatie hebben we één XML-document nodig waarop de XSLT-code zal draaien, het XSLT-codebestand zelf en de tool of software met XSLT-processor (u kunt elke gratis versie of proefversie van de software gebruiken voor leerdoeleinden).
# 1) XML-code
Hieronder vindt u de XML-broncode waarop de XSLT-code zal worden uitgevoerd.
Bestandsnaam: Books.xml
# 2) XSLT-code
Hieronder vindt u de XSLT-code op basis waarvan wordt uitgevoerd op het bovenstaande XML-document.
Bestandsnaam: Books.xsl
# 3) Resultaat / uitvoercode
De onderstaande code wordt geproduceerd na gebruik van de XSLT-code op het bovenstaande XML-document.
# 4) Bekijk resultaat / output in webbrowser
Boeken:
Boek-ID | Boeknaam | Auteur naam | Uitgeverij | Prijs | Editie |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $ 40 | 4e |
3741122298 | Hoofd eerst Java | Kathy Sierra | O'reilly | $ 19 | 1e |
9987436700 | SQL De complete referentie | James R. Groff | McGraw-Hill | $ 45 | 3e |
XSLT-elementen
Om de bovenstaande XSLT-code te begrijpen en deze werkt, moeten we eerst de verschillende XSLT-elementen en hun attributen begrijpen.
# 1) OF
Elke XSLT-code moet beginnen met het root-element of
Attributen:
- @xmlns: xsl: Verbindt XSLT-document met XSLT-standaard.
- @versie: Definieert de versie van de XSLT-code voor de parser.
#twee)
Deze declaratie definieert een set regels die worden toegepast om het geselecteerde invoerelement van het brondocument te verwerken of om te zetten naar de gedefinieerde doelelementregels van de uitvoerdocumenten.
In principe zijn er twee soorten sjablonen beschikbaar volgens hun kenmerken:
(i) Genoemde sjabloon: Als het xsl: template-element een @name-attribuut bevat, wordt dit Named Template genoemd.
Benoemde sjablonen worden aangeroepen door het element xsl: call-template.
(ii) Match-sjabloon: Het xsl: template-element bevat @match-attribuut dat een overeenkomend patroon of XPath bevat dat is toegepast op de invoerknooppunten.
Match-sjablonen worden aangeroepen door het xsl: apply-template-element.
xsl: template-element moet een @ match-attribuut of @name-attribuut hebben of beide. Een xsl: template-element dat geen match-attribuut heeft, mag geen mode-attribuut en geen prioriteitsattribuut hebben.
Laten we de bovenstaande XSLT (
naar) XSLT-code gebaseerd op Match Template met. Zie hieronder geel en grijs gemarkeerde gewijzigde code, het zal hetzelfde bovenstaande output resultaat opleveren.
Raadpleeg de schermafbeelding voor het gemarkeerde gebied:
b) XSLT-code op basis van de Named Template met. Zie hieronder geel en grijs gemarkeerde gewijzigde code, het zal hetzelfde bovenstaande output resultaat opleveren.
Raadpleeg de schermafbeelding voor het gemarkeerde gebied:
youtube muziekvideo's gratis downloadsoftware
# 3)
De processor zal alle sjablonen zoeken en toepassen waarvoor XPath is gedefinieerd in het @select-attribuut.
Het @mode attribuut wordt ook gebruikt als we meer dan één manier van output willen geven met dezelfde input content.
# 4)
De processor zal een oproep doen naar de sjablonen met waarde binnen het kenmerk @name (vereist).
element wordt gebruikt om parameters door te geven aan de sjabloon.
# 5)
Geef de tekenreeks / tekstwaarde op met betrekking tot de XPath-expressie die is gedefinieerd in het @select-attribuut, zoals gedefinieerd in de bovenstaande code.
Dit geeft de waarde van de boeknaam.
# 6): Herhaling
Dit verwerkt de instructies voor elke set knooppunten (xpath gedefinieerd in @select (vereist) attribuut) in de gesorteerde volgorde.
De bovenstaande code betekent voor elke knooppuntenset winkel / boek:
/ winkel / boek (1)
/ winkel / boek (2)
/ winkel / boek (3)
kan ook worden gebruikt als een kind van xsl: for-each om de sorteervolgorde te definiëren.
# 7): Voorwaardelijke verwerking
De xsl: if-instructies worden alleen verwerkt als de Booleaanse waarde van het @test-attribuut waar is, anders wordt de instructie niet geëvalueerd en wordt de lege reeks geretourneerd.
Resultaat: Voorwaarde waar: het aantal boeken is meer dan twee.
Hier is de count () de vooraf gedefinieerde functie.
# 8): Verwerking van alternatieve voorwaarden
xsl: kies meerdere gevallen voor verschillende condities die worden getest binnen @test attribuut van de xsl: when elementen, de testconditie die als eerste uitkomt onder alle xsl: when, die als eerste worden verwerkt en er is een optionele xls: anders element zodat als geen van de conditietests uitkomt, deze xsl: anders wordt overwogen.
Resultaat: Voorwaarde waar: telling van het boek is drie.
# 9)
xsl: copy werkt op contextitem, d.w.z. als dat een knooppunt is, kopieert het het contextknooppunt naar het nieuw gegenereerde knooppunt en dit zal de kinderen van het contextknooppunt niet kopiëren. Om deze reden wordt dit een ondiepe kopie genoemd. In tegenstelling tot xsl: copy-of -element heeft het xsl: copy niet het @ select-attribuut.
In de onderstaande code worden de contextitems naar uitvoer gekopieerd en worden alle onderliggende items recursief aangeroepen en gekopieerd door de xsl: apply-sjabloon.
knooppunt () | @ * Staat voor alle knooppunten en al hun attributen recursief.
Resultaat: Hiermee worden alle knooppunten en attributen van het brondocument recursief naar het uitvoerdocument gekopieerd, d.w.z. het zal een exacte kopie van het brondocument creëren.
# 10)
xsl: copy-of kopieert standaard de reeks knooppunten met al zijn kinderen en attributen recursief, vanwege deze aard wordt dit ook wel diep kopiëren genoemd. @select-attribuut is vereist voor de evaluatie van XPath.
Resultaat: Hiermee worden alle knooppunten en attributen van het brondocument recursief naar het uitvoerdocument gekopieerd, d.w.z. het zal een exacte kopie van het brondocument creëren.
Staat voor een kopie van het huidige knooppunt en het huidige kenmerk.
Beste VPN voor Amazon Fire TV Stick
#elf)
Dit element wordt gebruikt om een opmerking bij het doelresultaat te schrijven. Alle tekstinhoud naast deze tag wordt afgedrukt als uitvoer met opmerkingen.
Dit wordt afgedrukt om uit te voeren als commentaarknooppunt.
Resultaat:
# 12)
Dit genereert een tekstknooppunt naar het resultaatdocument, de waarde in de xsl: text wordt afgedrukt als een tekenreeks om uit te voeren.
Dit is een
tekstregel.
Uitgang:
Dit is een
tekstregel.
# 13)
Dit genereert een element voor het resultaatdocument met de naam die wordt vermeld in het @name-attribuut. Het naamkenmerk is het vereiste kenmerk.
Resultaat: 5350192956
# 14)
Dit genereert een attribuut voor het bovenliggende element in het resultaatdocument. De naam van het attribuut wordt gedefinieerd door het attribuut name en de waarde van het attribuut wordt berekend door het XPath dat wordt vermeld in het selectattribuut zoals gegeven in de onderstaande code. Het naamkenmerk is het vereiste kenmerk.
Resultaat:
#vijftien)
Dit element zal het geselecteerde knooppunt op volgorde sorteren in oplopende of aflopende richting. Het knooppunt of XPath wordt gegeven via het @select-attribuut en de sorteerrichting wordt bepaald door het @order-attribuut.
In de onderstaande code krijgen we alle boekenlijst volgens de boeknaam in alfabetische volgorde.
Raadpleeg deze schermafbeelding voor het gemarkeerde gebied:
Resultaat: De onderstaande lijst bevat de boeknamen in alfabetische volgorde, d.w.z. in oplopende volgorde.
Boeken:
Boek-ID | Boeknaam | Auteur naam | Uitgeverij | Prijs | Editie |
---|---|---|---|---|---|
3741122298 | Hoofd eerst Java | Kathy Sierra | O'reilly | $ 19 | 1e |
9987436700 | SQL De complete referentie | James R. Groff | McGraw-Hill | $ 45 | 3e |
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $ 40 | 4e |
# 16)
Dit element declareert een variabele die een waarde bevat. Een variabele kan een globale variabele of een lokale variabele zijn. De naam van de variabele wordt gedefinieerd door het @name-attribuut en de waarde die deze variabele zal bevatten, wordt gedefinieerd door het @select-attribuut.
De toegang tot de globale variabele is globaal, d.w.z. de variabelen kunnen binnen elk element worden aangeroepen en blijven toegankelijk binnen het stylesheet.
Om een globale variabele te definiëren, hoeven we alleen maar aan te geven dat naast het root-element van het stylesheet, zoals weergegeven in de onderstaande code in het geel gemarkeerd, de variabele ‘SecondBook’ de globale variabele is en de naam van het tweede boek bevat.
De toegang van de lokale variabele is lokaal tot het element waarin deze is gedefinieerd, dat wil zeggen dat die variabele niet toegankelijk zou zijn buiten het element waarin deze is gedefinieerd, zoals weergegeven in de onderstaande code die grijs gemarkeerd is, de variabele 'eerste boek' is een lokale variabele en het bevat de naam van het eerste boek.
Om de globale variabele aan te roepen naar de lokale variabele, wordt het Dollar-symbool ($) gebruikt voor de naam van de variabele, zoals hieronder weergegeven in geel gemarkeerd
Raadpleeg de schermafbeelding voor het gemarkeerde gebied:
Resultaat:
Naam eerste boek: XSLT Programmer’s Reference
Naam tweede boek: Head First Java
# 17)
Dit element wordt gebruikt om sleutels te declareren, voor de overeenkomende patroonwaarden met die specifieke sleutel.
Naam is een provider voor die sleutel op basis van @name-attribuut (“ get-publisher “), Die later wordt gebruikt in de functie key (). @match-attribuut wordt geleverd om het invoerknooppunt te indexeren door XPath-expressies (“ boek “), Zoals in het onderstaande geel gemarkeerde @match wordt gebruikt om te indexeren op alle boeken die in de winkel beschikbaar zijn.
Ten opzichte van het @match-attribuut wordt het @use-attribuut gebruikt, het declareert het knooppunt om de waarde voor die sleutel op te halen via XPath-expressie ('publisher').
Stel nu dat als we de details van het boek nodig hebben dat alleen door ‘Wrox’ uitgever wordt gepubliceerd, we die waarde gemakkelijk kunnen verkrijgen via xsl: key-element door een sleutel-waarde-paar te maken.
key (‘get-publisher’, ‘Wrox’) Key () heeft twee parameters, de eerste is de naam van de sleutel, die in dit geval ‘get-publisher’ is, en de tweede is de stringwaarde die moet worden gezocht, in ons geval is dit ‘Wrox’.
Raadpleeg de schermafbeelding voor het gemarkeerde gebied:
Resultaat:
Resultaat / HTML-weergave:
Boeken:
Boek-ID | Boeknaam | Auteur naam | Uitgeverij | Prijs | Editie |
---|---|---|---|---|---|
5350192956 | XSLT Programmer's Reference | Michael Kay | Wrox | $ 40 | 4e |
# 18)
Dit element wordt gebruikt voor foutopsporing bij XSLT-ontwikkeling. Het element geeft zijn output naar het standaard outputscherm van de applicatie.
Het @terminate-attribuut wordt gebruikt met twee waarden, ‘ja’ of ‘nee’. Als de waarde is ingesteld op ‘ja’, wordt de parser onmiddellijk beëindigd zodra aan de testvoorwaarde is voldaan om het bericht te laten uitvoeren.
Laten we, om dit te begrijpen, aannemen dat als in ons invoerdocument het prijselement per ongeluk leeg raakt, zoals in de onderstaande code, de verwerking onmiddellijk moet stoppen zodra de processor het lege prijselement tegenkomt, wat gemakkelijk kan worden bereikt door xsl te gebruiken: bericht in de if-testconditie zoals in de onderstaande XSLT-code.
De foutopsporingswaarschuwing wordt weergegeven door het standaardscherm van de toepassing: Verwerking beëindigd door xsl: bericht op regel 21.
XML-code invoeren:
Verwijs screenshot voor gemarkeerd gebied:
XSLT-code:
Verwijs screenshot voor gemarkeerd gebied:
Resultaat: Houd er rekening mee dat zodra de parser het lege prijskaartje tegenkomt, deze de verwerking onmiddellijk beëindigt, waardoor de sluitingstags van, en zou niet aan het einde van het bestand komen.
Verwijs screenshot voor gemarkeerd gebied:
# 19) &
element definieert de parameter voor sjabloon als deze binnenin gedefinieerd is. Het kan ofwel binnen worden gedefinieerd als de globale parameter of binnen als de lokale parameter voor die sjabloon.
De waarde van de wordt doorgegeven / geleverd wanneer de sjabloon wordt aangeroepen door of.
het geeft de waarde van de parameter die in de sjabloon is gedefinieerd door. Attribuut zoals @name bevat de naam van de parameter die moet overeenkomen met het @name-attribuut van het element. @Select attribuut wordt gebruikt om een waarde voor die parameter in te stellen.
Om de waarde van de parameter op te halen, wordt hetzelfde gebruikt als een variabel dollarteken ($).
de beste spionage-app voor Android
XML-broncode:
XSLT-code:
Verwijs screenshot voor het gemarkeerde gebied:
Resultaat output:
#twintig)
wordt gebruikt om een andere stylesheet-module in ons huidige stylesheet te importeren. Dit helpt bij het bereiken van een modulaire XSLT-ontwikkelingsaanpak.
Na het importeren zijn alle sjablonen beschikbaar voor gebruik. De prioriteit van de sjablonen die zijn gedefinieerd in de bovenliggende stylesheet (die een ander stylesheet importeert) is hoger dan die van de geïmporteerde stylesheet (die wordt geïmporteerd door de bovenliggende stylesheet).
Als een ander stylesheet ook dezelfde naamsjabloon heeft als gedefinieerd in de sjabloon die wordt geïmporteerd, worden de buitenlandse sjablonen overschreven door uw eigen sjabloon.
Attribuut @href wordt gebruikt als de URI van de stylesheet die u wilt importeren.
#eenentwintig)
Hetzelfde als de bovenstaande xsl: import, helpt ook bij het bereiken van een modulaire XSLT-ontwikkelingsaanpak. Alle sjablonen die zijn opgenomen door hebben dezelfde prioriteit / prioriteit als die van het aanroepende stylesheet. Het is alsof u alle sjablonen van een ander stylesheet naar uw eigen stylesheet kopieert.
Attribuut @href wordt gebruikt als de URI van de stylesheet die u wilt importeren.
# 22)
Dit element wordt gebruikt om de resultatenboom in het uitvoerbestand te specificeren. Het bevat attributen zoals @method die waarden kunnen hebben als ‘XML’, ‘HTML’, ‘XHTML’ en ‘tekst’ is standaard ‘XML’.
@encoding specificeert de tekencodering die in het uitvoerbestand wordt geleverd, zoals weergegeven in het onderstaande voorbeeldcodering = ”UTF-16 ″, de standaardwaarden voor XML of XHTML kunnen ofwel UTF-8 of UTF-16 zijn. @indent specificeert de inspringing van de XML- of HTML-uitvoercode, voor XML is de standaardwaarde ‘no’ en voor HTML en XHTML is de standaardwaarde ja.
# 2. 3)
Dit element wordt gebruikt voor het strippen (verwijderen) van niet-significante witruimte voor het vermelde bronelement in het @element-attribuut en als we witruimte van al het element willen verwijderen, kunnen we ‘*’ binnen het @elements-attribuut gebruiken.
# 24)
Dit element wordt gebruikt om witruimten voor het vermelde bronelement in het @element-attribuut te behouden en als we witruimte van alle elementen willen behouden, kunnen we ‘*’ binnen het @elements-attribuut gebruiken.
Gevolgtrekking
In dit artikel hebben we dus geleerd over XSLT, veelgebruikte XSLT-elementen, hun gebruik met voorbeeldbron- en doel- / resultaatcode, conversie of transformatie van het bronelement naar het doelelement.
We bespraken ook het belang van XPath om XSLT-conversiecode te ontwikkelen. We hebben de XSL-sjabloonverklaring gezien en de sjabloon die parameters aanroept en doorgeeft. We hebben geleerd om globale en lokale variabelen te declareren, hun gebruik in de XSLT-code en hoe ze te bellen.
We leerden over verschillende branching- of conditionele XSLT-elementen zoals xsl: if, xsl: for-each, xsl: choose. We begrepen het verschil tussen oppervlakkig kopiëren en diep kopiëren, sorteren van knooppunten, foutopsporing van XSLT-code met xsl: message, het verschil tussen benoemde sjabloon en overeenkomstsjablonen en uitvoeropmaak met xsl: output.
Over de auteur : Himanshu P. is een ervaren professional op het gebied van informatietechnologie. Hij heeft met ITC MNC's gewerkt aan cross-business domeinen en meerdere technologieën. Himanshu's favoriete tijdverdrijf is tijdschriften lezen en bloggen.
Aanbevolen literatuur
- Python DateTime-zelfstudie met voorbeelden
- Controleer de zichtbaarheid van webelementen met behulp van verschillende typen WebDriver-opdrachten - Selenium Tutorial # 14
- Elementen zoeken in Chrome- en IE-browsers voor het bouwen van Selenium-scripts - Selenium-zelfstudie # 7
- C # String-zelfstudie - String-methoden met codevoorbeelden
- CSS Selector gebruiken voor het identificeren van webelementen voor Selenium-scripts - Selenium-zelfstudie # 6
- Hoe te werken met Python Dictionary - Tutorial met codevoorbeelden
- Zelfstudie over Java-array-lengte met codevoorbeelden
- Selenium-scripts debuggen met logboeken (Log4j-zelfstudie) - Selenium-zelfstudie # 26