xslt tutorial xslt transformations elements with examples
Bu Öğretici XSLT'nin Ne olduğunu, Dönüşümlerini, Öğelerini ve Kullanımını Örneklerle Açıklar. XSLT Dönüşüm Kodu Geliştirmede XPath'in Önemi de ele alınmaktadır:
'XSLT' terimi, 'XSL' ve 'T' gibi iki kelimenin birleştirilmesiyle oluşturulur; 'XSL', 'Genişletilebilir Stil Sayfası Dili' nin kısa biçimidir ve 'T', 'Dönüşüm' ün kısa bir biçimidir.
Dolayısıyla, temelde XSLT, XSL-FO (Biçimlendirme Nesneleri) vb. Kullanarak kaynak XML belgelerini XML belgelerine veya HTML, PDF gibi diğer biçimlere dönüştürmek / dönüştürmek için kullanılan bir dönüştürme dilidir.
Ne öğreneceksin:
XSLT'ye Giriş
Dönüşüm, XSLT işlemcisinin (Saxon, Xalan gibi) yardımıyla gerçekleşir. Bu XSLT işlemci, içinde yazılmış XSLT kodunu içeren bir XSLT dosyasıyla bir veya daha fazla XML belgesini kaynak olarak alır ve sonuç / çıktı belgeleri aşağıdaki diyagramda gösterildiği gibi daha sonra oluşturulur.
XSLT işlemcisi, kök öğeden başlayarak belgelerin sonuna kadar farklı kaynak öğeler üzerinde gezinmek için X-Path kullanarak kaynak XML belgelerini ayrıştırır.
Önerilen Okuma => Bilmeniz Gereken Her Şey X-Yolu
XSLT Dönüşümü
Dönüşüme başlamak için üzerinde XSLT kodunun çalışacağı bir XML belgesine, XSLT kod dosyasının kendisine ve XSLT işlemciye sahip araç veya yazılıma ihtiyacımız var (Yazılımın herhangi bir ücretsiz sürümünü veya deneme sürümünü öğrenim amacıyla kullanabilirsiniz).
# 1) XML Kodu
XSLT kodunun üzerinde çalışacağı kaynak XML kodu aşağıdadır.
Dosya adı: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) XSLT Kodu
Aşağıda, yukarıdaki XML Belgesi üzerinde çalışacak olan XSLT kodu verilmiştir.
Dosya adı: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Sonuç / Çıkış Kodu
Aşağıdaki kod, yukarıdaki XML belgesindeki XSLT kodu kullanıldıktan sonra üretilecektir.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) Web Tarayıcısında Sonucu / Çıktıyı Görüntüle
Kitabın:
Kitap kimliği | Kitap Adı | Yazar Adı | Yayımcı | Fiyat | Baskı |
---|---|---|---|---|---|
5350192956 | XSLT Programcısının Referansı | Michael Kay | Wrox | 40 $ | 4. |
3741122298 | Baş Önce Java | Kathy Sierra | O'reilly | 19 $ | 1 inci |
9987436700 | SQL The Complete Reference | James R. Groff | McGraw-Hill | 45 ABD doları | 3 üncü |
XSLT Öğeleri
Yukarıdaki XSLT kodunu ve işe yaradığını anlamak için önce farklı XSLT öğelerini ve özniteliklerini anlamamız gerekir.
# 1) VEYA
Her XSLT kodu kök öğeyle veya
Öznitellikler:
- @xmlns: xsl: XSLT belgesini XSLT standardına bağlar.
- @version: Ayrıştırıcıya XSLT kodunun sürümünü tanımlar.
#iki)
Bu bildirim, kaynak belgenin seçilen girdi öğesini çıktı belgelerinin tanımlanmış hedef öğe kurallarına işlemek veya dönüştürmek için uygulanan bir dizi kuralı tanımlar.
Temel olarak, niteliklerine göre iki tür şablon mevcuttur:
(i) Adlandırılmış Şablon: Xsl: template öğesi @name özniteliğini içerdiğinde buna Adlandırılmış Şablon denir.
Adlandırılmış şablonlar xsl: call-template öğesi tarafından çağrılır.
(ii) Maç Şablonu: Xsl: template öğesi, giriş düğümlerine uygulanan bir eşleşen desen veya XPath içeren @match niteliğini içerir.
Eşleşme şablonları xsl: apply-template öğesi tarafından çağrılır.
xsl: template öğesi, @ match özniteliğine veya @name özniteliğine veya her ikisine birden sahip olmalıdır. Match özniteliğine sahip olmayan bir xsl: template öğesi, mode özniteliğine ve öncelik özniteliğine sahip olmamalıdır.
Yukarıdaki XSLT'yi yeniden yazalım (
için) Eşleştirme Şablonuna dayalı XSLT kodu. Aşağıdaki sarı ve gri ile vurgulanan değiştirilmiş kodu görün, yukarıdaki çıktı sonucunun aynısını üretecektir.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Vurgulanan alan için ekran görüntüsüne bakın:
b) Adlandırılmış Şablona dayalı XSLT kodu. Aşağıdaki sarı ve gri ile vurgulanan değiştirilmiş kodu görün, yukarıdaki çıktı sonucunun aynısını üretecektir.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Vurgulanan alan için ekran görüntüsüne bakın:
# 3)
İşlemci, @select özniteliğinde XPath tanımlanmış tüm şablonları bulacak ve uygulayacaktır.
@Mode niteliği, aynı girdi içeriğiyle birden fazla çıktı yolu vermek istiyorsak da kullanılır.
# 4)
İşlemci, @name özniteliği içinde değeri olan şablonlara bir çağrı yapacaktır (gerekli).
öğesi, parametreleri şablona iletmek için kullanılır.
android telefonda apk dosyası nasıl açılır
# 5)
Yukarıdaki kodda tanımlandığı gibi, @select özniteliğinde tanımlanan XPath ifadesine ilişkin dize / metin değerini sağlayın.
Bu, kitap adının değerini verecektir.
# 6): Tekrar
Bu, sıralanmış sıradaki her düğüm kümesi için talimatları (@select (gerekli) özniteliğinde tanımlanan x yolu) işleyecektir.
Yukarıdaki kod, her bir mağaza / kitap düğüm kümesi için şu anlama gelir:
/ store / book (1)
/ store / book (2)
/ store / book (3)
sıralama düzenini tanımlamak için xsl: for-each öğesinin alt öğesi olarak da kullanılabilir.
# 7): Koşullu İşleme
Xsl: if yönergeleri yalnızca @test özniteliğinin Boolean değeri doğru olduğunda işlenir, aksi takdirde komut değerlendirilmez ve boş dizi döndürülür.
2'> Condition True: Count of books are more than two.
Sonuç: Koşul Doğru: Kitap sayısı ikiden fazla.
Burada count () önceden tanımlanmış işlevdir.
# 8): Alternatif durum işleme
xsl: select, xsl: when elemanlarının @test özniteliğinde test edilen farklı koşullar için birden fazla durum var, test koşulu tüm xsl: when, bu ilk olarak işlenecek ve isteğe bağlı bir xls var: aksi takdirde eleman böylece koşul testlerinden hiçbiri gerçekleşmezse, bu xsl: aksi dikkate alınacaktır.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Sonuç: Koşul Doğru: Kitabın sayısı üç.
# 9)
xsl: copy bağlam öğesi üzerinde çalışır, yani bu düğümse, bağlam düğümünü yeni oluşturulan düğüme kopyalar ve bu, bağlam düğümünün alt öğelerini kopyalamaz. Bu nedenle buna sığ kopya denir. Xsl: copy-of elemanının aksine, xsl: copy @ select özniteliğine sahip değildir.
Aşağıdaki kodda, bağlam öğeleri çıktıya kopyalanır ve tüm alt öğeler xsl: apply-template tarafından özyinelemeli olarak çağrılır ve kopyalanır.
düğüm () | @ * Tüm düğümleri ve özyinelemeli tüm özniteliklerini ifade eder.
Sonuç: Bu, kaynak belgenin tüm düğümlerini ve özniteliklerini özyinelemeli olarak çıktı belgesine kopyalayacaktır, yani kaynak belgenin tam bir kopyasını oluşturacaktır.
# 10)
xsl: copy-of, düğümlerin dizisini tüm alt öğeleri ve öznitelikleriyle birlikte varsayılan olarak kopyalar, bu doğası nedeniyle buna derin kopyalama da denir. @select özniteliği, XPath'in değerlendirilmesi için gereklidir.
Sonuç: Bu, kaynak belgenin tüm düğümlerini ve özniteliklerini özyinelemeli olarak çıktı belgesine kopyalayacaktır, yani kaynak belgenin tam bir kopyasını oluşturacaktır.
Geçerli düğümün ve mevcut özniteliğin bir kopyasını temsil eder.
#eleven)
Bu eleman, hedef sonuca bir yorum yazmak için kullanılır, bu etiketin yanında bulunan herhangi bir metin içeriği, yorumlanmış çıktı olarak yazdırılacaktır.
kuyruğa alma ve sıradan çıkarma c ++
Bu, açıklama düğümü olarak çıktı almak için yazdırılacaktır.
Sonuç:
# 12)
Bu, sonuç belgesine bir metin düğümü oluşturacaktır, xsl: text içindeki değer, çıktı için bir dizge olarak yazdırılacaktır.
Bu bir
metin satırı.
Çıktı:
Bu bir
metin satırı.
# 13)
Bu, sonuç belgesine @name özniteliğinde belirtilen adla bir öğe oluşturacaktır. Name özniteliği, gerekli özniteliktir.
Sonuç: 5350192956
# 14)
Bu, sonuç belgesindeki üst öğesine bir öznitelik oluşturacaktır. Özniteliğin adı, name özniteliğiyle tanımlanır ve özniteliğin değeri, aşağıdaki kodda verildiği gibi select özniteliğinde belirtilen XPath tarafından hesaplanır. Name özniteliği, gerekli özniteliktir.
Sonuç:
# onbeş)
Bu eleman, seçilen düğümü artan veya azalan yönde sırayla sıralayacaktır. Düğüm veya XPath, @select özniteliği aracılığıyla verilir ve sıralamanın yönü, @order özniteliğiyle tanımlanır.
Aşağıdaki kodda, kitabın adına göre alfabetik sırayla tüm kitap listesini alacağız.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Vurgulanan alan için şu ekran görüntüsüne bakın:
Sonuç: Aşağıdaki liste, kitap adlarını alfabetik sırayla, yani artan sırada içerir.
Kitabın:
Kitap kimliği | Kitap Adı | Yazar Adı | Yayımcı | Fiyat | Baskı |
---|---|---|---|---|---|
3741122298 | Baş Önce Java | Kathy Sierra | O'reilly | 19 $ | 1 inci |
9987436700 | SQL The Complete Reference | James R. Groff | McGraw-Hill | 45 ABD doları | 3 üncü |
5350192956 | XSLT Programcısının Referansı | Michael Kay | Wrox | 40 $ | 4. |
# 16)
Bu eleman, içinde bir değer tutan bir değişken bildirir. Bir değişken, global bir değişken veya yerel bir değişken olabilir. Değişkenin adı @name özniteliğiyle tanımlanır ve bu değişkenin tutacağı değer, @select özniteliğiyle tanımlanır.
Global değişkenin erişimi geneldir, yani değişkenler herhangi bir öğe içinde çağrılabilir ve stil sayfası içinde erişilebilir durumda kalabilir.
Global bir değişkeni tanımlamak için, aşağıdaki kodda sarı ile vurgulanmış olarak gösterildiği gibi stil sayfasının kök öğesinin yanında, 'SecondBook' değişkeninin global değişken olduğunu ve ikinci kitabın adını taşıdığını beyan etmemiz yeterlidir.
Yerel değişkenin erişimi, tanımlandığı öğeye yereldir, yani değişken, gri ile vurgulanan aşağıdaki kodda gösterildiği gibi tanımlandığı öğenin dışında erişilemez, 'birinci kitap' değişkeni bir local değişken ve ilk kitabın adını taşır.
Global değişkenden yerel değişkene bir çağrı yapmak için, aşağıda sarı ile vurgulanmış olarak gösterildiği gibi, değişken adından önce Dolar simgesi ($) kullanılır. $ .
First Book Name: Second Book Name:
Vurgulanan alan için ekran görüntüsüne bakın:
Sonuç:
İlk Kitap Adı: XSLT Programcısının Referansı
İkinci Kitap Adı: Önce Baş Java
# 17)
Bu öğe, o belirli anahtarla eşleşen desen değerleri için anahtarları bildirmek için kullanılır.
Ad, @name özniteliğine göre bu anahtarın sağlayıcısıdır (' yayıncı al “), Daha sonra key () işlevinde kullanılır. @match özniteliği, XPath ifadeleri (' kitap “), Aşağıdaki sarı ile vurgulanan @match, mağazadaki tüm kitapların indekslenmesi için kullanılır.
@Match özniteliğine göre, @use özniteliği kullanılır, bu anahtarın değerini XPath ifadesi ('yayıncı') aracılığıyla almak için düğümü bildirir.
Şimdi, kitabın yalnızca 'Wrox' yayıncısı tarafından yayınlanan ayrıntılarına ihtiyacımız olursa, bir anahtar-değer çifti yaparak bu değeri xsl: key element aracılığıyla kolayca elde edebileceğimizi varsayalım.
anahtar ('yayıncı al', 'Wrox') Key () iki parametre alır, ilki anahtarın adıdır ve bu durumda 'get-publisher', ikincisi ise arama yapması gereken dize değeridir ve bizim durumumuzda 'Wrox'.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Vurgulanan alan için ekran görüntüsüne bakın:
Sonuç:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Sonuç / HTML Görünümü:
Kitabın:
Kitap kimliği | Kitap Adı | Yazar Adı | Yayımcı | Fiyat | Baskı |
---|---|---|---|---|---|
5350192956 | XSLT Programcısının Referansı | Michael Kay | Wrox | 40 $ | 4. |
# 18)
Bu öğe, XSLT geliştirmede hata ayıklama amacıyla kullanılır. Eleman çıktısını uygulamanın standart çıktı ekranına verir.
@Terminate özniteliği, 'evet' veya 'hayır' olmak üzere iki değerle kullanılır; değer 'evet' olarak ayarlanırsa, mesajın yürütülmesi için test koşulu yerine getirilir getirilmez ayrıştırıcı hemen sonlandırılır.
Bunu anlamak için, girdi belgemizde fiyat unsurunun aşağıdaki kodda olduğu gibi yanlışlıkla boşaldığını varsayalım, o zaman işlemci xsl kullanılarak kolayca elde edilebilen boş fiyat unsuruyla karşılaştığı anda işlemin derhal durması gerekir: Aşağıdaki XSLT kodunda olduğu gibi if test koşulunun içinde mesaj.
Hata ayıklayıcı uyarısı, uygulama standart ekranında gösterilir: İşlem, 21. satırda xsl: message tarafından sonlandırıldı.
XML kodunu girin:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Vurgulanan alan için ekran görüntüsüne bakın:
XSLT Kodu:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Vurgulanan alan için ekran görüntüsüne bakın:
Sonuç: Lütfen, ayrıştırıcının boş fiyat etiketiyle karşılaştığı anda, işlemeyi derhal sonlandırdığını unutmayın.ve dosyanın sonuna gelmeyecekti.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st Vurgulanan alan için ekran görüntüsüne bakın:

# 19) ve
öğesi, içinde tanımlanmışsa şablon için parametreyi tanımlar. İçeride global parametre olarak veya içinde o şablona yerel parametre olarak tanımlanabilir.
Şablon tarafından çağrıldığında değeri iletilir / sağlanır.

şablonun içinde tanımlanan parametrenin değerini iletir. @Name gibi öznitelik, öğenin @name özniteliğiyle eşleşmesi gereken parametrenin adını içerir. @Select özniteliği bu parametreye bir değer ayarlamak için kullanılır.

Değişken dolar işareti ($) gibi parametrenin değerini aynı şekilde getirmek için kullanılır.

Kaynak XML Kodu:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
XSLT Kodu:
List of Books Name :-
Book Name:
Vurgulanan alan için ekran görüntüsüne bakın:

Sonuç Çıktısı:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference