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

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

Шрифт:

Листинг 5.13. Многоуровневая нумерация

<?xml version="1.0"?>

<хsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="node">

<xsl:copy>

<xsl:number format="1.1.1." level="multiple" count="*"/>

<xsl:apply-templates select="node"/>

</xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Вот результат преобразования planets.xml в новый XML-документ, в котором перенумерованы все уровни элементов в соответствии с иерархией документа:

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

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

<PLANETS>1.

 <PLANET>1.1.

<NAME>1.1.1. Mercury</NAME>

<MASS>1.1.2. .0553</MASS>

<DAY>1.1.3. 58.65</DAY>

<RADIUS>1.1.4. 1516</RADIUS>

<DENSITY>1.1.5. .983</DENSITY>

<DISTANCE>1.1.6. 43.4</DISTANCE><!--В перигелии-->

 </PLANET>

 <PLANET>1.2.

<NAME>1.2.1. Venus</NAME>

<MASS>1.2.2. .815</MASS>

<DAY>1.2.3. 116.75</DAY>

<RADIUS>1.2.4. 3716</RADIUS>

<DENSITY>1.2.5. .943</DENSITY>

<DISTANCE>1.2.6 66.8</DISTANCE><!--В перигелии-->

 </PLANET>

 <PLANET>1.3.

<NAME>1.3.1. Earth</NAME>

<MASS>1.3.2. 1</MASS>

<DAY>1.3.3. 1</DAY>

<RADIUS>1.3.4. 2107</RADIUS>

<DENSITY>1.3.5. 1</DENSITY>

<DISTANCE>1.3.6. 128.4</DISTANCE><!--В перигелии-->

 </PLANET>

</PLANETS>

На этом мы завершаем рассмотрение нумерации документов и переходим к последней теме этой главы — расширяемости XSLT.

Расширяемость XSLT

Несмотря на кажущуюся сложность XSLT, он во многих отношениях ограничен по сравнению с языками программирования, и в процессорах XSLT сразу же начали появляться расширения XSLT. Например, Saxon представил элемент

<saxon:while>
, реализуя в XSLT стандартный для программирования цикл
while
(до тех пор, пока). Xalan представил такие элементы, как
<redirect:write>
, для поддержки вывода нескольких документов. А процессор MSXML3 от Microsoft позволяет писать функции на языках таких сценариев, как JavaScript, и затем вызывать их и выполнять их код.

Можно представить, с каким беспокойством на это смотрит W3C. Его работа, в принципе, заключается в стандартизации работы таких языков, как XSLT, но производители постоянно представляли свои собственные, нестандартные расширения в виде новых элементов и функций. С другой стороны, W3C не может предугадать все новые элементы и функции, поэтому консорциум начал работать над стандартизацией способов включения функций расширения и элементов в XSLT. Расширения должны удовлетворять ряду общих правил:

• расширения должны использовать пространства имен во избежание конфликтов с элементами XSL;

• процессор XSLT должен быть в состоянии распознать применение расширения — и в случае ошибки расширения реагировать хорошо определенным способом;

• таблица стилей должна быть в состоянии проверить, доступно ли определенное расширение, и если нет, вернуться назад.

НОВОЕ В XSLT 2.0

Легко представить сложности W3C даже с этими общими правилами, и комитет XSLT 2.0 собирается исследовать возможность реализации всех расширений на «чистом» XSLT, вообще не прибегая к каким-либо внешним языкам программирования.

  • Читать дальше
  • 1
  • ...
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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