Форматирование и преобразование XML документа с помощью CSS и XSL. XSLT преобразование XML документа
2. Реализация преобразования с помощью JavaScript.
- Подготовьте html файл, содержащий код:
<html> <head> <script> function loadXMLDoc(fname) { var xmlDoc; // Код для IE if (window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } // Код для Mozilla, Firefox, Opera и др. else if (document.implementation && document.implementation.createDocument) { xmlDoc=document.implementation.createDocument("","",null); } else { alert('Your browser cannot handle this script'); } xmlDoc.async=false; xmlDoc.load(fname); return(xmlDoc); } function displayResult() { xml=loadXMLDoc("ttable.xml"); xsl=loadXMLDoc("ttable.xsl"); // Код для IE if (window.ActiveXObject) { ex=xml.transformNode(xsl); document.getElementById("example").innerHTML=ex; } // Код для Mozilla, Firefox, Opera и др. 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 id="example" onLoad="displayResult()"> </body> </html>
Функция loadXMLDoc() загружает XML и XSL файлы в зависимости от типа браузера.
Функция displayResult() используется для отображения XML файла в стиле, задаваемом XSL файлом. Она выполняет следующие действия:
- загружает XML и XSL.
- определяет тип браузера.
- если браузер поддерживает ActiveX объекты:
- с помощью метода transformNode() таблица стилей XSL применяется к XML документу.
- формируется тело текущего документа.
- если браузер клиента не поддерживает ActiveX объекты:
- создается новый объект XSLTProcessor и в него импортируется XSL файл.
- с помощью метода transformToFragment() таблица стилей XSL применяется к XML документу.
- формируется тело текущего документа.
- Загрузите этот документ в веб-браузере.
3. Реализация преобразования с помощью JavaScript
- Подготовьте файл, содержащий следующий код сценария на языке ASP:
<% 'Load XML set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false xml.load(Server.MapPath("ttable.xml")) 'Load XSL set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(Server.MapPath("ttable.xsl")) 'Transform file Response.Write(xml.transformNode(xsl)) %>
В начале сценария создается экземпляр парсера Microsoft XML parser (XMLDOM), и XML файл загружается в память. Далее создается еще один экземпляр парсера, и XSL файл загружается в память. В последней строке выполняется собственно преобразование XML файла с использованием XSL файла в XHTML, который отправляется обратно браузеру.
- Проверьте работу сценария в веб-браузере.
Контрольное задание
В приведенном ниже XML документе описана экзаменационная ведомость:
<gradeReport id="120851"> <date>10-06-2008</date> <subject>Computer Science Fundamentals</subject> <examiner>prof.Litvinov</examiner> <gradeList> <gradeRecord id="1"> <student>Ivanov</student> <grade>4</grade> </gradeRecord> <gradeRecord id="2"> <student>Petrov</student> <grade>3</grade> </gradeRecord> <gradeRecord id="3"> <student>Sidorov</student> <grade>5</grade> </gradeRecord> </gradeList> </gradeReport>
Постройте для него XSL файл, необходимый для XSLT преобразования исходного XML документа в HTML страницу, содержащую заголовок ведомости и таблицу оценок со столбцами: номер, студент, оценка.