XSLT на клиенте

Если ваш браузер поддерживает XSLT, то он может быть использован для преобразования документа в XHTML.

Решение на JavaScript

В предыдущих главах мы рассказали вам, как использовать XSLT для преобразования XML-документа в XHTML. Мы сделали это следующим образом: добавили XSL-стиль к XML-файлу и преобразовали его через браузер.

Хотя этот метод очень эффективен, включение ссылки на стиль в XML-файл не всегда удовлетворительно (например, в браузерах, которые не поддерживают XSLT, этот метод не работает).

Более универсальным方法是 использовать JavaScript для выполнения преобразования.

Используя JavaScript, мы можем:

  • Проведение тестирования браузера
  • Использование различных стилей по требованию браузера и пользователя

Вот и заключается привлекательность XSLT! Одной из целей дизайна XSLT является возможность преобразования одного формата в другой, а также поддержка различных типов браузеров и потребностей пользователей.

Конвертация XSLT на стороне браузера一定会 стать одним из основных задач, которые будут выполняться будущими браузерами, и мы также увидим его рост на рынке конкретных браузеров (глухонемые, сетевые принтеры, аудиоустройства и т.д.).

XML-файлы и XSL-файлы

Просмотрите этот XML-документ, который был представлен в предыдущих главах:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <title>Эмпайр Бурлеск</title>
    <artist>Боб Дилан</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
.
</catalog>

Просмотрите этот XML-файл.

и соответствующие им XSL-стили:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>Моя коллекция компакт-дисков</h2> 
    <table border="1">
      <tr bgcolor="#9acd32">
        <th align="left">Title</th> 
        <th 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>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Просмотрите этот XSL-файл.

Обратите внимание, что этот XML-файл не содержит ссылок на XSL-файл.

Важно:Это означает, что XML-файл можно преобразовать с использованием нескольких различных таблиц стилей XSL.

Преобразование XML в XHTML в браузере

Это исходный код, который используется для преобразования XML-файла в XHTML на клиенте:

<html>
<body>
<script type="text/javascript">
// Load XML 
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cdcatalog.xml")
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cdcatalog.xsl")
// Transform
document.write(xml.transformNode(xsl))
</script>
</body>
</html>

Совет:Если вы не знаете, как писать на JavaScript, изучите наш «Учебник по JavaScript》。

Первый код создает экземпляр парсера XML Microsoft и загружает XML-файл в память. Второй код создает другой экземпляр парсера и загружает этот XSL-файл в память. Последняя строка кода использует документ XSL для преобразования XML-документа и показывает результат в браузере в виде XHTML. Задача выполнена!

Посмотрите, как это работает в IE.