XSLT ձեռնարկ – XSLT փոխակերպումներ & AMP; Տարրեր օրինակներով

Այս ձեռնարկը բացատրում է, թե ինչ է XSLT-ը, նրա փոխակերպումները, տարրերը և օգտագործումը օրինակով: Նաև ընդգրկում է XPath-ի կարևորությունը XSLT փոխակերպման կոդը մշակելու համար.

«XSLT» տերմինը ձևավորվում է երկու բառերի համակցմամբ, այսինքն՝ «XSL» և «T», «XSL» բառի կարճ ձևն է։ Extensible Stylesheet Language»-ը և «T»-ը «Transformation»-ի կարճ ձևն է:

Այսպիսով, հիմնականում, XSLT-ը փոխակերպման լեզու է, որն օգտագործվում է սկզբնաղբյուր XML փաստաթղթերը XML փաստաթղթերի կամ այլ ձևաչափերի փոխակերպելու/փոխակերպելու համար: որպես HTML, PDF՝ օգտագործելով XSL-FO (Օբյեկտների ֆորմատավորում) և այլն:

Ներածություն XSLT-ին

Փոխակերպումը տեղի է ունենում XSLT պրոցեսորի օգնությամբ ( ինչպես Սաքսոնը, Քալանը): Այս XSLT պրոցեսորը վերցնում է մեկ կամ մի քանի XML փաստաթղթեր որպես աղբյուր մեկ XSLT ֆայլով, որը պարունակում է XSLT կոդ գրված դրանում, և արդյունքը/ելքային փաստաթղթերը կստեղծվեն ավելի ուշ, ինչպես ցույց է տրված ստորև բերված դիագրամում:

XSLT պրոցեսորը վերլուծում է սկզբնաղբյուր XML փաստաթղթերը՝ օգտագործելով X-Path՝ տարբեր սկզբնաղբյուր տարրերի վրայով նավարկելու համար՝ սկսած արմատային տարրից մինչև փաստաթղթերի վերջը:

Այն ամենը, ինչ դուք պետք է իմանաք X-Path

XSLT փոխակերպման մասին

Տրանսֆորմացիան սկսելու համար մեզ անհրաժեշտ է մեկ XML փաստաթուղթ, որի վրա կաշխատի XSLT կոդը. XSLT կոդային ֆայլը և գործիքը կամ ծրագրաշարը, որն ունի XSLT պրոցեսոր (Դուք կարող եք օգտագործել ծրագրի ցանկացած անվճար տարբերակ կամ փորձնական տարբերակՓաստաթղթում, որ գնի տարրը պատահաբար դատարկվում է, ինչպես ստորև բերված կոդը, այնուհետև մշակումը պետք է անմիջապես դադարեցվի, հենց որ պրոցեսորը հանդիպի դատարկ գնի տարրին, որը կարելի է հեշտությամբ հասնել՝ օգտագործելով xsl:message if test պայմանի ներսում, ինչպես ստորև նշված է: XSLT կոդը:

Վրիպազերծիչի ծանուցումը ցուցադրվում է հավելվածի ստանդարտ էկրանով. Մշակումն ավարտված է xsl:message-ով 21-րդ տողում:

Մուտքագրեք XML կոդը՝

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

Վերադարձեք սքրինշոթին ընդգծված տարածքի համար՝

XSLT կոդ՝

Books:-

Terminating: price element is empty.
Book IDBook NameAuthor NamePublisherPriceEdition

Վերադարձեք ընդգծված տարածքի սքրինշոթին.

Արդյունք. Խնդրում ենք նկատի ունենալ, որ հենց որ վերլուծիչը հանդիպի դատարկ գնի պիտակին, այն անմիջապես դադարեցնում է մշակումը, որի պատճառով փակվող պիտակները , և չեն գա ֆայլի վերջում:

Books:-

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

Վերադարձեք սքրինշոթը ընդգծված տարածքի համար.

#19) & AMP;

տարրը սահմանում է կաղապարի պարամետրը, եթե սահմանված է ներսում: Այն կարող է սահմանվել կա՛մ ներսում՝ որպես գլոբալ պարամետր, կա՛մ ներսում՝ որպես այդ ձևանմուշի տեղական պարամետր:

The-ի արժեքը փոխանցվում/մատակարարվում է, երբ ձևանմուշը կանչվում է կամ -ով: .

այն կաղապարին է փոխանցում -ի ներսում սահմանված պարամետրի արժեքը։ @name-ի նման հատկանիշը պարունակում է այն պարամետրի անունը, որը պետք է համապատասխանի տարրի @name հատկանիշին: Սահմանելու համար օգտագործվում է @Select հատկանիշըայդ պարամետրի արժեքը:

Պարամետրի արժեքը ստանալու համար օգտագործվում է նույնը, ինչ դոլարի փոփոխական նշանը ($):

Աղբյուր 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   

XSLT կոդ՝

List of Books Name :-

Book Name:

Հղում ընդգծված տարածքի սքրինշոթին՝

Արդյունք Արդյունք՝

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 կոդը

Ստորև բերված է սկզբնաղբյուր XML կոդը, որի վրա կաշխատի XSLT կոդը:

Ֆայլի անունը. 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 կոդը

Ստորև ներկայացված է XSLT կոդը, որի հիման վրա կաշխատի վերը նշված XML փաստաթղթի վրա:

Ֆայլի անունը. 2> Books.xsl

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

#3) Արդյունք / Արդյունք Կոդ

Ստորև բերված կոդը կստեղծվի վերը նշված XML փաստաթղթում XSLT կոդը օգտագործելուց հետո:

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) Դիտեք արդյունքը / արդյունքը վեբ դիտարկիչում

Գրքեր.

Գրքի ID Գրքի անունը Հեղինակի անունը Հրատարակիչ Գինը Հրատարակություն
5350192956 XSLT ծրագրավորողի տեղեկանք Մայքլ Քեյ Wrox $40 4-րդ
3741122298 Head First Java Kathy Sierra O'reilly $19 1st
9987436700 SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd

XSLT Elements

Վերոնշյալը հասկանալու համար XSLT կոդը և դրա աշխատանքը, մենք նախ պետք է հասկանանք XSLT տարբեր տարրերը և դրանց ատրիբուտները:

#1) ԿԱՄ

Յուրաքանչյուր XSLT կոդ պետք է սկսվի արմատային տարրից կամ

Հատկանիշներ՝

  • @xmlns:xsl: Միացնում է XSLT փաստաթուղթը XSLT ստանդարտին:
  • @տարբերակ: Սահմանում է XSLT կոդի տարբերակըվերլուծիչ:

#2)

Այս հայտարարությունը սահմանում է կանոնների մի շարք, որոնք կիրառվում են սկզբնաղբյուր փաստաթղթի ընտրված մուտքային տարրը մշակելու կամ փոխակերպելու համար ելքային փաստաթղթերի սահմանված նպատակային տարրերի կանոններին: .

Հիմնականում, երկու տեսակի կաղապարներ հասանելի են ըստ իրենց հատկանիշների.

(i) Անվանված ձևանմուշ. Երբ xsl: կաղապարի տարրը պարունակում է @name հատկանիշը, այնուհետև այն կոչվում է Անվանված ձևանմուշ:

Անվանված ձևանմուշները կանչվում են xsl:call-template տարրով:

(ii) Համապատասխանեցման ձևանմուշ՝ xsl:template տարրը պարունակում է @match հատկանիշը, որը պարունակում է համապատասխան օրինաչափություն կամ XPath, որը կիրառվում է մուտքային հանգույցներում:

Համապատասխանության կաղապարները կոչվում են xsl:apply-template տարրով:

xsl: :template տարրը պետք է ունենա կամ@match հատկանիշ կամ @name հատկանիշ կամ երկուսն էլ: xsl:template տարրը, որը չունի համընկնման հատկանիշ, պետք է չունենա ռեժիմի հատկանիշ և առաջնահերթ հատկանիշ:

Եկեք նորից գրենք վերը նշված XSLT-ը(

ա) XSLT կոդը՝ հիմնված Համապատասխանեցման ձևանմուշի վրա: Տես ստորև դեղին & AMP; մոխրագույն ընդգծված փոխված կոդը, այն կստեղծի վերը նշված նույն արդյունքը:

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Վերադարձեք ընդգծված տարածքի սքրինշոթին.

բ) XSLT կոդը՝ հիմնված Անվանված Կաղապարի վրա: Տես ստորև դեղին & AMP; մոխրագույն ընդգծված փոխված կոդը, այն կստեղծի նույն վերը նշված արդյունքը:

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Վերադարձեք սքրինշոթը՝ ընդգծված լինելու համարտարածք՝

#3)

Պրոցեսորը կգտնի և կկիրառի բոլոր կաղապարները, որոնք ունեն XPath սահմանված @select հատկանիշում:

@mode հատկանիշը նույնպես օգտագործվում է, եթե մենք ցանկանում ենք նույն մուտքային բովանդակությամբ ելքի մեկից ավելի եղանակներ տալ:

#4)

Պրոցեսորը կկանչի @name հատկանիշի մեջ արժեք ունեցող ձևանմուշներին (պարտադիր է):

տարրն օգտագործվում է պարամետրերը կաղապարին փոխանցելու համար:

#5)

Տրամադրեք տող/տեքստային արժեքը @select հատկանիշում սահմանված XPath արտահայտության վերաբերյալ, ինչպես սահմանված է վերը նշված կոդում:

Սա կտա արժեքը գրքի անվանումը:

#6) . Կրկնություն

Սա կմշակի հանգույցների յուրաքանչյուր հավաքածուի հրահանգները (xpath սահմանված @select (պարտադիր) հատկանիշում) տեսակավորված հաջորդականությամբ:

Վերոնշյալ կոդը նշանակում է խանութի/գրքի յուրաքանչյուր հանգույցի հավաքածու՝

/store/book[1]

/store/book[2 ]

/store/book[3]

կարող է օգտագործվել նաև որպես xsl:for-each-ի երեխա՝ տեսակավորման կարգը սահմանելու համար։

#7): Պայմանական մշակում

Xsl:if հրահանգները կմշակվեն միայն այն դեպքում, եթե @test հատկանիշի բուլյան արժեքը ճիշտ կլինի, հակառակ դեպքում հրահանգը չի գնահատվի, և դատարկ հաջորդականությունը կվերադարձվի:

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

Արդյունք. Վիճակը True. Գրքերի թիվը երկուսից ավելի է:

Այստեղ count()-ը նախապես սահմանված ֆունկցիան է:

#8):հատկանիշը պահանջվում է XPath-ի գնահատման համար:
 

Արդյունք. Սա սկզբնաղբյուր փաստաթղթի բոլոր հանգույցներն ու ատրիբուտները ռեկուրսիվ կերպով պատճենելու է ելքային փաստաթղթին, այսինքն՝ կստեղծի ճշգրիտ պատճեն: սկզբնաղբյուր փաստաթղթի:

 

Նշանակում է ընթացիկ հանգույցի և ընթացիկ հատկանիշի պատճենը:

#11)

Այս տարրը օգտագործվում է թիրախին մեկնաբանություն գրելու համար: արդյունքում՝ այս պիտակի կողքին գտնվող ցանկացած տեքստային բովանդակություն կտպվի որպես մեկնաբանված արդյունք:

Սա կտպվի որպես մեկնաբանության հանգույց:

Արդյունք՝

#12)

Սա կստեղծի տեքստային հանգույց արդյունքի փաստաթղթում, xsl:text-ի ներսում արժեքը կտպվի որպես տող՝ ելքի համար: .

Սա

տեքստային տող է։

Ելք.

Սա

տեքստային տող է:

#13)

Սա արդյունքի փաստաթղթում կստեղծի տարր՝ անունը նշված է իր @name հատկանիշում: Անվան հատկանիշը պահանջվող հատկանիշն է:

 

Արդյունք՝ 5350192956

#14)

Սա արդյունքի փաստաթղթում կստեղծի հատկանիշ իր մայր տարրին: Հատկանիշի անունը սահմանվում է name հատկանիշով, իսկ հատկանիշի արժեքը հաշվարկվում է ընտրության հատկանիշում նշված XPath-ով, ինչպես տրված է ստորև բերված կոդում: Անվան հատկանիշը պահանջվող հատկանիշն է:

 

Արդյունք՝

#15)

Այս տարրը կտեսակավորվիընտրված հանգույցը հաջորդականությամբ՝ համապատասխանաբար աճող կամ նվազող ուղղությամբ: Հանգույցը կամ XPath-ը տրվում է @select հատկանիշի միջոցով, իսկ տեսակավորման ուղղությունը սահմանվում է @order հատկանիշով:

Ստորև նշված կոդում մենք կստանանք բոլոր գրքերի ցանկը գրքի անվան համաձայն՝ այբբենական կարգով:

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Տեսեք այս սքրինշոթը ընդգծված տարածքի համար.

Արդյունք. Ստորև բերված ցանկը պարունակում է գրքերի անունները այբբենական կարգով, այսինքն՝ աճման կարգով:

Գրքեր՝

Գրքի ID Գրքի անունը Հեղինակի անունը Հրատարակիչ Գինը Edition
3741122298 Head First Java Kathy Sierra O 'reilly $19 1st
9987436700 SQL The Complete Reference James R. Groff McGraw-Hill $45 3rd
5350192956 XSLT ծրագրավորողի տեղեկանք Michael Kay Wrox $40 4th

#16)

Այս տարրը հայտարարում է փոփոխական, որն իր մեջ արժեք ունի: Փոփոխականը կարող է լինել գլոբալ փոփոխական կամ տեղական փոփոխական: Փոփոխականի անունը սահմանվում է @name հատկանիշով, իսկ արժեքը, որը կպահի այս փոփոխականը, սահմանվում է @select հատկանիշով:

Գլոբալ փոփոխականի հասանելիությունը գլոբալ է, այսինքն՝ փոփոխականները կարող են կանչվել ցանկացածի ներսում: տարր և մնում է հասանելիոճի թերթիկի ներսում:

Գլոբալ փոփոխական սահմանելու համար մենք պարզապես պետք է հայտարարենք, որ ոճաթերթի արմատային տարրի կողքին, ինչպես ցույց է տրված ստորև նշված կոդի մեջ դեղին ընդգծված, «SecondBook» փոփոխականը գլոբալ փոփոխականն է: և այն կրում է երկրորդ գրքի անվանումը:

Տեղական փոփոխականի հասանելիությունը տեղական է այն տարրին, որում այն ​​սահմանված է, այսինքն՝ այդ փոփոխականը հասանելի չի լինի այն տարրից դուրս, որում այն ​​սահմանված է, ինչպես ցույց է տրված ստորև նշված կոդը, որը մոխրագույն է, ընդգծված է, «առաջին գիրք» փոփոխականը տեղային փոփոխական է և այն կրում է առաջին գրքի անվանումը:

Տեղական փոփոխականին գլոբալ փոփոխականից որևէ մեկին կանչելու համար Դոլարի խորհրդանիշը ($) օգտագործվում է փոփոխականի անունից առաջ, ինչպես ցույց է տրված ստորև՝ դեղին ընդգծված $ ։

       First Book Name:    Second Book Name:     

Տե՛ս ընդգծված տարածքի սքրինշոթը՝

Արդյունք.

Առաջին գրքի անվանումը. XSLT ծրագրավորողի տեղեկանք

Երկրորդ գրքի անունը. գլխավորը առաջին Java

#17)

Այս տարրը օգտագործվում է ստեղները հայտարարելու համար՝ տվյալ ստեղնի հետ համապատասխանող օրինաչափության արժեքների համար:

Name-ը այդ բանալու մատակարարն է @name հատկանիշով (« get-publisher “), որը հետագայում օգտագործվում է key() ֆունկցիայի ներսում: @match հատկանիշը տրամադրվում է մուտքային հանգույցի ինդեքսավորմանը XPath արտահայտություններով (« գիրք »), ինչպես ներքևում նշված դեղին ընդգծված @match-ն օգտագործվում է խանութում առկա բոլոր գրքերի ինդեքսավորման համար:

Հարաբերական@match հատկանիշը, օգտագործվում է @use հատկանիշը, այն հայտարարում է հանգույցը, որպեսզի ստանա այդ բանալու արժեքը XPath արտահայտության միջոցով («հրատարակիչ»):

Հիմա, ենթադրենք, եթե մեզ անհրաժեշտ են գրքի մանրամասները, որը հրատարակվել է միայն «Wrox» հրատարակչի կողմից, այնուհետև մենք կարող ենք հեշտությամբ ստանալ այդ արժեքը xsl:key տարրի միջոցով՝ ստեղծելով բանալի-արժեք զույգ:

key('get- հրատարակիչ', 'Wrox') Key()-ն ընդունում է երկու պարամետր, առաջինը բանալու անունն է, որն այս դեպքում «get-publisher» է, երկրորդը՝ տողի արժեքը, որը պետք է որոնել, որը մեր դեպքում «Wrox»:

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Տեսեք ընդգծված տարածքի սքրինշոթը՝

Արդյունք՝

Books:-

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

Արդյունք / HTML դիտում.

Գրքեր.

Գրքի ID Գրքի անունը Հեղինակի անունը Հրատարակիչ Գինը Հրատարակություն
5350192956 XSLT ծրագրավորողի տեղեկանք Մայքլ Քեյ Wrox $40 4-րդ

#18)

Այս տարրն օգտագործվում է վրիպազերծման նպատակով XSLT զարգացում. Տարրը տալիս է իր ելքը հավելվածի ստանդարտ ելքային էկրանին:

@terminate հատկանիշն օգտագործվում է երկու արժեքով կամ «այո» կամ «ոչ», եթե արժեքը սահմանված է «այո», ապա վերլուծիչը անմիջապես ավարտվում է, հենց որ թեստային պայմանը բավարարվում է, որպեսզի հաղորդագրությունը կատարվի:

Սա հասկանալու համար ենթադրենք, եթե մեր մուտքագրում էԱյլընտրանքային պայմանների մշակումը

xsl:choose ունի բազմաթիվ պատճառներ տարբեր պայմանների համար, որոնք փորձարկվում են xsl:when տարրերի @test հատկանիշի ներսում, փորձարկման պայմանը, որն առաջին հերթին իրականանում է բոլոր xsl:when, որոնք մշակվելու են: սկզբում և կա կամընտիր xls:otherwise տարր, որպեսզի եթե պայմանի թեստերից ոչ մեկը չի իրականանում, ապա այս xsl:otherwise կքննարկվի:

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

Արդյունք. Condition True: Count of the գիրքը երեքն է:

#9)

xsl:copy-ն աշխատում է համատեքստի տարրի վրա, այսինքն, եթե դա հանգույց է, ապա այն կպատճենի համատեքստի հանգույցը նոր ստեղծված հանգույցին, և սա չի պատճենի երեխաներին: համատեքստի հանգույցի. Այս պատճառով սա կոչվում է մակերեսային պատճեն: Ի տարբերություն xsl:copy-of տարրի, xsl:copy-ը չունի @select հատկանիշը:

Ստորև նշված կոդում համատեքստի տարրերը պատճենվում են ելքի համար & բոլոր մանկական իրերը կոչվում են & AMP; պատճենված է xsl:apply-template-ով ռեկուրսիվ կերպով:

node()

Գնալ վեր