XSLT Tutorial – XSLT Transformations & amp; Nümunələrlə Elementlər

Bu Dərslik XSLT nədir, onun Çevrilmələri, Elementləri və İstifadəsini Nümunə ilə izah edir. Həmçinin XPath-ın XSLT Dönüşüm Kodunu Yaratmaq Əhəmiyyətini əhatə edir:

“XSLT” termini iki sözün, məsələn, 'XSL' və 'T' sözlərinin birləşməsindən əmələ gəlir, 'XSL' ' qısa formasıdır. Genişlənən Üslub Cədvəli Dili' və 'T' 'Transformasiya'nın qısa formasıdır.

Beləliklə, XSLT mənbə XML sənədlərini XML sənədlərinə və ya digər formatlara çevirmək/çevirmək üçün istifadə edilən transformasiya dilidir. HTML, PDF kimi XSL-FO (Formatlaşdırma Obyektləri) və s. istifadə edərək.

XSLT-ə Giriş

Transformasiya XSLT prosessorunun köməyi ilə baş verir ( Sakson, Xalan kimi). Bu XSLT prosessoru bir və ya bir neçə XML sənədini mənbə kimi özündə yazılmış XSLT kodu olan bir XSLT faylı ilə götürür və nəticə/çıxış sənədləri aşağıdakı diaqramda göstərildiyi kimi daha sonra yaradılacaq.

XSLT prosessoru kök elementdən başlayaraq sənədlərin sonuna qədər müxtəlif mənbə elementləri üzərində hərəkət etmək üçün X-Path istifadə edərək mənbə XML sənədlərini təhlil edir.

X-Path

XSLT Transformasiyası haqqında bilməli olduğunuz hər şey

Transformasiyaya başlamaq üçün bizə XSLT kodunun işləyəcəyi bir XML sənədi lazımdır, XSLT kod faylının özü və XSLT prosessoru olan alət və ya proqram təminatı (Siz proqramın istənilən pulsuz versiyasından və ya sınaq versiyasından istifadə edə bilərsiniz.Aşağıdakı kodda olduğu kimi qiymət elementinin təsadüfən boşaldığını sənədləşdirin, sonra prosessor boş qiymət elementi ilə qarşılaşan kimi emal dərhal dayandırılmalıdır. XSLT kodu.

Debugger xəbərdarlığı tətbiqin standart ekranı tərəfindən göstərilir: Emal 21-ci sətirdə xsl:message tərəfindən dayandırıldı.

XML kodunu daxil edin:

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

Vurğulanmış sahə üçün skrinşota baxın:

XSLT Kodu:

Books:-

Terminating: price element is empty.
Book IDBook NameAuthor NamePublisherPriceEdition

Vurğulanmış sahə üçün skrinşota baxın:

Nəticə: Nəzərə alın ki, təhlilçi boş qiymət etiketi ilə qarşılaşan kimi, o, prosesi dərhal dayandırır, ona görə ki, bağlanma teqləri faylın sonunda gəlmir.

Books:-

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

Vurğulanmış sahə üçün skrinşota baxın:

#19) &

elementi daxilində müəyyən edilmişsə, şablon üçün parametri təyin edir. O, istər qlobal parametr kimi daxilində, istərsə də içəridə həmin şablonun yerli parametri kimi müəyyən edilə bilər.

Şablon və ya tərəfindən çağırıldıqda dəyəri ötürülür/təmin edilir. .

daxilində müəyyən edilmiş parametrin qiymətini şablona ötürür. @name kimi atribut elementin @name atributuna uyğun gələn parametrin adını ehtiva edir. @Select atributunu təyin etmək üçün istifadə olunurhəmin parametrə bir dəyər.

Parametrin dəyərini almaq üçün dəyişən dollar işarəsi ($) kimi eyni istifadə olunur.

Mənbə XML Kodu:

   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 Kodu:

List of Books Name :-

Book Name:

Vurğulanmış sahə üçün skrinşota baxın:

Nəticə Nəticəsi:

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.

öyrənmə məqsədləri).

#1) XML Kodu

Aşağıda XSLT kodunun işləyəcəyi mənbə XML kodu verilmişdir.

Fayl adı: 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 Kodu

Aşağıda yuxarıdakı XML Sənədində işləyəcək XSLT kodu verilmişdir.

Fayl Adı: Books.xsl

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

#3) Nəticə / Çıxış Kodu

Aşağıdakı kod yuxarıdakı XML sənədində XSLT kodundan istifadə edildikdən sonra hazırlanacaq.

Books:-

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

# 4) Veb Brauzerdə Nəticəyə / Nəticəyə Baxın

Kitablar:

Kitab ID-si Kitabın adı Müəllifin adı Nəşriyyatçı Qiymət Nurs
5350192956 XSLT Proqramçı Referansı Michael Kay Wrox 40$ 4-cü
3741122298 Birinci Java'ya rəhbərlik edin Kati Sierra O'reilly 19$ 1-ci
    436700   
SQL Tam Referans James R. Groff McGraw-Hill 45$ 3-cü

XSLT elementləri

Yuxarıdakıları başa düşmək üçün XSLT kodu və onun işləməsi üçün biz əvvəlcə müxtəlif XSLT elementlərini və onların atributlarını başa düşməliyik.

#1) VEYA

Hər XSLT kodu ya 2 kök elementi ilə başlamalıdır> və ya

Atributlar:

  • @xmlns:xsl: XSLT sənədini XSLT standartı ilə əlaqələndirir.
  • @version: XSLT kodunun versiyasını müəyyən edirparser.

#2)

Bu bəyannamə mənbə sənədin seçilmiş giriş elementini emal etmək və ya çıxış sənədlərinin müəyyən edilmiş hədəf element qaydalarına çevirmək üçün tətbiq olunan qaydalar toplusunu müəyyən edir. .

Əsasən, atributlarına görə iki növ şablon mövcuddur:

(i) Adlandırılmış Şablon: Xsl: şablon elementi olduqda @name atributunu ehtiva edir, sonra bu, Adlandırılmış Şablon adlanır.

Adlandırılmış şablonlar xsl:call-template elementi ilə çağırılır.

(ii) Şablonla uyğunluq: xsl:template elementində uyğun model və ya giriş qovşaqlarında tətbiq olunan XPath olan @match atributu var.

Uyğun şablonlar xsl:apply-template elementi ilə çağırılır.

xsl :şablon elementi ya@match atributuna və ya @name atributuna və ya hər ikisinə malik olmalıdır. Uyğun atributu olmayan xsl:template elementinin mod atributu və prioritet atributu olmamalıdır.

Gəlin yuxarıdakı XSLT-i yenidən yazaq(

a) XSLT kodu ilə Uyğun Şablon əsasında. Aşağıya baxın sarı & amp; boz rənglə vurğulanmış dəyişdirilmiş kod, yuxarıdakı çıxış nəticəsini verəcəkdir.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Vurğulanmış sahə üçün skrinşota baxın:

b) XSLT kodu ilə Adlandırılmış Şablon əsasında. Aşağıya baxın sarı & amp; boz rənglə vurğulanmış dəyişdirilmiş kod, o, yuxarıdakı çıxış nəticəsini verəcək.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Vurğulanmış üçün skrinşota baxınsahə:

#3)

Prosessor @select atributunda müəyyən edilmiş XPath olan bütün şablonları tapacaq və tətbiq edəcək.

@mode atributundan eyni daxiletmə məzmunu ilə birdən çox çıxış yolu vermək istəsək də istifadə olunur.

#4)

Prosessor @name atributunda (tələb olunur) dəyəri olan şablonlara zəng edəcək.

elementi şablona parametrləri ötürmək üçün istifadə olunur.

#5)

Yuxarıdakı kodda müəyyən edildiyi kimi @select atributunda müəyyən edilmiş XPath ifadəsi ilə bağlı sətir/mətn dəyərini təmin edin.

Bu, dəyərini verəcək kitab adı.

#6): Təkrarlama

Bu, çeşidlənmiş ardıcıllıqla hər bir qovşaq dəsti (xpath @select (tələb olunan) atributunda müəyyən edilir) üçün təlimatları emal edəcək.

Yuxarıdakı kod hər bir mağaza/kitab dəsti üçün nəzərdə tutulur:

/mağaza/kitab[1]

/mağaza/kitab[2 ]

/store/book[3]

həmçinin çeşidləmə qaydasını müəyyən etmək üçün xsl:for-each proqramının uşaq elementi kimi istifadə edilə bilər.

#7) : Şərti Qenerasiya

Xsl:if təlimatları yalnız @test atributunun Boolean dəyəri doğru olarsa, işləyəcək, əks halda təlimat qiymətləndirilməyəcək və boş ardıcıllıq qaytarılacaq.

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

Nəticə: Şərt Doğrudur: Kitabların sayı ikidən çoxdur.

Burada count() əvvəlcədən təyin edilmiş funksiyadır.

#8) :XPath-ın qiymətləndirilməsi üçün atribut tələb olunur.
 

Nəticə: Bu, mənbə sənədin bütün qovşaqlarını və atributlarını rekursiv olaraq çıxış sənədinə köçürəcək, yəni dəqiq surəti yaradacaq. mənbə sənədinin.

 

Cari node və cari atributun surəti deməkdir.

#11)

Bu element hədəfə şərh yazmaq üçün istifadə olunur. nəticədə, bu teq tərəfində olan hər hansı mətn məzmunu şərh edilmiş çıxış kimi çap olunacaq.

Bu şərh qovşağı kimi çıxış üçün çap olunacaq.

Nəticə:

#12)

Bu, nəticə sənədinə mətn qovşağı yaradacaq, xsl:text daxilindəki dəyər çıxış üçün sətir kimi çap olunacaq .

Bu,

mətn xəttidir.

Çıxış:

Bu,

mətn xəttidir.

#13)

Bu, nəticə sənədinə aşağıdakı elementi yaradacaq @name atributunda qeyd olunan ad. Ad atributu tələb olunan atributdur.

 

Nəticə: 5350192956

#14)

Bu, nəticə sənədində onun əsas elementinə atribut yaradacaq. Atributun adı ad atributu ilə müəyyən edilir və atributun dəyəri aşağıdakı kodda verildiyi kimi select atributunda qeyd olunan XPath tərəfindən hesablanır. Name atributu tələb olunan atributdur.

 

Nəticə:

#15)

Bu element çeşidlənəcəkseçilmiş node müvafiq olaraq artan və ya enən istiqamətdə ardıcıllıqla. Qovşaq və ya XPath @select atributu vasitəsilə verilir və çeşidləmə istiqaməti @order atributu ilə müəyyən edilir.

Aşağıdakı kodda biz bütün kitabların siyahısını əlifba sırası ilə kitab adına uyğun alacağıq.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Vurğulanmış sahə üçün bu skrinşota baxın:

Nəticə: Aşağıdakı siyahıda kitab adları var əlifba sırası ilə, yəni artan qaydada.

Kitablar:

Kitab ID-si Kitabın adı Müəllifin adı Nəşriyyatçı Qiymət Nəşr
3741122298 Birinci Java'ya rəhbərlik edin Kati Sierra O 'reilly 19$ 1-ci
     436700    
SQL Tam Referans James R. Groff McGraw-Hill 45$ 3-cü
5350192956 XSLT Proqramçı Referansı Michael Kay Wrox 40$ 4-cü

#16)

Bu element elan edir özündə bir dəyər saxlayan dəyişən. Dəyişən qlobal dəyişən və ya yerli dəyişən ola bilər. Dəyişənin adı @name atributu ilə, bu dəyişənin tutacağı dəyər isə @select atributu ilə müəyyən edilir.

Qlobal dəyişənin girişi qlobaldır, yəni dəyişənlər istənilən daxilində çağırıla bilər. elementdir və əlçatan qalırüslub cədvəli daxilində.

Qlobal dəyişəni müəyyən etmək üçün sadəcə bildirməliyik ki, aşağıdakı kodda sarı ilə vurğulanmış şəkildə göstərildiyi kimi üslub cədvəlinin kök elementinin yanında "SecondBook" dəyişəni qlobal dəyişəndir. və o, ikinci kitabın adını saxlayır.

Lokal dəyişənin girişi müəyyən olunduğu element üçün lokaldır, yəni həmin dəyişən aşağıda göstərildiyi kimi müəyyən edildiyi elementdən kənarda əlçatan olmayacaqdır. boz rənglə vurğulanmış aşağıdakı kod, 'birinci kitab' dəyişəni yerli dəyişəndir və o, birinci kitabın adını saxlayır.

Ya qlobal dəyişənə yerli dəyişənə zəng etmək üçün Dollar simvolu. ($) dəyişənin adından əvvəl istifadə olunur, aşağıda sarı rənglə vurğulanmış $ göstərildiyi kimi .

       First Book Name:    Second Book Name:     

Vurğulanmış sahə üçün ekran görüntüsünə baxın:

Nəticə:

Birinci Kitabın Adı: XSLT Proqramçısının Referansı

İkinci Kitabın Adı: Birinci Javanın Başçısı

#17)

Bu element açarları elan etmək üçün, həmin xüsusi açara uyğun gələn nümunə dəyərləri üçün istifadə olunur.

Ad @name atributuna (“1) görə həmin açarın təminatçısıdır> get-publisher “), sonradan key() funksiyası daxilində istifadə olunur. @match atributu XPath ifadələri (“ kitab “) tərəfindən indeks daxiletmə qovşağına verilir, aşağıda sarı ilə vurğulanmış @match mağazada mövcud olan bütün kitabları indeksləşdirmək üçün istifadə olunur.

Nisbi@match atributu, @use atributundan istifadə edilir, o, XPath ifadəsi (“nəşriyyatçı”) vasitəsilə həmin açarın dəyərini əldə etmək üçün qovşağı elan edir.

İndi, fərz edək ki, əgər bizə yalnız 'Wrox' nəşriyyatı tərəfindən nəşr olunan kitabın təfərrüatlarına ehtiyacımız var, onda biz açar-dəyər cütünü yaratmaqla xsl:key elementi vasitəsilə həmin dəyəri asanlıqla əldə edə bilərik.

key('get- publisher', 'Wrox') Key() iki parametr qəbul edir, birincisi açarın adıdır, bu halda 'get-publisher', ikincisi isə bizim vəziyyətimizdə axtarılması lazım olan sətir dəyəridir. 'Wrox'.

Books:-

Book IDBook NameAuthor NamePublisherPriceEdition

Vurğulanmış sahə üçün skrinşota baxın:

Nəticə:

Books:-

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

Nəticə / HTML Görünüşü:

Kitablar:

Kitab ID-si Kitabın adı Müəllifin adı Nəşriyyatçı Qiymət Nurs
5350192956 XSLT Proqramçı Referansı Michael Kay Wrox 40$ 4-cü

#18)

Bu element sazlama məqsədləri üçün istifadə olunur XSLT inkişafı. Element öz çıxışını tətbiqin standart çıxış ekranına verir.

@terminate atributu iki dəyərlə ya "bəli" və ya "yox" ilə istifadə olunur, əgər dəyər "bəli" olaraq təyin edilibsə, o zaman təhlilçi mesajın icrası üçün test şərti təmin edildikdə dərhal başa çatır.

Bunu başa düşmək üçün tutaq ki, girişimizdə əgər varsaAlternativ şərtlərin işlənməsi

xsl:seçmə xsl:when elementlərinin @test atributunda sınaqdan keçirilən müxtəlif şərtlər üçün çoxsaylı səbəblərə malikdir, bütün xsl:when elementləri arasında birinci olan sınaq şərti emal ediləcək birinci və isteğe bağlı xls:otherwise elementi var ki, şərt testlərindən heç biri yerinə yetirilməsə, bu xsl:əks halda nəzərə alınacaq.

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

Nəticə: Şərt Doğru: kitab üçdür.

#9)

xsl:copy kontekst elementi üzərində işləyir, yəni bu qovşaqdırsa, kontekst qovşağını yeni yaradılan qovşağa kopyalayacaq və bu uşaqları kopyalamayacaq. kontekst qovşağının. Bu səbəbdən buna dayaz nüsxə deyilir. Xsl:copy-of elementindən fərqli olaraq, xsl:copy @select atributuna malik deyil.

Aşağıdakı kodda kontekst elementləri çıxışa kopyalanır & bütün uşaq maddələr adlanır & amp; xsl:apply-template tərəfindən rekursiv surətdə kopyalanır.

node()

Yuxarıya keç