Данный документ является переводом Рекомендации W3C Associating Style Sheets with XML documents Version 1.0 от 29 июня 1999 года и может содержать ошибки перевода. Оригинальная версия данного документа на английском языке является единственной нормативной версией и находится по адресу: http://www.w3.org/1999/06/REC-xml-stylesheet-19990629.
Автор перевода: Василь Ярошевич <yarosh@raleigh.ru> (Raleigh.ru).

W3C

Ассоциирование таблиц стилей с XML-документами
Версия 1.0

Рекомендация W3C от 29 июня 1999

Эта версия:
http://www.w3.org/1999/06/REC-xml-stylesheet-19990629
Последняя версия:
http://www.w3.org/TR/xml-stylesheet
Предыдущая версия:
http://www.w3.org/TR/1999/xml-stylesheet-19990428
Редактор:
James Clark <jjc@jclark.com>

Аннотация

В этом документе описывается, как таблицы стилей можно ассоциировать с XML-документом с помощью включения в пролог документа одной или более инструкций по обработке с указанием xml-stylesheet в качестве целевого приложения.

Статус этого документа

Этот документ был рассмотрен членами W3C и другими заинтересованными сторонами и утвержден в статусе Рекомендации. Данный документ является окончательным и может быть использован для ссылок и цитирования в качестве нормативного документа. Роль W3C в разработке данной рекомендации заключается в привлечении внимания к представленной спецификации и содействии ее широкому распространению. Результатом этой деятельности является повышение функциональности и универсальности Сети.

Перечень замеченных ошибок доступен по адресу: http://www.w3.org/TR/1999/xml-stylesheet-19990629/errata.

Комментарии к этой спецификации Вы можете посылать по адресу: <www-xml-stylesheet-comments@w3.org>. Также доступен архив комментариев: http://w3.org/Archives/Public/www-xml-stylesheet-comments.

Список текущих рекомендаций и других технических документов W3C можно найти по адресу http://www.w3.org/TR.

Рабочая Группа ожидает определения в будущих спецификациях дополнительных механизмов связывания таблиц стилей с XML-документами.

спользование инструкций по обработке XML в этой спецификации не следует воспринимать как прецедент. W3C не торопится рекомендовать использование инструкций по обработке в подобных целях. В Обосновании объясняется, почему они были использованы в этой спецификации.

Этот документ был разработан в рамках W3C XML Activity.

Содержание

1. Инструкция по обработке xml-stylesheet

Приложения

A. Ссылки
B. Обоснование

1. Инструкция по обработке xml-stylesheet

Таблицы стилей могут быть ассоциированы с документом XML[XML10] с помощью инструкции обработки с адресатом xml-stylesheet. Эта инструкция по своему действию аналогична элементу <LINK REL="stylesheet"> в HTML 4.0[HTML40].

Инструкция по обработке xml-stylesheet анализируется ровно таким же образом, что и открывающий тэг, за исключением того, что могут не существовать ссылки на сущности, отличные от предопределенных.

Грамматика приведена ровно в той же нотации, что использовалась в Рекомендации XML[XML10]. Символы, которые не определены здесь, определены, соответственно, в Рекомендации XML.

Инструкция по обработке xml-stylesheet
[1]    StyleSheetPI    ::=    '<?xml-stylesheet' (S PseudoAtt)* S? '?>'
[2]    PseudoAtt    ::=    Name S? '=' S? PseudoAttValue
[3]    PseudoAttValue    ::=    ('"' ([^"<&] | CharRef | PredefEntityRef)* '"'
| "'" ([^'<&] | CharRef | PredefEntityRef)* "'")
- (Char* '?>' Char*)
[4]    PredefEntityRef    ::=    '&amp;' | '&lt;' | '&gt;' | '&quot;' | '&apos;'

CharRef и PredefEntityRef в PseudoAttValue a интерпретируются точно так же, как и в значении обычного атрибута XML. Реальным значением псевдоатрибута является его значение после замены каждой ссылки символом, на который она ссылается. Эта замена не выполняется XML-процессором автоматически.

Инструкция обработки xml-stylesheet допустима только в прологе XML-документа. Синтаксис XML ограничивает, где конкретно в прологе она допустима.

ЗАМЕЧАНИЕ: Если инструкция по обработке xml-stylesheet находится во внешнем подмножестве DTD или внутри параметрической сущности, то возможно, что она не будет обработана невалидирующим XML-процессором (см. [XML10]).

Определены следующие псевдоатрибуты

href CDATA #REQUIRED
type CDATA #REQUIRED
title CDATA #IMPLIED
media CDATA #IMPLIED
charset CDATA #IMPLIED
alternate (yes|no) "no"

Семантика псевдоатрибутов точно такая же, как и в <LINK REL="stylesheet"> в HTML 4.0, за исключением псевдоатрибута alternate. Если определено значение alternate="yes", то инструкция по обработке принимает семантику <LINK REL="alternate stylesheet"> вместо <LINK REL="stylesheet">.

ЗАМЕЧАНИЕ: Поскольку значением атрибута href является ссылка URI, то в качестве него может выступать относительный URI, а также может содержать идентификатор фрагмента. В частности, ссылка URI может содержать исключительно идентификатор фрагмента. Такая ссылка URI является ссылкой на часть документа, содержащего инструкцию по обработке xml-stylesheet (см. [RFC2396]). Как следствие, инструкция по обработке xml-stylesheet позволяет включать таблицы стилей в тот же самый документ, что содержит и саму инструкцию.

В некоторых случаях таблицы стилей могут быть связаны с XML-документом при помощи средств, внешних относительно этого документа. Например, в ранних версиях HTTP [RFC2068] (раздел 19.6.2.4) таблицы стилей возможно было ассоциировать с XML-документами с помощью заголовка Link. Все ссылки на таблицы стилей, которые определены внешними средствами по отношению к документу, разбираются перед ссылками, определенными с помощью инструкции по обработке xml-stylesheet аналогично тому, как этот момент разрешен в HTML 4.0 (см. раздел 14.6).

Здесь приведены несколько примеров из HTML 4.0 с соответствующими инструкциями обработки:

<LINK href="mystyle.css" rel="style sheet" type="text/css">
<?xml-stylesheet href="mystyle.css" type="text/css"?>

<LINK href="mystyle.css" title="Compact" rel="stylesheet"
type="text/css">
<?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?>

<LINK href="mystyle.css" title="Medium" rel="alternate stylesheet"
type="text/css">
<?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium"
type="text/css"?>

Одновременное использование нескольких инструкций по обработке xml-stylesheet также допустимо с точно такой же семантикой, как и в случае с LINK REL="stylesheet". Например,

<LINK rel="alternate stylesheet" title="compact" href="small-base.css"
type="text/css">
<LINK rel="alternate stylesheet" title="compact" href="small-extras.css"
type="text/css">
<LINK rel="alternate stylesheet" title="big print" href="bigprint.css"
type="text/css">
<LINK rel="stylesheet" href="common.css" type="text/css">

должно быть эквивалентно следующему:

<?xml-stylesheet alternate="yes" title="compact" href="small-base.css"
type="text/css"?>
<?xml-stylesheet alternate="yes" title="compact" href="small-extras.css"
type="text/css"?>
<?xml-stylesheet alternate="yes" title="big print" href="bigprint.css"
type="text/css"?>
<?xml-stylesheet href="common.css" type="text/css"?>

A. Ссылки

HTML40
World Wide Web Consortium. HTML 4.0 Specification. W3C Recommendation. See http://www.w3.org/TR/REC-html40
RFC2068
R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen, and T. Berners-Lee. Hypertext Transfer Protocol -- HTTP/1.1.. IETF RFC 2068. See http://www.ietf.org/rfc/rfc2068.txt.
RFC2396
T. Berners-Lee, R. Fielding, and L. Masinter. Uniform Resource Identifiers (URI): Generic Syntax. IETF RFC 2396. See http://www.ietf.org/rfc/rfc2396.txt.
XML10
World Wide Web Consortium. Extensible Markup Language (XML) 1.0. W3C Recommendation. See http://www.w3.org/TR/1998/REC-xml-19980210

B. Обоснование

При подготовке этой спецификации было крайне важно завершить ее до выхода очередных релизов от главных производителей браузеров. И только выбрав простой механизм, непосредственно базирующийся на уже проверенных существующих механизмах, можно было успеть вовремя.

Использование инструкции по обработке позволяет избежать замусоривания главной структуры документа прикладной специфической информацией, важной исключительно для обработки.

Механизм, выбранный для этой версии спецификации, не является ограничением для дополнительных механизмов, которые могут появиться в будущих версиях. Нет никаких оснований ожидать, что в них также будут использоваться инструкции по обработке; в них связывающая информация может даже не будет включаться в исходный документ.