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

<?xml version="1.0"?>

<xsclass="underline" stylesheet version="1.0"

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

 <xsclass="underline" import href="rules.xsl"/>

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

  <HTML>

   <HEAD>

    <TITLE>

     The Planets Table

    </TITLE>

   </HEAD>

   <BODY>

    <H1>

     The Planets Table

    </H1>

    <TABLE BORDER="2">

     <TR>

      <TD>Date</TD>

      <TD>Name</TD>

      <TD>Mass</TD>

      <TD>Radius</TD>

      <TD>Day</TD>

      <xsclass="underline" apply-templates/>

     </TR>

    </TABLE>

   </BODY>

  </HTML>

 </xsclass="underline" template>

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

  <TR>

   <TD>4/1/2002</TD>

   <xsclass="underline" apply-imports/>

  </TR>

 </xsclass="underline" template>

</xsclass="underline" stylesheet>

А вот как выглядит новая версия rules.xsl (листинг 2.13).

Листинг 2.13. Новая версия rules.xsl

<?xml version="1.0"?>

<xsclass="underline" stylesheet version="1.0"

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

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

  <TD><xsclass="underline" value-of select="NAME"/></TD>

  <TD><xsclass="underline" value-of select="MASS"/></TD>

  <TD><xsclass="underline" value-of select="RADIUS"/></TD>

  <TD><xsclass="underline" value-of select="DAY"/></TD>

 </xsclass="underline" template>

</xsclass="underline" stylesheet>

Результаты можно видеть на рис. 2.4. Я создал один шаблон при помощи другого, что является ближайшим аналогом в XSLT для наследования из объектно-ориентированной парадигмы.

Рис. 2.4. Использование <xsclass="underline" apply-imports>

В рабочем проекте XSLT 1.1 с элементом <xsclass="underline" apply-imports> можно использовать параметры таблицы стилей, что означает, что вы можете использовать элементы <xsclass="underline" with-param> в качестве содержимого <xsclass="underline" apply-imports>. Подробное обсуждение параметров и элемента <xsclass="underline" with-param> приводится в главе 9.

Преобразование документов XML при помощи Internet Explorer

В нашем обзоре таблиц стилей есть еще одна тема для обсуждения: как использовать таблицы стилей в Internet Explorer. Как мы видели в главе 1, для считывания документов XML и XSL можно использовать JavaScript, и осуществлять преобразование при помощи разборщика MSXML3. (Дополнительная информация по этой теме приведена в главе 10. Документацию по Internet Explorer можно также прочитать по адресу http://msdn.microsoft.com/xml/XSLGuide/.)

Однако, если вам нужно открыть XML-документ непосредственно в Internet Explorer при навигации (например, набрав URI в адресной строке), в использовании элементов <?xml-stylesheet?> и <xsclass="underline" stylesheet> вы полагаетесь на браузер, а это означает, что для IE версии 5.5 и более ранних необходимо провести ряд изменений. 

INTERNET EXPLORER 6.0 И ПОЛУЧЕНИЕ И УСТАНОВКА РАЗБОРЩИКА MSXML

Обратите внимание: IE 6.0 только что вышел, когда книга готовилась к печати, и он поддерживает полный синтаксис XSLT (за исключением того, что вы все еще должны использовать тип «text/xsl» для таблиц стилей, как в <?xml-stylesheet type="text/xsl" href="planets.xsl"?>, вместо «text/xml»). Если вы используете IE 5.5 или более ранних версий, вы также можете загрузить и установить последнюю версию разборщика MSXML прямо от Microsoft вместо предыдущей версии, используемой Internet Explorer. Если это сделать, вам не нужно будет проводить изменения, перечисленные в этом разделе. Дополнительную информацию можно получить по адресу http://msdn.microsoft.com/ xml/general/xmlparser.asp. Загрузить разборщик сейчас можно по адресу http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/000/541/msdncompositedoc.xml. (Учтите, однако, что Microsoft, кажется, реорганизует свой web-узел примерно каждые пятнадцать минут.) Если вы работаете с IE 5.5 или более ранней версии, я настоятельно рекомендую вам загрузить MSXML, чтобы вам не пришлось изменять все ваши таблицы стилей XSLT для их использования в IE, или обновить браузер до версии 6.0 или более поздней.

Для IE версии 5.5 или более ранней необходимо внести изменения и в planets.xml, и в planets.xsl. Для того чтобы использовать planets.xml в IE, необходимо преобразовать атрибут type в инструкции обработки <?xml-stylesheet?> из «text/xml» в «text/xsl» (листинг 2.14).

Листинг 2.14. Версия planets.xml для Internet Explorer

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="planets.xsl"?>

<PLANETS>

 <PLANET>

  <NAME>Mercury</NAME> <MASS UNITS="(Earth = 1)">.0553</MASS>

  <DAY UNITS="days">58.65</DAY>

  <RADIUS UNITS="miles">1516</RADIUS>

  <DENSITY UNITS="(Earth = 1)">983</DENSITY>

  <DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->

 </PLANET>

 <PLANET>

  <NAME>Venus</NAME>

  <MASS UNITS="(Earth = 1)">.815</MASS>

  <DAY UNITS="days">116.75</DAY>

  <RADIUS UNITS="miles">3716</RADIUS>

  <DENSITY UNITS="(Earth = 1)">.943</DENSITY>

  <DISTANCE UNITS="million miles">66.8</DISTANCE><!--B перигелии-->

 </PLANET>

 <PLANET>