Основной пример
Основной пример
В этом примере загружается XML-файл и применяется к нему преобразование XSL. Это те же файлы, что и в примере создания HTML в статье XSLT в Netscape Gecko. XML-файл описывает статью, а XSL-файл форматирует информацию для отображения.
Рисунок 4 : XML-файл
<?xml version="1.0"?> <myNS:Article xmlns:myNS="http://devedge.netscape.com/2002/de"> <myNS:Title>My Article</myNS:Title> <myNS:Authors> <myNS:Author company="Foopy Corp.">Mr. Foo</myNS:Author> <myNS:Author>Mr. Bar</myNS:Author> </myNS:Authors> <myNS:Body> The <b>rain</b> in <u>Spain</u> stays mainly in the plains. </myNS:Body> </myNS:Article>
Рисунок 5 : XSLT-стиль
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myNS="http://devedge.netscape.com/2002/de"> <xsl:output method="html" /> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="/myNS:Article/myNS:Title"/> </title> <style type="text/css"> .myBox {margin:10px 155px 0 50px; border: 1px dotted #639ACE; padding:0 5px 0 5px;} </style> </head> <body> <p class="myBox"> <span class="title"> <xsl:value-of select="/myNS:Article/myNS:Title"/> </span> <br /> Authors: <br /> <xsl:apply-templates select="/myNS:Article/myNS:Authors/myNS:Author"/> </p> <p class="myBox"> <xsl:apply-templates select="//myNS:Body"/> </p> </body> </html> </xsl:template> <xsl:template match="myNS:Author"> -- <xsl:value-of select="." /> <xsl:if test="@company"> :: <b> <xsl:value-of select="@company" /> </b> </xsl:if> <br /> </xsl:template> <xsl:template match="myNS:Body"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
В примере с помощью синхронного XMLHTTPRequest загружаются в память оба файла: .xsl (xslStylesheet) и .xml (xmlDoc). Затем файл .xsl импортируется (xsltProcessor.importStylesheet(xslStylesheet)) и выполняется преобразование (xsltProcessor.transformToFragment(xmlDoc, document)). Это позволяет получить данные после загрузки страницы, не вызывая новую загрузку страницы.
Рисунок 6 : Пример
let xslStylesheet; const xsltProcessor = new XSLTProcessor(); let myDOM; let xmlDoc; function Init() { // Load the xslt file, example1.xsl let myXMLHTTPRequest = new XMLHttpRequest(); myXMLHTTPRequest.open("GET", "example1.xsl", false); myXMLHTTPRequest.send(null); xslStylesheet = myXMLHTTPRequest.responseXML; xsltProcessor.importStylesheet(xslStylesheet); // Load the XML file, example1.xml myXMLHTTPRequest = new XMLHttpRequest(); myXMLHTTPRequest.open("GET", "example1.xml", false); myXMLHTTPRequest.send(null); xmlDoc = myXMLHTTPRequest.responseXML; const fragment = xsltProcessor.transformToFragment(xmlDoc, document); myDOM = fragment; document.getElementById("example").textContent = ""; document.getElementById("example").appendChild(fragment); }
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/XSLT/XSLT_JS_interface_in_Gecko/Basic_Example