XSLT Tutorial - XSLT Veguherandinên & amp; Hêmanên Bi Nimûne

Ev Tutorial XSLT çi ye, Veguhertin, Hêman û Bikaranîna wê bi Mînak re rave dike. Di heman demê de Girîngiya XPath ji bo Pêşxistina Koda Veguheztina XSLT vedigire:

Terma "XSLT" bi berhevkirina du peyvan, ango 'XSL' û 'T' tê çêkirin, 'XSL' forma kurt a ' ye. Zimanê Şêweya Berfirehkirî" û "T" formeke kurt a "Veguherandinê" ye.

Ji ber vê yekê, di bingeh de, XSLT zimanek veguherînê ye ku ji bo veguherandin/veguherandina belgeyên XML-ya çavkaniyê ji bo belgeyên XML an jî bi formên din ên wekî wekî HTML, PDF bi karanîna XSL-FO (Formakirina Tiştan) hwd.

Destpêka XSLT

Veguhertin bi alîkariya pêvajoya XSLT pêk tê ( wek Saxon, Xalan). Ev pêvajoya XSLT yek an çend belgeyên XML wekî çavkaniyek bi yek pelê XSLT digire ku koda XSLT tê de hatî nivîsandin û belgeyên encam/derketin dê paşê çêbibin wekî ku di diagrama jêrîn de tê xuyang kirin.

Pêvajoya XSLT belgeyên XML-ya çavkaniyê bi kar tîne X-Rêya ku li ser hêmanên çavkaniyê yên cihê bigere ji hêmana bingehîn heya dawiya belgeyan.

Tiştê ku Hûn Di derbarê X-Path

Veguherîna XSLT de Bizanibin

Ji bo destpêkirina veguhertinê em hewceyê yek belgeyek XML-ê ya ku koda XSLT li ser wê bixebite, hewce dike. Pelê kodê XSLT bixwe û amûr an nermalava xwedan pêvajoyek XSLT (Hûn dikarin guhertoyek belaş an guhertoyek ceribandinê ya nermalavê bikar bînin ji bobelgeya hêmana bihayê bi xeletî tê vala kirin mîna ku di koda jêrîn de, wê hingê pêdivî ye ku pêvajo tavilê raweste gava ku pêvajo bi hêmana bihayê vala ya ku bi hêsanî dikare bi karanîna xsl: peyama di hundurê şerta testê ya jêrîn de wekî jêrîn were bidestxistin, were sekinandin. Koda XSLT.

Hişyariya debugerê ji hêla ekrana standard a serîlêdanê ve tê xuyang kirin: Pêvajo ji hêla xsl:message ve di rêza 21-ê de bi dawî bû.

Koda XML têkevin:

 SQL The Complete Reference James R. Groff McGraw-Hill  3rd 

Ji bo qada ronîkirî dîmena dîmenê binihêrin:

Koda XSLT:

Books:-

Terminating: price element is empty.
Book IDBook NameAuthor NamePublisherPriceEdition

Ji bo qada ronîkirî serî li dîmena dîmenê bidin:

Encam: Ji kerema xwe bala xwe bidin ku gava parser bi etîketa bihayê vala re rû bi rû bimîne, ew tavilê pêvajoyê diqedîne, ji ber ku etîketên girtinê yên , û dê nekevin dawiya pelê.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition
5350192956XSLT Programmer's ReferenceMichael KayWrox$404th
3741122298Head First JavaKathy SierraO'reilly$191st

Ji bo qada ronîkirî dîmena dîmenê binihêrin:

# 19) & amp; Elementa

heke di hundurê de were destnîşankirin, pîvana şablonê diyar dike. Ew dikare di hundurê de wekî pîvana gerdûnî an jî di hundurê de wekî pîvana herêmî ya wê şablonê were pênase kirin.

Dema ku şablon ji hêla an ve tê gazî kirin nirxa nirxê tê derbas kirin/darkirin. .

ew nirxa parametreya ku di hundurê de hatiye diyarkirin re derbasî şablonê dike. Taybetmendiya mîna @name navê pîvanê heye ku divê bi taybetmendiya @name ya hêmanê re têkildar be. Taybetmendiya @Select ji bo danînê tê bikar anînnirxek ji bo wê parametreyê.

Ji bo girtina nirxa pîvanê heman nîşana dolarê ya guhêrbar($) tê bikaranîn.

Çavkanî Koda 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   

Koda XSLT:

List of Books Name :-

Book Name:

Ji bo qada ronîkirî wêneya dîmenê binihêrin:

Encam:

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.

mebestên hînbûnê).

#1) Koda XML

Li jêr koda çavkaniyê ya XML ya ku koda XSLT li ser wê bixebite heye.

Navê pelê: 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) Koda XSLT

Li jêr koda XSLT ya ku dê li ser Belgeya XML ya jorîn bixebite heye.

Navê Pelê: Books.xsl

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

#3) Encam / Koda Derketinê

Koda jêrîn dê piştî karanîna koda XSLT li ser belgeya XML ya jorîn were hilberandin.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition
5350192956XSLT Programmer's ReferenceMichael KayWrox$404th
3741122298Head First JavaKathy SierraO'reilly$191st
9987436700SQL The Complete ReferenceJames R. GroffMcGraw-Hill$453rd

# 4) Di Geroka Webê de Encam / Derketinê Binêre

Pirtûk:

Nasnameya Pirtûkê Navê Pirtûkê Navê Nivîskar Weşanger Biha Çapan
5350192956 Bernameya Bernameçêkerê XSLT Michael Kay Wrox $40 4em
3741122298 Serê yekem Java Kathy Sierra O'reilly $19 1st
9987436700 SQL Tevahiya Referansa James R. Groff McGraw-Hill 45$ 3yemîn

Hêmanên XSLT

Ji bo fêmkirina jor Koda XSLT û xebata wê, pêşî divê em hêmanên XSLT yên cihêreng û taybetmendiyên wan fam bikin.

#1) OR

Divê her kodek XSLT bi hêmana root dest pê bike an

Taybetmendî:

  • @xmlns:xsl: Belgeya XSLT bi standarda XSLT ve girêdide.
  • @version: Guhertoya koda XSLT ji boparser.

#2)

Ev danezan komek qaîdeyên ku ji bo pêvajokirin an veguheztina hêmana têketina hilbijartî ya belgeya çavkaniyê ji qaîdeyên hêmana armancê diyarkirî yên belgeyên derketinê re diyar dike. .

Di bingeh de, du celeb şablon li gorî taybetmendiyên wan hene:

(i) Şablon bi navkirî: Dema ku hêmana şablonê xsl: taybetmendiya @name dihewîne wê hingê jê re dibêjin Şablonek Navdar.

Şablonên bi navkirî ji hêla xsl:call-şablon ve têne gazî kirin.

(ii) Şablon lihevhatî: Di hêmana xsl:şablonê de taybetmendiya @match heye ku tê de şêweyek lihevhatî an jî XPath li girêkên têketinê tê sepandin.

Şablonên hevberdanê ji hêla xsl:apply-template element ve têne gazî kirin.

xsl Divê hêmana şablonê ya @match an taybetmendiya @name an hem jî hebe. Elementeke xsl:şablon a ku tu taybetmendiya hevberdanê tine ye, divê ne taybetmendiya modê û ne jî taybetmendiya pêşîn hebe.

Werin em XSLT-ya jorîn ji nû ve binivîsin(

a) Koda XSLT li ser bingeha Match Şablon bi . Binêre li jêr zer & amp; Koda guhertî ya gewr ronî kir, ew ê heman encama derana jorîn derxe.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Li dîmenderê ji bo qada ronîkirî binihêrin:

b) Koda XSLT li ser bingeha Şablona Navdar bi . Binêre li jêr zer & amp; Koda guherî ya gewr ronî kir, ew ê heman encama derana jorîn derxe.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Ji bo ronîkirin wêneyê dîmenê binihêrinherêm:

#3)

Pêvajoker dê hemî şablonên ku XPath di taybetmendiya @select de diyarkirî bibînin û bicîh bîne.

Taybetmendiya @mode jî tê bikar anîn ger em bixwazin bi heman naverokê ji yek awayê derketinê zêdetir bidin.

#4)

Pêvajoker dê gazî şablonên ku nirxa wan di hundurê taybetmendiya @name de heye (pêwîst e).

hêmanek ji bo derbaskirina parametreyan ji şablonê re tê bikar anîn.

#5)

Nirxa rêzikan/nivîsê li ser raveka XPathê ya ku di taybetmendiya @select de hatî destnîşan kirin, wekî ku di koda jorîn de hatî destnîşan kirin, peyda bike.

Ev dê nirxê bide navê pirtûkê.

#6) : Dubarekirin

Ev ê talîmatên ji bo her komek girêkan (xpath ku di taybetmendiya @select (pêwîst) de hatî destnîşan kirin) di rêza rêzkirî de pêk bîne.

Koda jorîn tê vê wateyê ku ji bo her komek girêkek dikan/pirtûk tê vê wateyê:

/store/book[1]

/store/book[2 ]

/store/book[3]

herweha dikare wekî zarokek xsl:for-each were bikar anîn da ku rêza rêzkirinê diyar bike.

#7) : Pêvajoya Bi Şert

Têlîmatên xsl:if dê tenê pêvajoyê bike heke nirxa Boolean ya taybetmendiya @test rast be, wekî din dê talîmat neyê nirxandin û rêzika vala were vegerandin.

2">  Condition True: Count of books are more than two.  

Encam: Şert Rast: Hejmara pirtûkan ji duyan zêdetir in.

Li vir jimar() fonksiyona pêşwextkirî ye.

#8) :taybetmendî ji bo nirxandina XPath hewce ye.
 

Encam: Ev ê hemî girêk û taybetmendiyên belgeya çavkaniyê bi paşverû li belgeya derketinê kopî bike, ango ew ê kopiyek tam çêbike. ya belgeya çavkaniyê.

 

Ji bo kopiyek girêka heyî û taybetmendiya niha radiweste.

#11)

Ev hêman ji bo nivîsandina şîroveyekê ji armancê re tê bikar anîn. di encamê de, her naverokek nivîsê ku li kêleka vê tagê ye, dê wekî encamek şîrovekirî were çap kirin.

Ev ê wekî girêka şîrovekirinê were çap kirin.

Encam:

#12)

Ev ê girêkek nivîsê ji belgeya encamê re çêbike, nirxa di hundurê xsl:text de dê wekî rêzek ji bo derketinê were çap kirin. .

Ev

xêza nivîsê ye.

Derketin:

Ev

xêza nivîsê ye.

#13)

Ev ê di belgeya encamê de hêmanek biafirîne. navê ku di taybetmendiya xwe ya @name de tê gotin. Taybetmendiya navê taybetmendiya pêdivî ye.

 

Encam: 5350192956

#14)

Ev ê di belgeya encamê de taybetmendiyek ji hêmana dêûbavê xwe re çêbike. Navê taybetmendiyê ji hêla taybetmendiya navî ve tê destnîşankirin û nirxa taybetmendiyê ji hêla XPath-a ku di taybetmendiya hilbijartî de hatî destnîşan kirin wekî ku di koda jêrîn de hatî destnîşan kirin tê hesibandin. Taybetmendiya navî taybetmendiya pêdivî ye.

 

Encam:

#15)

Ev hêman dê birêkûpêk bikegirêka hilbijartî bi awayê rêzî li gorî rêgeza hilkişîn an daketinê. Girêk an jî XPath bi taybetmendiya @select ve tê dayîn û arastekirina birêkûpêk bi taybetmendiya @order tê diyar kirin.

Di koda jêrîn de em ê lîsteya hemî pirtûkan li gorî navê pirtûkê bi rêza alfabeyî bistînin.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Ji bo qada ronîkirî li vê dîmenê binêre:

Encam: Di lîsteya jêrîn de navên pirtûkê hene. bi rêza alfabetîk ango bi rêza bilindbûnê.

Pirtûk:

Nasnameya pirtûkê Navê Pirtûkê Navê Nivîskar Weşanger Biha Çapa
3741122298 Serê Yekem Java Kathy Sierra O 'reilly $19 1st
9987436700 SQL Tevahiya Referansa James R. Groff McGraw-Hill $45 3yemîn
5350192956 Bernameya Bernameçêkerê XSLT Michael Kay Wrox $40 4emîn

#16)

Ev hêman diyar dike guhêrbarek ku nirxek tê de heye. Guherînek dikare guhêrbarek gerdûnî an guhêrbarek herêmî be. Navê guhêrbar bi taybetmendiya @name û nirxa ku ev guhêrbar wê bigire bi taybetmendiya @select tê destnîşan kirin.

Gihîştina guherbara gerdûnî gerdûnî ye, ango guhêrbar dikarin di nav her yekê de werin gotin. hêman û gihîştî bimînedi nav şêwazê de.

Ji bo danasîna guhêrbarek gerdûnî, tenê pêdivî ye ku em diyar bikin ku li kêleka hêmana bingehîn a şêwazê wekî ku di koda jêrîn de bi rengê zer hatî xuyang kirin, guhêrbar 'SecondBook' guherbara gerdûnî ye. û navê pirtûka duyemîn jî heye.

Gihîştina guherbara herêmî ji hêmana ku tê de hatiye diyarkirin herêmî ye, ango ew guhêrbar dê ji derveyî hêmana ku tê de tê pênase kirin wekî ku di tê xuyangê de tê xuyang kirin re negihîje. koda jêrîn ya ku gewr tê ronî kirin, guhêrbara 'pirtûka yekem' guherbareke herêmî ye û navê pirtûka yekem tê de heye.

Ji bo ku bangî guherbara gerdûnî ya guherbara herêmî bike sembola Dolar ($) berî navê guhêrbar tê bikar anîn, wekî li jêr bi rengê zer tê xuyang kirin $ .

       First Book Name:    Second Book Name:     

Li dîmendera devera ronîkirî binihêrin:

Encam:

Navê Pirtûka Pêşîn: Referansa Bernameçêkerê XSLT

Navê Pirtûka Duyem: Serê Yekem Java

#17)

Ev hêman ji bo ragihandina mifteyan tê bikaranîn, ji bo nirxên nimûneyê lihevhatî bi wê mifteya taybetî re.

Nav ji hêla taybetmendiya @name ve pêşkêşkarê wê mifteyê ye(" get-publisher “), ku paşê di hundurê fonksiyona key() de tê bikar anîn. Taybetmendiya @match ji bo nîşankirina girêka têketinê ji hêla bêjeyên XPath ve tê peyda kirin (" pirtûk "), mîna ya jêrîn ya zer a ronîkirî @match tê bikar anîn da ku li ser hemî pirtûkên ku li firotgehê hene nîşan bide.

Relatîf bitaybetmendiya @match, taybetmendiya @use tê bikar anîn, ew girê dide ku nirxa wê mifteyê bi riya XPath ("weşanger") werbigire.

Niha, bihesibînin heke pêdiviya me bi hûrguliyên pirtûkê heye ku tenê ji hêla weşanxaneya 'Wrox' ve hatî çap kirin, wê hingê em dikarin wê nirxê bi hêsanî bi riya xsl: elementa key bi çêkirina cotek kilît-nirx bi dest bixin.

key('get- weşanger', 'Wrox') Key() du parameteran digire, yekem navê mifteyê ye, ku di vê rewşê de 'get-publisher' e, ya duyemîn nirxa rêzê ye ku hewce dike ku lê bigere ku di rewşa me de ye. 'Wrox'.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Ji bo qada ronîkirî wêneya dîmenê binihêrin:

Encam:

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition
5350192956XSLT Programmer's ReferenceMichael KayWrox$404th

Encam / Dîtina HTML:

Pirtûk:

Nasnameya Pirtûkê Navê Pirtûkê Navê Nivîskar Weşanger Biha Çapan
5350192956 Bernameya Bernameçêkerê XSLT Michael Kay Wrox $40 4emîn

#18)

Ev hêman ji bo mebestên xeletkirinê tê bikaranîn li Pêşveçûna XSLT. Hêman derana xwe dide dîmendera standart a sepanê.

Taybetmendiya @terminate bi du nirxan an 'erê' an jî 'na' tê bikaranîn, heke nirx li ser 'erê' were danîn wê hingê parserker. di cih de bi dawî dibe dema ku şerta testê têr bibe ji bo ku peyam were cîbicîkirin.

Ji bo fêmkirina vê yekê, em bihesibînin ku di têketina me dePêvajoya şertên alternatîf

xsl:hilbijêre ji bo şert û mercên cihêreng ên ku di hundurê @test taybetmendiya xsl:when elementan de têne ceribandin hene, şerta ceribandinê ya ku di nav hemî xsl:when, ku dê bêne hilberandin de yekem rast tê. pêşî û hêmanek xls:wekî din heye ku yek ji ceribandinên şertê ne rast be wê hingê ev xsl:wek din dê were hesibandin.

  Condition True: Count of book is one.   Condition True: Count of book is two.   Condition True: Count of book is three.   No condition match.  

Encam: Şertê Rast: Hejmara pirtûk sê ye.

#9)

xsl:copy li ser babeta kontekstê dixebite, ango heke ew girêk be wê hingê ew ê girêka kontekstê li girêka nû hatî çêkirin kopî bike û ev ê zarokan kopî neke. ya girêka çarçoveyê. Ji ber vê yekê, ji vê yekê re kopiyek hûrgelî tê gotin. Berevajî elementa xsl:copy-of, xsl:copy xwedan taybetmendiya@select nîne.

Di koda jêrîn de, hêmanên çarçoveyê ji bo derketinê têne kopî kirin & hemû tiştên zarokan bi navê & amp; ji hêla xsl:apply-template ve hatî kopî kirin.

node()

بۆ سەرەوە بچوو