XSLT Hızlı Kılavuz

XSL

XSLT'yi öğrenmeden önce, E'nin kısaltması olan XSL'yi anlamalıyızXgerilebilir Sstil sayfası Language. CSS, HTML'ye olduğu için XML'e benzer.

XSL ihtiyacı

HTML belgesi olması durumunda, etiketler tablo, div ve span gibi önceden tanımlanmıştır; ve tarayıcı onlara nasıl stil ekleneceğini bilir ve CSS stillerini kullananları gösterir. Ancak XML belgeleri söz konusu olduğunda, etiketler önceden tanımlanmamıştır. Bir XML belgesini anlamak ve biçimlendirmek için World Wide Web Consortium (W3C), XML tabanlı Stil Sayfası Dili olarak hareket edebilen XSL'yi geliştirdi. Bir XSL belgesi, bir tarayıcının bir XML belgesini nasıl oluşturması gerektiğini belirtir.

Aşağıda XSL'nin ana bölümleri verilmiştir -

  • XSLT - XML ​​belgesini diğer çeşitli belge türlerine dönüştürmek için kullanılır.

  • XPath - XML ​​belgesinde gezinmek için kullanılır.

  • XSL-FO - XML ​​belgesini biçimlendirmek için kullanılır.

XSLT nedir

XSLT, Genişletilebilir Stil Sayfası Dili Dönüşümleri, XML verilerini bir formattan diğerine otomatik olarak dönüştürme yeteneği sağlar.

XSLT Nasıl Çalışır?

Hedef XML belgesine uygulanacak dönüştürme kurallarını tanımlamak için bir XSLT stil sayfası kullanılır. XSLT stil sayfası XML biçiminde yazılır. XSLT İşlemci, XSLT stil sayfasını alır ve dönüştürme kurallarını hedef XML belgesine uygular ve ardından XML, HTML veya metin biçiminde formatlanmış bir belge oluşturur. Bu biçimlendirilmiş belge daha sonra XSLT biçimlendiricisi tarafından son kullanıcıya gösterilecek gerçek çıktıyı oluşturmak için kullanılır.

Avantajlar

İşte XSLT kullanmanın avantajları -

  • Programlamadan bağımsız. Dönüşümler yine bir XML belgesi olan ayrı bir xsl dosyasına yazılır.

  • Çıktı, xsl dosyasındaki dönüşümleri basitçe değiştirerek değiştirilebilir. Herhangi bir kodu değiştirmenize gerek yok. Böylece Web tasarımcıları stil sayfasını düzenleyebilir ve çıktıdaki değişikliği hızlı bir şekilde görebilir.

İyi biçimlendirilmiş bir HTML belgesine dönüştürülmesi gereken aşağıdaki örnek XML dosyamızın, öğrenciler.xml olduğunu varsayalım.

students.xml

<?xml version = "1.0"?>
<class> 
   <student rollno = "393">
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks>
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks>
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

Aşağıdaki kriterleri karşılaması için yukarıdaki XML belgesi için bir XSLT stil sayfası belgesi tanımlamamız gerekir -

  • Sayfanın bir başlığı olmalıdır Students.

  • Sayfada bir öğrenci ayrıntıları tablosu olmalıdır.

  • Sütunların başlıkları şu olmalıdır: Rulo No, Adı, Soyadı, Takma Adı, İşaretler

  • Tablo buna göre öğrencilerin ayrıntılarını içermelidir.

1. Adım: XSLT belgesi oluşturun

Yukarıdaki gereksinimleri karşılamak için bir XSLT belgesi oluşturun, bunu student.xsl olarak adlandırın ve student.xml'in bulunduğu yere kaydedin.

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- xsl stylesheet declaration with xsl namespace: 
Namespace tells the xlst processor about which 
element is to be processed and which is used for output purpose only 
--> 
<xsl:stylesheet version = "1.0" 
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">   
<!-- xsl template declaration:  
template tells the xlst processor about the section of xml 
document which is to be formatted. It takes an XPath expression. 
In our case, it is matching document root element and will 
tell processor to process the entire document with this template. 
--> 
   <xsl:template match = "/"> 
      <!-- HTML tags 
         Used for formatting purpose. Processor will skip them and browser 
            will simply render them. 
      --> 
		
      <html> 
         <body> 
            <h2>Students</h2> 
				
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
				
               <!-- for-each processing instruction 
               Looks for each element matching the XPath expression 
               --> 
				
               <xsl:for-each select="class/student"> 
                  <tr> 
                     <td> 
                        <!-- value-of processing instruction 
                        process the value of the element matching the XPath expression 
                        --> 
                        <xsl:value-of select = "@rollno"/> 
                     </td> 
						
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
						
                  </tr> 
               </xsl:for-each> 
					
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

Adım 2: XSLT Belgesini XML Belgesine Bağlayın

Student.xml belgesini aşağıdaki xml-stil sayfası etiketiyle güncelleyin. Href değerini Students.xsl olarak ayarlayın

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
... 
</class>

3. Adım: XML Belgesini Internet Explorer'da görüntüleyin

students.xml

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

Çıktı

<xsl: template>, belirli bir tür / bağlamdaki düğümler için istenen çıktıyı oluşturmak amacıyla şablonları yeniden kullanmanın bir yolunu tanımlar.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:template> öğesi.

<xsl:template 
   name = Qname 
   match = Pattern 
   priority = number 
   mode = QName >
</xsl:template>

Öznitellikler

Sr.No İsim & Açıklama
1

name

Şablonun uygulanacağı öğenin adı.

2

match

Şablonun uygulanacağı öğeleri belirten desen.

3

priority

Bir şablonun öncelik numarası. Düşük önceliğe sahip eşleşen şablon, yüksek öncelikli şablonun önünde dikkate alınmaz.

4

mode

Her seferinde farklı bir sonuç üretmek için öğenin birden çok kez işlenmesine izin verir.

Elementler

Oluşum sayısı Sınırsız

Parent elements

xsl: stylesheet, xsl: transform

Child elements

xsl: apply-imports, xsl: apply-templates, xsl: attribute, xsl: call-template, xsl: select, xsl: comment, xsl: copy, xsl: copy-of, xsl: element, xsl: fallback, xsl: her biri için, xsl: if, xsl: message, xsl: number, xsl: param, xsl: processing-talimat, xsl: text, xsl: value-of, xsl: variable, output elemanları

Demo Örneği

Bu şablon kural, <öğrenci> öğelerini tanımlayan ve tablo biçiminde bir çıktı üreten bir modele sahiptir.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students_imports.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">  
	
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr>
					
               <xsl:for-each select = "class/student"> 
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td>
                  </tr> 
               </xsl:for-each> 
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

Çıktı

<xsl: value-of> etiketi, seçilen düğümün değerini XPath ifadesine göre metin olarak yerleştirir.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:value-of> öğesi.

<xsl:value-of
   select = Expression
   disable-output-escaping = "yes" | "no" >
</xsl:value-of>

Öznitellikler

Sr.No İsim & Açıklama
1

Select

Mevcut bağlamda değerlendirilecek XPath İfadesi.

2

disable-outputescaping

Varsayılan- "hayır". "Evet" ise, çıktı metni xml karakterlerinin metinden çıkış yapmayacaktır.

Elementler

Oluşum sayısı Sınırsız

Parent elements

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: aksi takdirde, xsl: param, xsl: işleme talimatı, xsl: template , xsl: variable, xsl: when, xsl: with-param, output elemanları

Child elements

Yok

Demo Örneği

Bu örnek, özniteliğiyle bir <öğrenci> öğesi tablosu oluşturur rollno ve alt <firstname>, <lastname>, <nickname> ve <marks>.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
   <xsl:stylesheet version = "1.0" 
      xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
		
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
					
               <xsl:for-each select = "class/student"> 
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
                  </tr> 
               </xsl:for-each> 
					
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

Çıkışı doğrulayın

<xsl: for-each> etiketi, her düğüm için tekrar tekrar bir şablon uygular.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:for-each> element

<xsl:for-each
   select = Expression >  
</xsl:for-each>

Öznitellikler

Sr.No İsim & Açıklama
1

Select

Yinelenecek düğüm kümesini belirlemek için geçerli bağlamda değerlendirilecek XPath İfadesi.

Elementler

Oluşum sayısı Sınırsız

Parent elements

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: else, xsl: param, xsl: processinginstruction, xsl: template, xsl: değişken, xsl: ne zaman, xsl: with-param, çıktı elemanları.

Child elements

xsl: apply-imports, xsl: apply-templates, xsl: attribute, xsl: call-template, xsl: select, xsl: comment, xsl: copy, xsl: copy-of, xsl: element, xsl: fallback, xsl: her biri için, xsl: if, xsl: message, xsl: number, xsl: processing-command, xsl: sort, xsl: text, xsl: value-of, xsl: variable.

Demo Örneği

Bu örnek, rollno niteliği ve <firstname> ,<lastname> <nickname> ve <marks> özniteliğiyle her öğrencinin üzerinde yineleyerek bir <öğrenci> öğesi tablosu oluşturur.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
   <xsl:stylesheet version = "1.0" 
      xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
					
               <xsl:for-each select = "class/student"> 
					
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
                  </tr> 
               </xsl:for-each> 
					
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

Çıktı

<xsl: sort> etiketi, düğümlerde bir sıralama ölçütü belirtir.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:sort> öğesi.

<xsl:sort 
   select = string-expression  
   lang = { nmtoken } 
   data-type = { "text" | "number" | QName } 
   order = { "ascending" | "descending" } 
   case-order = { "upper-first" | "lower-first" } > 
</xsl:sort>

Öznitellikler

Sr.No İsim & Açıklama
1

select

Düğümün sıralama anahtarı.

2

lang

Sıralama düzenini belirlemek için kullanılan dil alfabesi.

3

data-type

Metnin veri türü.

4

order

Sıralama düzeni. Varsayılan "artan" tır.

5

case-order

Dizenin büyük harf kullanımına göre sıralama düzeni. Varsayılan "yukarı-önce" dir.

Elementler

Number of occurrences Sınırsız
Parent elements xsl: uygulama şablonları, xsl: her biri için
Child elements Yok

Demo Örneği

Bu örnek, özniteliğiyle bir <öğrenci> öğesi tablosu oluşturur rollno ve alt <firstname>, <lastname>, <nickname> ve <marks> her öğrenci üzerinde tekrarlayarak onları ada göre sıralayın.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks>
   </student>
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">    
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
					
               <xsl:for-each select = "class/student"> 
					
                  <xsl:sort select = "firstname"/> 
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
                  </tr> 
               </xsl:for-each> 
            </table>
         </body>
      </html>
   </xsl:template>
</xsl:stylesheet>

Çıktı

<xsl: if> etiketi, düğümlerin içeriğine karşı koşullu bir testi belirtir.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:if> öğesi.

<xsl:if 
  test = boolean-expression > 
</xsl:if>

Öznitellikler

Sr.No İsim & Açıklama
1

test

Xml verilerindeki test edilecek koşul.

Elementler

Oluşum sayısı Sınırsız

Parent elements

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: aksi takdirde, xsl: param, xsl: processing-talimat, xsl: şablon, xsl: variable, xsl: when, xsl: with-param, output elemanları

Child elements

xsl: apply-templates, xsl: attribute, xsl: call-template, xsl: select, xsl: comment, xsl: copy, xsl: copy-of, xsl: element, xsl: for-each, xsl: if, xsl: işleme talimatı, xsl: metin, xsl: değer-of, xsl: değişken, çıktı elemanları

Demo Örneği

Bu örnek, özniteliğiyle bir <öğrenci> öğesi tablosu oluşturur rollnove alt <firstname>, <lastname>, <nickname> ve <marks> her öğrenci üzerinde yineleyerek. İşaretleri 90'dan büyük olacak şekilde işaretler ve ardından öğrenci / öğrencilerin ayrıntılarını yazdırır.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
					
               <xsl:for-each select = "class/student"> 
					
                  <xsl:if test = "marks > 90"> 
                     <tr> 
                        <td><xsl:value-of select = "@rollno"/></td> 
                        <td><xsl:value-of select = "firstname"/></td> 
                        <td><xsl:value-of select = "lastname"/></td> 
                        <td><xsl:value-of select = "nickname"/></td> 
                        <td><xsl:value-of select = "marks"/></td> 
                     </tr> 
                  </xsl:if> 
               </xsl:for-each> 
					
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

Çıktı

<xsl: choose> etiketi, <xsl: else> ve <xsl: when> öğeleriyle bağlantılı olarak düğümlerin içeriğine karşı birden çok koşullu testi belirtir.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:choose> öğesi.

<xsl:choose >
</xsl:choose>

Elementler

Oluşum sayısı Sınırsız

Parent elements

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: aksi takdirde, xsl: param, xsl: processing-talimat, xsl: şablon, xsl: variable, xsl: when, xsl: with-param, output elemanları

Child elements

xsl: aksi takdirde, xsl: ne zaman

Demo Örneği

Bu örnek, özniteliğiyle bir <öğrenci> öğesi tablosu oluşturur rollnove her öğrencinin üzerinde yineleyerek alt <firstname>, <lastname>, <nickname> ve <marks>. Not ayrıntılarını kontrol eder ve ardından yazdırır.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">   
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
                  <th>Grade</th> 
               </tr> 
					
               <xsl:for-each select = "class/student"> 
					
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
							
                     <td> 
                        <xsl:choose> 
                           <xsl:when test = "marks > 90"> 
                              High 
                           </xsl:when> 
									
                           <xsl:when test = "marks > 85"> 
                              Medium 
                           </xsl:when> 
									
                           <xsl:otherwise> 
                              Low 
                           </xsl:otherwise> 
                        </xsl:choose> 
                     </td> 
                  </tr> 
               </xsl:for-each> 
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

Çıktı

<xsl: key> tag element, bir XML belgesindeki belirli bir öğeye atanan adlandırılmış bir ad-değer çiftini belirtir. Bu anahtar, bir XML belgesindeki atanmış öğelere erişmek için XPath ifadelerinde key () işleviyle birlikte kullanılır.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:key> öğesi.

<xsl:key 
   name = QName 
   match = Pattern 
   use = Expression > 
</xsl:key>

Öznitellikler

S.No İsim & Açıklama
1

Name

Kullanılacak anahtarın adı.

2

Match

Bu anahtarı tutan bir düğümü tanımlamak için kullanılan modeller.

3

Use

Xml belgesinin düğümlerinin değerini belirlemek için XPath ifadesi.

Elementler

Number of Occurrences Sınırsız
Parent elements xsl: stil sayfası
Child elements Yok

Demo Örneği

Bu örnek, özniteliğiyle bir <öğrenci> öğesi tablosu oluşturur rollnove her öğrencinin üzerinde yineleyerek alt <firstname>, <lastname>, <nickname> ve <marks>. Öğrencinin adından biri olmak için anahtarı ilk ad olarak kontrol eder ve ardından öğrenci ayrıntılarını yazdırır.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
   <xsl:key name = "firstname-search" match = "student" use = "firstname"/> 
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
					
               <xsl:for-each select = "key('firstname-search', 'Dinkar')"> 
				
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
                  </tr> 
					
               </xsl:for-each> 
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

Çıktı

<message> etiketi öğesi, bir XSLT işlemede hata ayıklamaya yardımcı olur. Javascript uyarılarına benzer. <xsl:> etiketi, XSLT işlemcisine, işlemeyi sonlandıran ve hata mesajını görüntülemek için arayan uygulamaya bir mesaj gönderen bir mesajı arabelleğe alır.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:message> öğesi.

<xsl:message 
   terminate = "yes" | "no" >
</xsl:message>

Öznitellikler

Sr.No İsim & Açıklama
1

terminate

Bu komutun yürütülmesi üzerine dönüşümün sona ermesi gerekip gerekmediğini belirtir. Varsayılan "evet" tir.

Elementler

Oluşum sayısı Sınırsız
Parent elements

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: else, xsl: param, xsl: processinginstruction, xsl: template, xsl: değişken, xsl: ne zaman, xsl: with-param, çıktı elemanları

Child elements

xsl: apply-templates, xsl: attribute, xsl: call-template, xsl: select, xsl: comment, xsl: copy, xsl: copy-of, xsl: element, xsl: for-each, xsl: if, xsl: işleme talimatı, xsl: metin, xsl: değer-of, xsl: değişken, çıktı elemanları

Demo Örneği

Bu örnek, özniteliğiyle bir <öğrenci> öğesi tablosu oluşturur rollnove alt <firstname>, <lastname>, <nickname> ve <marks> her öğrenci üzerinde yineleyerek. Mevcut olacak ilk ad olarak anahtarı kontrol eder ve ardından öğrenci ayrıntılarını yazdırır, aksi takdirde bir hata mesajı görüntüler.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname></firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">   
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
					
               <xsl:for-each select = "class/student"> 
					
                  <xsl:if test = "firstname = ''"> 
                     <xsl:message terminate = "yes">A first name field is empty. 
                     </xsl:message> 
                  </xsl:if> 
					
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td>
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
                  </tr> 
               </xsl:for-each> 
            </table> 
         </body> 
      </html> 
   </xsl:template>
</xsl:stylesheet>

Çıktı

<xsl: apply-template> etiketi, XSLT işlemcisine, seçilen her düğümün türüne ve bağlamına bağlı olarak uygulanacak uygun şablonu bulması için sinyal gönderir.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:apply-template> öğesi.

<xsl:apply-template 
   select = Expression 
   mode = QName > 
</xsl:apply-template>

Öznitellikler

Sr.No İsim & Açıklama
1

select

Tüm alt öğeleri işlemek yerine, bir XPath ifadesi tarafından seçilen düğümleri işlemek için kullanılır.

2

mode

Nitelikli Adlarıyla belirtildiği gibi bir öğenin, her seferinde farklı bir sonuç üreterek birden çok kez işlenmesine izin verir.

Elementler

Oluşum sayısı Sınırsız

Parent elements

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: else, xsl: param, xsl: processinginstruction, xsl: template, xsl: değişken, xsl: ne zaman, xsl: with-param, çıktı elemanları

Child elements

xsl: sort, xsl: with-param

Demo Örneği

Bu örnek, özniteliğiyle birlikte bir <öğrenci> öğesi listesi oluşturur rollno ve her öğrencinin üzerinde yineleyerek alt <firstname>, <lastname>, <nickname> ve <marks>.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students.xsl"?> 
<class> 
   <student rollno = "393"> 
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">   
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <xsl:apply-templates select = "class/student" /> 
         </body> 
      </html> 
   </xsl:template>  

   <xsl:template match = "class/student"> 
      <xsl:apply-templates select = "@rollno" /> 
      <xsl:apply-templates select = "firstname" /> 
      <xsl:apply-templates select = "lastname" /> 
      <xsl:apply-templates select = "nickname" /> 
      <xsl:apply-templates select = "marks" /> 
      <br /> 
   </xsl:template>  

   <xsl:template match = "@rollno"> 
      <span style = "font-size = 22px;"> 
         <xsl:value-of select = "." /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = "firstname"> 
      First Name:<span style = "color:blue;"> 
         <xsl:value-of select = "." /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = "lastname"> 
      Last Name:<span style = "color:green;"> 
         <xsl:value-of select = "." /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = "nickname"> 
      Nick Name:<span style = "color:red;"> 
         <xsl:value-of select = "." /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = "marks"> 
      Marks:<span style = "color:gray;"> 
         <xsl:value-of select = "." /> 
      </span> 
      <br /> 
   </xsl:template>  
	
</xsl:stylesheet>

Çıktı

<xsl: import> etiketi, bir stil sayfasının içeriğini diğerine aktarır. Bir stil sayfasını içe aktarmak, içe aktarılan stil sayfasına göre daha yüksek önceliğe sahiptir.

Beyanname

Aşağıdaki sözdizimi beyanıdır <xsl:import> öğesi.

<xsl:import href = "uri"> 
</xsl:import>

Öznitellikler

Sr.No İsim & Açıklama
1.

href

içe aktarılacak xslt stil sayfasının yolunu iletmek için kullanılır

.

Elementler

Number of occurrences Sınırsız
Parent elements xsl: stylesheet, xsl: transform
Child elements Yok

Demo Örneği

Bu örnek, özniteliğiyle birlikte bir <öğrenci> öğesi listesi oluşturur rollnove her öğrencinin üzerinde yineleyerek alt <firstname>, <lastname>, <nickname> ve <marks>. Burada, Students_imports.xsl stil sayfasının student.xsl dosyasını içe aktardığı ve student.xml dosyasının student_imports.xsl'ye bağlandığı iki xsl stil sayfası oluşturduk.

students.xml

<?xml version = "1.0"?> 
<?xml-stylesheet type = "text/xsl" href = "students_imports.xsl"?> 
<class> 
   <student rollno = "393">
      <firstname>Dinkar</firstname> 
      <lastname>Kad</lastname> 
      <nickname>Dinkar</nickname> 
      <marks>85</marks> 
   </student> 
   <student rollno = "493"> 
      <firstname>Vaneet</firstname> 
      <lastname>Gupta</lastname> 
      <nickname>Vinni</nickname> 
      <marks>95</marks> 
   </student> 
   <student rollno = "593"> 
      <firstname>Jasvir</firstname> 
      <lastname>Singh</lastname> 
      <nickname>Jazz</nickname> 
      <marks>90</marks> 
   </student> 
</class>

students.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">    
   <xsl:template match = "/"> 
      <html> 
         <body> 
            <h2>Students</h2> 
            <table border = "1"> 
               <tr bgcolor = "#9acd32"> 
                  <th>Roll No</th> 
                  <th>First Name</th> 
                  <th>Last Name</th> 
                  <th>Nick Name</th> 
                  <th>Marks</th> 
               </tr> 
					
               <xsl:for-each select = "class/student"> 
					
                  <tr> 
                     <td><xsl:value-of select = "@rollno"/></td> 
                     <td><xsl:value-of select = "firstname"/></td> 
                     <td><xsl:value-of select = "lastname"/></td> 
                     <td><xsl:value-of select = "nickname"/></td> 
                     <td><xsl:value-of select = "marks"/></td> 
                  </tr> 
               </xsl:for-each> 
            </table> 
         </body> 
      </html> 
   </xsl:template>  
</xsl:stylesheet>

students_imports.xsl

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" 
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">  
   <xsl:import href = "students.xsl"/>  
   <xsl:template match = "/"> 
      <xsl:apply-imports/> 
   </xsl:template>  
</xsl:stylesheet>

Çıktı