Спонсор: Microsoft
Воронежский государственный университет
Опубликован: 04.02.2009 | Доступ: свободный | Студентов: 8217 / 665 | Оценка: 4.14 / 3.78 | Длительность: 19:54:00
Самостоятельная работа 13:

Форматирование и преобразование XML документа с помощью CSS и XSL. XSLT преобразование XML документа

< Самостоятельная работа 12 || Самостоятельная работа 13: 123 || Лекция 12 >

2. Реализация преобразования с помощью JavaScript.

  1. Подготовьте 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 документу.
      • формируется тело текущего документа.
  2. Загрузите этот документ в веб-браузере.

3. Реализация преобразования с помощью JavaScript

  1. Подготовьте файл, содержащий следующий код сценария на языке 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, который отправляется обратно браузеру.

  2. Проверьте работу сценария в веб-браузере.

Контрольное задание

В приведенном ниже 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 страницу, содержащую заголовок ведомости и таблицу оценок со столбцами: номер, студент, оценка.

< Самостоятельная работа 12 || Самостоятельная работа 13: 123 || Лекция 12 >
Михаил Олифиренко
Михаил Олифиренко
Александр Табачук
Александр Табачук

Это только у меня не работает кнопочка "Получить код DreamSpark"? Пишет "временно не доступно..." А когда заработает?