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>