با سلام خدمت کاربران گرامی سایت پی وی لرن و علاقمندان و کاربرانی که علاقمند به یادگیری دوره XML هستند. در جلسات گذشته جزء به جزء با عناصر مهم و کاربردی در XSLT پرداختیم و با کاربرد آن ها آشنا شدیم. در این جلسه نیز علاقمندان XML و XSLT را با مبحث کاربرد XSLT در سمت کلاینت آشنا می نماییم.
گرچه XSLT می تواند برای انتقال سند به XHTML در مرورگر شما مورد استفاده قرار گیرد. اما بیاید با راه آسان تری که کار را برای ما ساده تر می کند آشنا شویم.
در جلسات قبل توضیح داده شد که چگونه XSLT را می توان برای انتقال یک سند از XML به XHTML استفاده کرد.
ما این کار را با اضافه کردن یک XSL style sheet به فایل XML انجام دادیم و اجازه دادیم مرورگر این تغییر را انجام دهد.
حتی اگر این کار به خوبی انجام شود، همیشه مطلوب نیست که مرجع style sheet را در یک فایل XML وارد کنید (مثلا در یک مرورگر غیر XSLT ممکن است جواب ندهد.)
وجود همین مشکل باعث شد از جاوا اسکریپت برای انجام این تغییر استفاده نماییم.
با استفاده از جاوا اسکریپت می توان :
و این است زیبایی XSLT!
در واقع یکی از اهداف طراحی XSLT این بود که امکان تبدیل داده ها از یک فرمت به یک دیگر، فراهم شود حتی اگر نوع نیازها و یا مرورگرهای مورد استفاده متنوع و مختلف باشد.
مجدداً نگاهی به این سند XML که در جلسات قبل نیز دیده اید بی اندازید:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?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> |
به XSL style sheet زیر نیز توجه نمایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?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> |
توجه داشته باشید که فایل XML هیچ اشاره ای به فایل XSL ندارد.
جمله فوق نشان می دهد که یک فایل XML را می توان با استفاده از انواع مختلفی از XSL style sheets تغییر داد.
در اینجا می توانید کد منبع مورد نیاز برای تبدیل فایل XML به XHTML در سمت کلاینت را مشاهده نمایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <!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> |
اگر هنوز با جاوا اسکریپت آشنا نیستید سری به دوره آموزش کامل جاوا اسکریپت در پی وی لرن بزنید!
تابع ()loadXMLDoc موارد زیر را انجام می دهد:
از تابع ()displayResult برای نمایش فایل XML با استفاده از فایل XSL استفاده می شود که شامل موارد زیر است:
در این جلسه به مبحث کاربرد XSLT در سمت کلاینت پرداخته شد.
در جلسه بعدی به کاربرد XSLT در سمت سرور می پردازیم.
با پی وی لرن همراه باشید.