XSLT | страница 80



УСОВЕРШЕНСТВОВАНИЯ В XSLT 2.0

Один из вопросов, которые призван решить XSLT 2.0, это упрощение импорта подобного текста без разбора из других файлов.

Отключение вывода эскейп-последовательностей

При помощи > можно включать в выходной документ непосредственно символы < и &, а не последовательности >< и >&. Для этого следует установить атрибут >disable-output-escaping элемента > в yes («да», по умолчанию он установлен в >no, «нет»). В приведенном ниже примере я при помощи > непосредственно пишу текст ">" в выходной документ:

>

>

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

>  

>   

>    </code></p><p><code>>     Planets</code></p><p><code>>   

>   

>   

>   

>   

>  


> 

>   <PLANET/>

>  

>

Результат следующий:

>

>  </code></p><p><code>>   Planets</code></p><p><code>> 

>  

>  

>  

>

Разумеется, не обязательно выводить > при помощи >: этот элемент можно было поместить непосредственно в элемент буквального результата. Но что делать в тех случаях, когда процессор XSLT не сможет распознать нужный нам в выходном документе элемент как фактический элемент? Например, в преобразованных документах XHTML вам потребуется >, но процессор XSLT сочтет, что это не хорошо сформированный XML. Как поместить этот элемент в выходные данные?

Можно попробовать поместить этот элемент в раздел >, как мы увидим в главе 6, и попытаться трактовать его как простые символьные данные, но процессоры XSLT все равно заменят < на ><, а > на >>.

Правильный способ добавить в вывод элемент > — использовать атрибут >doctype-public элемента >, как мы увидим в главе 6, но в качестве демонстрации для этих целей здесь я отключу вывод ESC-последовательностей в элементе > (хотя этот способ не рекомендован для создания элементов >). Вот как это выглядит:

>

>

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

> 

>   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">