Выбрать главу

<xsclass="underline" stylesheet version="1.1"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 xmlns:xslt="http://xslt">

 <xsclass="underline" template match="/">

  <xslt:stylesheet version="1.1">

   <xslt:template match="PLANET">

    <TR>

     <TD><xslt:value-of select="NAME"/></TD>

     <TD><xslt:applу-templates select="MASS"/></TD>

     <TD><xslt:apply-templates select="RADIUS"/></TD>

     <TD><xslt:apply-templates select="DAY"/></TD>

    </TR>

   </xslt:template>

  </xslt:stylesheet>

 </xsclass="underline" template>

 <xsclass="underline" namespace-alias stylesheet-prefix="xslt" result-prefix="xsl"/>

</xsclass="underline" stylesheet>

Вот результат. Заметьте, что здесь все еще используется префикс пространства имен «xslt», но это пространство имен теперь соответствует правильному пространству имен XSLT:

<?xml version="1.0" encoding="UTF-8"?>

<xslt:stylesheet

 xmlns:xslt="http://www.w3.org/1999/XSL/Transform" version="1.1">

 <xslt:template match="PLANET">

  <TR>

   <TD>

    <xslt:value-of select="NAME"/>

   </TD>

   <TD>

    <xslt:apply-templates select="MASS"/>

   </TD>

   <TD>

    <xslt:applу-templates select="RADIUS"/>

   </TD>

   <TD>

    <xslt:apply-templates select="DAY"/>

   </TD>

  </TR>

 </xslt:template>

</xslt:stylesheet>

На этом глава завершается. В следующей главе мы рассмотрим, как работать с XSLT в коде.

Глава 10 Работа с API процессоров XSLT

Как вы видели на протяжении всей книги, при работе с XSLT вам не требовалось никакого программирования. Но все процессоры XSLT, с которыми мы работали до сих пор, — Xalan, Saxon, XT, Oracle и MSXML — разработаны так, что при желании к ним можно обращаться и из кода программы. Здесь мы рассмотрим, как работать с этими процессорами в прикладной программе. Можете спокойно пропустить эту главу, если вы не программист или не собираетесь им становиться. Но если вы не будете использовать возможности программного интерфейса, вы потеряете довольно много, в том числе поддержку XSLT на web-серверах. В этой главе будет также показано, как преобразовывать XML в реляционную базу данных.

Для взаимодействия с различными прикладными программными интерфейсами (API, Application Programming Interface) процессоров XSLT я буду применять Java и JavaScript. С различными процессорами XSLT можно работать и при помощи таких языков, как С++ или Visual Basic, но до сих пор подавляющее большинство программистов выбирало Java, а язык JavaScript удобен для обработки преобразований в Internet Explorer. Кроме того, используемые вами процессоры XSLT специально разработаны для взаимодействия с Java, хотя с процессором MSXML3 можно работать из программы как с СОМ-объектом. Как я говорил, с процессором MSXML в Internet Explorer можно работать при помощи JavaScript, такой пример был показан еще в главе 1. И, как я обещал в главе 1, здесь я рассмотрю его более подробно.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ РАБОТЫ С XSLT ИЗМЕНЯЕТСЯ ОЧЕНЬ БЫСТРО!

Будьте внимательны! Программное обеспечение для работы с XSLT изменяется очень быстро, зачастую ежемесячно, поэтому ко времени, когда вы будете читать книгу, оно частично может уже устареть. Тут уж ничего не поделаешь, и вам нужно за ним следить. Все примеры в этой главе были тщательно проверены по крайней мере тремя людьми — мной и двумя техническими редакторами, работавшими независимо, и на момент написания книги все примеры работали. Если у вас что-то не заработает, проверьте, конечно, такие элементы, как путь к классам Java, но также сверьтесь и с документацией по вашему процессору XSLT на предмет возможных изменений.

XSLT и JavaScript в Internet Explorer

Любите вы Microsoft или нет, нельзя отрицать тот факт, что эта фирма включает в Internet Explorer все больше средств поддержки XSLT (дополнительную информацию можно найти по адресу http://msdn.microsoft.com/xml/general/xmlparser.asp), и поэтому работа с браузером заслуживает нашего внимания. В главе 1 я представил пример создания преобразований XSLT в Internet Explorer при помощи JavaScript, и здесь мы рассмотрим этот пример подробнее. Как вы помните (см. главу 2), IE версии 5.5 и младше может осуществлять настоящие преобразования XSLT, если они реализованы на JavaScript (новый, только что вышедший IE 6.0 может разбирать непосредственно синтаксис XSLT просто путем просмотра XML-документов).

В этом случае я, пользуясь MSXML и JavaScript, преобразую planets.xml при помощи planets.xsl. Для хранения этих документов я создаю два новых объекта, XMLDocument и XSLDocument, опираясь на классы ActiveXObject и DOMDocument процессора MSXML в функции xslt. (Эта функция запускается сразу при загрузке страницы, поскольку я установил атрибут onload элемента <BODY> в «xslt()»). Я также создам объект, соответствующий элементу <DIV>, который отображает результаты преобразования:

<HTML>

 <HEAD>

  <TITLE>XSLT Using JavaScript</TITLE>