Вход/Регистрация
XSLT
вернуться

Холзнер Стивен

Шрифт:

<xsl:if test=position=last">.</xsl:if>

 </xsl:template>

</xsl:stylesheet>

Вот результат:

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

<DOCUMENT>

 <TITLE>

The Planets

 </TITLE>

 <PLANETS>

The first three planets are: Mercury, Venus, and Earth

 </PLANETS>

</DOCUMENT>

Как видите, я смог добавить правильные знаки пунктуации, определяя место в документе при помощи

<xsl:if>
.

При помощи

<xsl:if>
можно также обнаруживать ошибки во время преобразования. Например, при помощи
<xsl:if>
можно вывести сообщение, есть ли в
planets.xml
элемент
<NAME>
(листинг 5.3).

Листинг 5.3. Обнаружение ошибок при помощи <xsl:if>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="PLANETS">

<DOCUMENT>

<TITLE>

The Planets

</TITLE>

<PLANETS>

The first three planets are: <xsl:apply-templates select="PLANET"/>

</PLANETS>

</DOCUMENT>

 </xsl:template>

 <xsl:template match="PLANET">

<xsl:if test="NAME[not(text)]">

<xsl:message terminate="yes">

Each planet must have a name!

</xsl:message>

</xsl:if>

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

<xsl:if test="position!=last">. </xsl:if>

<xsl:if test="position=last-1">and </xsl:if>

<xsl:if test="position=last">.</xsl:if>

 </xsl:template>

</xsl:stylesheet>

Чтобы проверить работу этого кода, я задал один из элементов

<NAME>
пустым:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xml" href="#"?>

<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></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>

 .

 .

 .

Вот как происходит обработка примера в Xalan:

C:\planets>java org.apache.xalan.xslt.Process -IN planets.xml -XSL errors.xsl -OUT new.xml

file:///C:/XSL/w.xsl: Line 18: Column 38: Each planet must have a name!

XSLT Error (javax.xml.transform.TransformerException): Stylesheet directed termination

Если вы знакомы с конструкцией

if
в языках программирования, вы знаете, что инструкция
if
обычно сопровождается инструкцией
else
, которая выполняется при ложности условия в
if
. Но в XSLT нет элемента
<xsl:else>
. Для задания альтернативных ветвей выполнения XSLT служит элемент
<xsl:choose>
.

  • Читать дальше
  • 1
  • ...
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: