XSLT tarayıcınızda XHTML belgesini dönüştürmek için kullanılabilir.
Bir JavaScript Çözüm
Daha önceki bölümlerde, XSLT XHTML XML bir belgeyi dönüştürmek için nasıl kullanılabileceğini açıkladık. Biz XML dosyasına bir XSL stil sayfası ekleme ve tarayıcı dönüşümü yapalım tarafından yaptılar.Bu iyi çalışıyor olsa bile, bir XML dosyasında bir stil sayfası başvurusu dahil etmek her zaman arzu edilmez (eg it will not work in a non XSLT aware browser.)
Daha çok yönlü bir çözüm dönüşümü yapmak için bir JavaScript kullanmak olacaktır.
Bir JavaScript kullanarak, şunları yapabilir:
- tarayıcıya özel testler yapmak
- tarayıcı ve kullanıcı ihtiyaçlarına göre farklı stil sayfaları kullanma
Yani XSLT güzelliği! XSLT için tasarım hedeflerinden biri mümkün farklı tarayıcılar ve farklı kullanıcı ihtiyaçlarını desteklemek, bir biçimden verileri dönüştürmek için yapmaktı.
XML Dosyası ve XSL Dosyası
önceki bölümlerde gördük XML belgesine bakın:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
Ve beraberindeki XSL stil sayfası:
<?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>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="artist" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Notice that the XML file does not have a reference to the XSL file.
IMPORTANT: Yukarıdaki cümle bir XML dosyası çok sayıda farklı XSL stil sayfaları kullanarak dönüştürülmüş olabileceğini gösteriyor.
Tarayıcıda XHTML XML Dönüşüm
İşte istemci üzerinde XHTML XML dosyası dönüştürmek için gerekli kaynak kodu:
Örnek
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
{
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else
{
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"}
catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject
|| xhttp.responseType == "msxml-document")
{
ex =
xml.transformNode(xsl);
document.getElementById("example").innerHTML
= ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation
&& document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument =
xsltProcessor.transformToFragment(xml, document);
document.getElementById("example").appendChild(resultDocument);
}
}
</script>
</head>
<body onload="displayResult()">
<div
id="example" />
</body>
</html>
Kendin dene " Tip: JavaScript yazma bilmiyorsanız, bizim çalışma lütfen JavaScript öğretici .
Örnek Açıklaması:
The loadXMLDoc() function does the following:
- XMLHttpRequest nesnesi oluştur
- Kullanın open() ve send() bir sunucuya bir istek göndermek için XMLHttpRequest nesnesinin yöntemleri
- XML veri olarak yanıt verilerini alın
The displayResult() function is used to display the XML file styled by the XSL file:
- Yük XML ve XSL dosyaları
- kullanıcının sahip olduğu tarayıcısı ne tür test
- Internet Explorer ise:
- Kullanım transformNode() xml belgesine XSL stil sayfası uygulama yöntemini
- Geçerli belgenin gövdesini Set (id="example") tarz xml belgesini içermesini
- Diğer tarayıcılar ise:
- Yeni XSLTProcessor nesnesi oluşturun ve XSL dosyasını içe
- Kullanım transformToFragment() xml belgesine XSL stil sayfası uygulama yöntemini
- Geçerli belgenin gövdesini Set (id="example") tarz xml belgesini içermesini