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

Преобразование документов 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?> и <xsl: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>

  <NAME>Earth</NAME>

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

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

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

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

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

 </PLANET>

</PLANETS>

Для работы в IE версии 5.5 или младше необходимо также преобразовать таблицу стилей planets.xsl. Главное отличие между рекомендацией W3C XSL и реализацией XSL в IE состоит в том, что в IE версии 5.5 и младше не реализованы никакие правила XSL по умолчанию — см. главу 3 (заметьте, что IE версии 6.0 на момент выхода этой книги в свет не обременён такой проблемой). Это значит, что для IE версии 5.5 или младше я должен включать правило XSL для корневого узла документа, который задается при помощи «/». Я также должен использовать в таблице стилей другое пространство имен XSL, «http://www.w3.org/TR/WD-xsl», и опустить атрибут версии в элементе <xsl:stylesheet> (листинг 2.14).

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

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http.//www w3.org/TR/WD-xsl">

 <xsl:template match="/">

  <HTML>

   <HEAD>

    <TITLE>

     The Planets Table

    </TITLE>

   </HEAD>

   <BODY>

    <H1>

     The Planets Table

    </H1>

    <TABLE BORDER="2">

     <TR>

      <TD>Name</TD>

      <TD>Mass</TD>

      <TD>Radius</TD>

      <TD>Day</TD>

     </TR>

     <xsl:apply-templates/>

    </TABLE>

   </BODY>

  </HTML>

 </xsl:template>

 <xsl:template match="PLANETS">

  <xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="PLANET">

  <TR>

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

   <TD><xsl:value-of select="MASS"/></TD>

   <TD><xsl:value-of select="RADIUS"/></TD>

   <TD><xsl:value-of select="DAY"/></TD>

  </TR>

 </xsl:template>

</xsl:stylesheet>

Вот и все! Теперь мы успешно изменили planets.xml и planets.xsl для прямого просмотра в Internet Explorer. Такие изменения необходимо провести для навигации непосредственно по XML-документам с таблицами XSL в этом браузере.

На этом завершается обзор работы с таблицами стилей в XSL. В следующей главе мы более подробно познакомимся с основной частью таблиц стилей — шаблонами.