Книга: XSLT

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

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

Хотя во многих книгах рассматриваются исключительно преобразования из XML в HTML, правда состоит в том, что консорциум W3C этому не очень-то рад. Консорциум пытался сместить акцент с HTML (который они первоначально стандартизировали) на свою новую спецификацию, XHTML, представляющую собой совместимую с XML переработку HTML. Документы XHTML являются также хорошо сформированными допустимыми документами XML, поэтому преобразование из XML в XHTML в действительности есть преобразование из XML в специальный вид XML.

Хотя W3C активно продвигает XHTML, этот формат еще не стал широко распространенным. Поэтому в данной книге я в основном рассматриваю HTML; но поскольку W3C утверждает, что следует использовать XHTML, я кратко рассмотрю эту тему здесь и в главе 6. Если вы хотите узнать больше о XHTML, прочитайте рекомендацию W3C XHTML 1.0 по адресу www.w3.org/TR/xhtml1/, а также рекомендацию XHTML 1.1 по адресу www.w3.org/TR/xhtml11/.

Пусть W3C и утверждает, что XML следует преобразовывать в XHTML, а не в HTML, я не видел ни одного работающего примера на их web-узле. Представленные ими примеры на самом деле не генерируют допустимых документов XHTML. Тем не менее, поддержка преобразований XML-XHTML предположительно будет встроена в XSLT 2.0, и желаемое W3C явление, вероятно, нас вскоре ждет.

Более подробно мы рассмотрим этот тип преобразования в главе 6, а здесь я приведу рабочую версию таблицы planets.xsl, которая создает допустимую XHTML-версию planets.html (листинг 1.7). Заметьте, что на этот раз в элементе <xsl:output> нужно использовать атрибут doctype-public, и хотя это корректный код XSLT, не все процессоры XSLT смогут его обработать.

Листинг 1.7. Преобразование XML-XHTML

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml"
  doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
 <xsl:template match="/PLANETS">
  <html>
   <head>
    <title>
     The Planets Table
    </title>
   </head>
   <body>
    <h1>
     The Planets Table
    </h1>
    <table>
     <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="PLANET">
  <tr>
   <td><xsl:value-of select="NAME"/></td>
   <td><xsl:apply-templates select="MASS"/></td>
   <td><xsl:apply-templates select="RADIUS"/></td>
   <td><xsl:apply-templates select="DAY"/></td>
  </tr>
 </xsl:template>
 <xsl:template match="MASS">
  <xsl:value-of select="."/>
  <xsl:text> </xsl:text>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>
 <xsl:template match="RADIUS">
  <xsl:value-of select="."/>
  <xsl:text> </xsl:text>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>
 <xsl:template match="DAY">
  <xsl:value-of select="."/>
  <xsl:text> </xsl:text>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>
</xsl:stylesheet>

Я преобразую planets.xml в допустимый документ XHTML, planets.html, используя этот новый вариант planets.xsl и процессор XSLT XT. Сначала нужно корректно установить переменную classpath:

С:>set classpath=c:xercesxerces-1_3_0xerces.jar;с:xtxt.jar;

Затем я провожу преобразование:

C:planets>java -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser.com.jclark xsl.sax.Driver planets.xml planets.xsl planets.html

В результате будет получен файл XHTML, planets.html:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head>
  <title>
   The Planets Table
  </title>
 </head>
 <body>
  <h1>
   The Planets Table
  </h1>
  <table>
   <tr>
    <td>Name</td>
    <td>Mass</td>
    <td>Radius</td>
    <td>Day</td>
   </tr>
   <tr>
    <td>Mercury</td>
    <td>.0553 (Earth =  1)</td>
    <td>1516 miles</td>
    <td>58.65 days</td>
   </tr>
   <tr>
    <td>Venus</td>
    <td>.815 (Earth = 1)</td>
    <td>3716 miles</td>
    <td>116.75 days</td>
   </tr>
   <tr>
    <td>Earth</td>
    <td>1 (Earth = 1)</td>
    <td>2107 miles</td>
    <td>1 days</td>
   </tr>
  </table>
 </body>
</html>

Этот документ, planets.html, действительно является хорошо сформированным и допустимым документом формата XHTML 1.0 (самый популярный вид XHTML) в соответствии с программой проверки допустимости HTML и XHTML консорциума W3C. Средство проверки HTML/XHTML можно найти в Интернете по адресу http://validator.w3.org/file-upload.html. В главе 6 представлена дополнительная информация о преобразованиях XML-XHTML.

К настоящему моменту мы провели обзор работы XSLT, рассмотрев преобразования из XML в HTML, XML и XHTML. Далее в книге мы познакомимся с такими преобразованиями XSLT, как преобразования из XML в RTF (форматированный текст, Rich Text Format), в простой текст, XSL-FO, JavaScript, в базы данных на основе SQL, а также и другие. Кроме того, существует много дополнительного материала по XSLT, о котором вам следует знать, и теперь мы освоимся в разнообразных видах ресурсов XSLT, которые можно найти в Интернете.

Оглавление книги


Генерация: 1.187. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз