XSLT mijoz tomonida


XSLT yordamida hujjatni brauzeringizning o‘zida XHTML’ga aylantirish mumkin.


ULASHISH

JavaScript yechimi

Oldingi boblarda XSLT yordamida hujjatni XML’dan XHTML’ga qanday aylantirish mumkinligini tushuntirdik. Buni XML faylga XSL uslublar jadvalini qo‘shib, transformatsiyani brauzerning o‘ziga topshirish orqali amalga oshirdik.

Bu yaxshi ishlasa ham, XML faylga uslublar jadvaliga havolani kiritish har doim ham maqsadga muvofiq emas (masalan, XSLT’ni tanimaydigan brauzerda bu ishlamaydi.)

Transformatsiyani bajarish uchun JavaScript’dan foydalanish ancha universal yechim bo‘ladi.

JavaScript’dan foydalanib, biz quyidagilarni qila olamiz:

  • brauzerga xos tekshiruvlarni bajarish
  • brauzer va foydalanuvchi ehtiyojlariga qarab turli uslublar jadvallaridan foydalanish

XSLT’ning go‘zalligi ham shunda! XSLT’ni loyihalashdagi maqsadlardan biri turli brauzerlar va turli foydalanuvchi ehtiyojlarini qo‘llab-quvvatlagan holda ma’lumotlarni bir formatdan boshqasiga aylantirish imkonini berish edi.


XML fayl va XSL fayl

Oldingi boblarda ko‘rgan XML hujjatingizga qarang:

<?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>

XML faylni ko‘rish.

Va unga tegishli XSL uslublar jadvali:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">   <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> </xsl:template> </xsl:stylesheet>

XSL faylni ko‘rish.

E’tibor bering: XML faylda XSL faylga havola yo‘q.

MUHIM: Yuqoridagi jumla XML faylni ko‘plab turli XSL uslublar jadvallari yordamida o‘zgartirish mumkinligini bildiradi.



Brauzerda XML’ni XHTML’ga aylantirish

Mijoz tomonida XML faylni XHTML’ga aylantirish uchun kerakli manba kod:

Misol

<!DOCTYPE html> <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>
O‘zingiz sinab ko‘ring »

Maslahat: Agar JavaScript’da kod yozishni bilmasangiz, JavaScript darsligimizni o‘rganing.

Misol tushuntirilishi:

loadXMLDoc() funksiyasi quyidagilarni bajaradi:

  • XMLHttpRequest obyektini yaratish
  • Serverga so‘rov yuborish uchun XMLHttpRequest obyektining open() va send() metodlaridan foydalanish
  • Javob ma’lumotlarini XML ma’lumotlari sifatida olish

displayResult() funksiyasi XSL fayl yordamida uslub berilgan XML faylni ko‘rsatish uchun ishlatiladi:

  • XML va XSL fayllarni yuklash
  • Foydalanuvchida qanday brauzer borligini tekshirish
  • Agar Internet Explorer bo‘lsa:
    • XSL uslublar jadvalini xml hujjatga qo‘llash uchun transformNode() metodidan foydalanish
    • Joriy hujjatning body qismini (id="example") uslub berilgan xml hujjatni o‘z ichiga oladigan qilib o‘rnatish
  • Agar boshqa brauzerlar bo‘lsa:
    • Yangi XSLTProcessor obyektini yaratish va unga XSL faylni import qilish
    • XSL uslublar jadvalini xml hujjatga qo‘llash uchun transformToFragment() metodidan foydalanish
    • Joriy hujjatning body qismini (id="example") uslub berilgan xml hujjatni o‘z ichiga oladigan qilib o‘rnatish

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!