2001 г
| REC-xml-names-19990114 |
Пространства имен в XML
World Wide Web Консорциум, 14 января 1999 года
- Данная версия:
- http://www.w3.org/TR/1999/REC-xml-names-19990114
- http://www.w3.org/TR/1999/REC-xml-names-19990114/xml-names.xml
- http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html
- Последняя версия:
- http://www.w3.org/TR/REC-xml-names
- Предыдущая версия:
- http://www.w3.org/TR/1998/PR-xml-names-19981117
- Редакторы:
- Tim Bray (Textuality) mailto:tbray@textuality.com
- Dave Hollander (Hewlett-Packard Company) mailto:dmh@corp.hp.com
- Andrew Layman (Microsoft) mailto:andrewl@microsoft.com
Copyright © 1999 W3C (MIT, INRIA, Keio ). Все права защищены. В отношении данного документа действуют правила W3C, касающиеся ответственности, торговой марки, использования документа и лицензирования программного обеспечения.
Статус данного документа
Данный документ был рассмотрен членами W3C, другими заинтересованными сторонами и утвержден Директором в качестве Рекомендации W3C. Данный документ является окончательным и может использоваться как нормативный материал для ссылки и цитирования в других документах. Участие W3C в продвижении представленной Рекомендации заключается в привлечении к ней внимания и способствовании ее широкому распространению. Тем самым наращиваются функциональные возможности и повышается степень универсальности Сети.
Перечень ошибок, обнаруженных в данной спецификации, представлен на странице http://www.w3.org/XML/xml-names-19990114-errata.
Об ошибках, обнаруженных в данном документе, просьба сообщать по адресу xml-names-editor@w3.org.
Резюме
Пространство имен XML обеспечивает простую методику получения названий для элементов и атрибутов в документах, использующих расширяемый язык разметки. Осуществляется это путем привязки последних к пространствам имен, идентифицируемым с помощью ссылок URI.
-
- 1. Причины возникновения и краткое описание
- 1.1 Замечания по нотации и использованию
- 2. Декларирование пространства имен
- 3. Полные имена
- 4. Использование полных имен
- 5. Пространство имен для элементов и атрибутов
- 5.1 Область действия пространства имен
- 5.2 Пространство имен по умолчанию
- 5.3 Уникальность атрибутов
- 6. Согласованность документов
Приложения
-
- A. Внутренняя структура пространства имен XML (обсуждение стандарта)
- A.1 Недостаток обычного пространства имен
- A.2 Разделы пространства имен XML
- A.3 Расширенные типы элементов и названия атрибутов
- A.4 Уникальность расширенных имен атрибутов
- B. Благодарности (обсуждение стандарта)
- C. Ссылки
Мы предвидим появление таких приложений для обработки расширенного языка разметки (XML), когда в одном XML документе (обычно называемом "словарем разметки") собраны элементы и атрибуты, определяемые и используемые во многих программных модулях. Повод для появления такой модульности: если имеется понятный словарь разметки и есть использующее его программное обеспечение, то проще использовать такую разметку еще раз, чем изобретать ее заново.
Подобные документы, содержащие несколько словарей разметки, порождают проблемы распознания и коллизии. Программные модули должны уметь распознавать тэги и атрибуты, для обработки которых они созданы, даже если имеют место "коллизии", когда выясняется, что разметка, разработанная для двух различных программных пакетов, использует одни и те же типы элементов и названия атрибутов.
Подобные соображения выдвигают требование, чтобы конструкции документа использовали универсальные имена, область действия которых выходит за рамки того документа, где они были определены. Данная спецификация описывает механизм - пространства имен XML - позволяющий выполнить это условие.
[Определение:] Пространство имен XML - это идентифицируемая с помощью ссылки URI [RFC2396] коллекция имен, используемых в XML документах для обозначения типов элементов и именования атрибутов. Пространство имен XML отличается от тех "пространств имен", которые обычно используются в компьютерных дисциплинах, тем, что в варианте для XML оно имеет внутреннюю структуру, и, с математической точки зрения, набором не является. Данные вопросы обсуждаются в Приложении "A. Внутренняя структура пространства имен XML".
[Определение:] Используемые для идентификации пространств имен ссылки URI считаются идентичными, если они совпадают с точностью до символа. Заметим, что ссылки URI, не являющиеся идентичными в указанном смысле, в действительности по функциональности могут быть эквивалентны. Примером могут служить ссылки, отличающиеся только регистром, а также ссылки во внешних сущностях, имеющие иной базовый адрес URI.
Названия в пространстве имен XML могут быть представлены в виде полных имен (qualified names), содержащих единственный символ двоеточия, делящий такое имя на префикс пространства имен и локальную часть. С помощью префикса, привязанного к ссылке URI, осуществляется выбор пространства имен. Сочетание единообразно обрабатываемого URI пространства имен и собственного пространства имен документа формирует идентификатор, уникальный повсюду. Дается методика определения области видимости префикса и значения по умолчанию.
Ссылка URI может содержать символы, недопустимые для имен, поэтому саму ссылку нельзя использовать в качестве префикса пространства имен. Таким образом, префикс пространства имен служит заменителем ссылки URI. Далее описывается построенный на атрибутах синтаксис, позволяющий декларировать связь префикса пространства имен со ссылкой URI. Программное обеспечение, поддерживающее указанный сценарий использования пространства имен, должно уметь анализировать и использовать описанные декларации и префиксы.
Отметим, что многие используемые в сценариях этой спецификации нетерминальные конструкции определяются не здесь, а в спецификации XML [XML]. Если определенная здесь нетерминальная конструкция имеет то же самое имя, что было определено для нетерминала в спецификации XML, то множество строк, соответствующих сценарию здесь, является лишь подмножеством всех строк, соответствующих сценарию там.
В сценариях этого документа аббревиатура NSC
расшифровывается как "Namespace Constraint" (ограничение на пространство имен), одно из правил, которому должны следовать документы, отвечающие требованиям данной спецификации.
Заметим, что все использованные в примерах названия доменов Internet (за исключением w3.org
) выбраны случайным образом и их не следует принимать за источник информации.
[Определение:] Пространство имен декларируется с помощью набора зарезервированных атрибутов. Названием такого атрибута должно быть xmlns
, либо оно должно использовать в качестве префикса xmlns:
. Указанные атрибуты, как и любые другие атрибуты в XML, могут быть указаны явно, либо быть назначены по умолчанию.
Названия атрибутов для декларации пространства имен |
|
[Определение:] Значением атрибута для ссылки URI является название пространства имен, используемое для его идентифицикации. Чтобы название пространства имен могло служить указанной цели, оно должно обладать свойствами уникальности и постоянства. Не ставится задачи непосредственного получения по этому имени схемы отображения (если таковая существует). Примером синтаксиса, построенного с подобными целями, может служить синтаксис Uniform Resource Names [RFC2141]. Однако следует заметить, что и обычными адресами URL можно точно так же манипулировать для достижения тех же самых целей.
[Определение:] Если название атрибута соответствует сценарию PrefixedAttName
, то поле NCName
определяет префикс пространства имен. В область видимости того элемента, в котором эта декларация была дана, указанный префикс используется для привязки имен элементов и атрибутов к названию пространства имен, указанному в значении декларирующего атрибута. В таких декларациях название пространства имен пустым быть не может.
[Определение:] Если название атрибута соответствует сценарию DefaultAttName
, то указанное в значении атрибута название пространства имен в область видимости того элемента, где эта декларация была дана, становится названием пространства имен по умолчанию. В декларации по умолчанию значение атрибута может быть нулевым. Пространства имен по умолчанию и переопределение деклараций обсуждаются в главе "5. Пространство имен для элементов и атрибутов".
Пример декларации, связывающей префикс edi
с пространством имен, имеющим название http://ecommerce.org/schema
:
<x xmlns:edi='http://ecommerce.org/schema'>
<!- для элемента "x" и его содержимого
префикс "edi" связан с http://ecommerce.org/schema
-->
</x> |
Ограничение для пространства имен: Начальный "XML"
Префиксы, начинающиеся с последовательности из трех букв x
, m
, l
(в любом регистре), зарезервированы для использования в XML и связанных с ним спецификациях.
[Определение:]
В XML документах, отвечающих требованиям данной спецификации, часть имен (конструкций, соответствующих нетерминальному Name
) может быть представлено в виде полных имен (qualified names), определяемых следующим образом:
Поле Prefix
определяет в полном имени префикс пространства имен и должно быть связано со ссылкой URI в декларации пространства имен. [Определение:] Поле LocalPart
определяет локальную часть (local part) полного имени.
Заметим, что префикс используется только для хранения названия пространства имен. При построении имен, область действия которых выходит за пределы первоначального документа, приложения должны использовать название пространства имен, а не префикс.
В XML документах, отвечающих требованиям данной спецификации, полные имена даются для следующих типов элементов:
Пример использования полного имени в качестве типа элемента:
<x xmlns:edi='http://ecommerce.org/schema'>
<!-- пространство имен элемента 'price' - http://ecommerce.org/schema -->
<edi:price units='Euro'>32.18</edi:price>
</x> |
Атрибут либо декларирует пространство имен, либо его название дается как полное имя:
Пример использования полного имени в качестве названия атрибута:
<x xmlns:edi='http://ecommerce.org/schema'>
<!-- пространство имен атрибута 'taxClass' - http://ecommerce.org/schema -->
<lineItem edi:taxClass="exempt">Baby food</lineItem>
</x> |
Ограничение пространства имен: Декларированный префикс
Префикс пространства имен, если это ни xml
и ни xmlns
, должен быть объявлен в атрибуте, декларирующем пространство имен и находящемся в начальном тэге либо того элемента, где этот префикс используется, либо элемента, являющегося его предком (то есть, находиться в элементе, в содержимом которого действует префиксная разметка). Префикс xml
по определению связан с названием пространства имен http://www.w3.org/XML/1998/namespace
. Префикс xmlns
используется только для привязки к пространству имен, но сам с каким-либо названием пространства имен не связан.
Такое ограничение может привести к трудностям в работе, если атрибут, декларирующий пространство имен, не был представлен непосредственно в сущности документа XML, а был декларирован во внешней сущности как атрибут по умолчанию. Подобные декларации могут быть недоступны для программ, использующих непроверяющий XML процессор. Многие XML приложения, очевидно включая и те, которые зависят от пространства имен, не могут использовать проверяющий процессор. Для того, чтобы такие приложения работали корректно, декларации пространств имен должны даваться либо непосредственно, либо через атрибуты по умолчанию, объявленные во внутреннем наборе DTD.
Если название элемента или тип атрибутов появляются в декларациях DTD, они могут быть представлены при этом в виде полного имени.
Полные имена в декларациях |
|
Считается, что декларация пространства имен относится к тому элементу, где она была указана, и всем элементам в содержимом этого элемента (если она не была переопределена другой декларацией пространства имен с таким же полем NSAttName
):
<?xml version="1.0"?>
<!-- все элементы здесь явно соотнесены с пространством имен HTML -->
<html:html xmlns:html='http://www.w3.org/TR/REC-html40'>
<html:head><html:title>Frobnostication</html:title></html:head>
<html:body><html:p>Moved to <html:a href='http://frob.com'>here.</html:a></html:p></html:body>
</html:html> |
Как показано в следующем примере, в атрибутах одного элемента может быть декларировано сразу несколько префиксов пространства имен:
<?xml version="1.0"?>
<!-- оба префикса пространства имен доступны отовсюду -->
<bk:book xmlns:bk='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'>
<bk:title>Cheaper by the Dozen</bk:title>
<isbn:number>1568491379</isbn:number>
</bk:book> |
Считается, задаваемое по умолчанию пространство имен относится к тому элементу, где оно декларировано (если этот элемент не имеет префикса пространства имен), а также ко всем элементам в содержимом этого элемента, не имеющим префикса. Если поле ссылки URI в декларации пространства имен по умолчанию оказалось пустым, считается, что все элементы без префиксов в области видимости этой декларации вообще не принадлежат ни одному пространству имен. Заметим, что пространства имен, задаваемые по умолчанию, непосредственно на атрибуты не распространяются.
<?xml version="1.0"?>
<!-- в данном случае элементы по умолчанию относятся к пространству имен HTML -->
<html xmlns='http://www.w3.org/TR/REC-html40'>
<head><title>Frobnostication</title></head>
<body><p>Moved to
<a href='http://frob.com'>here</a>.</p></body>
</html> |
<?xml version="1.0"?>
<!-- типы элементов без префикса из "books" -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
</book> |
Более развернутый пример, показывающий область действия пространства имен:
<?xml version="1.0"?>
<!-- первоначально по умолчанию используется пространство имен "books" -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
<notes>
<!-- для отдельного комментария пространством имен,
используемым по умолчанию, сделать HTML -->
<p xmlns='urn:w3-org-ns:HTML'>
This is a <i>funny</i> book!
</p> </notes>
</book> |
Пространство имен по умолчанию может быть задано пустой строкой. Это будет иметь тот же самый эффект, словно в пределах видимости этой декларации пространства имен, используемого по умолчанию, вообще не было декларировано.
<?xml version='1.0'?>
<Beers>
<!-- здесь по умолчанию используется пространство имен HTML -->
<table xmlns='http://www.w3.org/TR/REC-html40'>
<th><td>Name</td><td>Origin</td><td>Description</td></th>
<tr>
<!-- внутри ячеек таблицы нет пространства имен,
используемого по умолчанию -->
<td><brandName xmlns="">Huntsman</brandName></td>
<td><origin xmlns="">Bath, UK</origin></td>
<td>
<details xmlns=""><class>Bitter</class><hop>Fuggles</hop>
<pro>Wonderful hop, light alcohol, good summer beer</pro>
<con>Fragile; excessive variance pub to pub</con>
</details>
</td>
</tr>
</table>
</Beers> |
В документе XML, отвечающем требованиям данной спецификации, ни один тэг не может иметь два атрибута
- с одинаковыми именами, или
- с полными именами, локальная часть которых совпадает, а префиксы привязаны к названиям пространства имен, которые идентичны.
Так, в следующем примере все начальные тэги bad
неправильные:
<!-- http://www.w3.org связано с n1 и n2 -->
<x xmlns:n1="http://www.w3.org"
xmlns:n2="http://www.w3.org" >
<bad a="1" a="2" />
<bad n1:a="1" n2:a="2" />
</x> |
Однако в другом примере все тэги правильны (во втором случае потому, что пространство имен по умолчанию не относится к названиям атрибутов):
<!-- по умолчанию http://www.w3.org связано с n1 -->
<x xmlns:n1="http://www.w3.org"
xmlns="http://www.w3.org" >
<good a="1" b="2" />
<good a="1" n1:a="2" />
</x> |
В XML документах, отвечающих требованиям данной спецификации, названия атрибутов и типов элементов должны соответствовать сценарию QName
и отвечать требованиям "Namespace Constraints".
Документ XML соответствует требованиям данной спецификации, если в нем все те лексемы, которые, согласно требованиям XML, должны отвечать сценарию Name
из XML, в действительности соответствуют сценарию NCName
из этой спецификации.
Для документа согласованность дает следующее:
- Названия типов и типов элементов либо не содержат, либо содержат только один символ двоеточия.
- Названия сущностей, адресаты PI и названия нотаций не содержат символов двоеточия.
Строго говоря, значения атрибутов, декларируемые для типов ID
, IDREF(S)
, ENTITY(IES)
и NOTATION
, также относятся к сценарию Names
, а потому тоже не должны содержать символа двоеточия. Однако декларированный тип значений атрибутов доступен только для тех процессоров, которые читают декларации разметки, например для проверяющих процессоров. Таким образом, если не было заявлено использование проверяющего процессора, нельзя гарантировать, что содержимое значения атрибута будет проверено на соответствие требованиям данной спецификации.
Приложения
В компьютерных дисциплинах термин "пространство имен" обычно сопоставлется с набором имен, то есть, коллекцией, не содержащей дубликатов. Однако, если бы названия, используемые в разметке XML, привязывались к такому пространству имен, это сильно уменьшило бы их полезность. В основном такие названия используются в XML документах для того, чтобы программные модули, такие как процессоры запросов, управляемые стилями машины рендеринга и управляемые схемами программы проверки, могли распознавать логические структуры документа. Рассмотрим следующий пример:
<section><title>Book-Signing Event</title>
<signing>
<author title="Mr" name="Vikram Seth" />
<book title="A Suitable Boy" price="$22.95" /></signing>
<signing>
<author title="Dr" name="Oliver Sacks" />
<book title="The Island of the Color-Blind" price="$12.95" /></signing>
</section> |
В данном примере название title
появляется в разметке три раза, однако очевидно, что само по себе оно дает недостаточно информации для правильной обработки документа программным модулем.
Другая проблемная область происходит от использования "глобальных" атрибутов, что иллюстрируется следующим примером, в котором фрагмент XML документа необходимо вывести на экран с помощью стиля CSS:
<RESERVATION>
<NAME HTML:CLASS="largeSansSerif">Layman, A</NAME>
<SEAT CLASS="Y" HTML:CLASS="reallyImportant">33B</SEAT>
<DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION> |
В этом случае атрибут CLASS
, описывающий класс пассажира и принимающий такие значения, как "J", "Y" и "C", на всех уровнях семантики отличается от атрибута HTML:CLASS
, который используется для моделирования всего синтаксического богатства HTML путем замены ограниченного набора элементов иерархией подклассов.
Язык XML 1.0 не имеет встроенного механизма декларирования "глобальных" атрибутов. Такие конструкции, как атрибут CLASS
в HTML, становятся глобальными только при их тщательном описании и соответствующей интерпретации со стороны HTML приложений. Вместе с тем, атрибуты, главной отличительной чертой которых является уникальность имен, как правило, можно найти во многих приложениях.
Для того, чтобы создание полных и неполных имен могло соответствовать своему назначению, каждое имя, появляющееся в пространстве имен XML, мы сопоставляем с одним из нескольких обычных непересекающихся (то есть, структурирующих) пространств, называемых разделами пространства имен. Перечень этих разделов:
- Раздел для всех типов элементов
- В этом разделе оказываются все типы элементов, заданные в пространстве имен XML. Каждый тип имеет уникальную локальную часть, сочетание названия пространства имен и локальной части уникальным образом идентифицирует тип элемента.
- Раздел глобальных атрибутов
- В этом разделе содержатся названия всех атрибутов, определенных в данном пространстве имен как глобальные. Единственное, что требуется от глобального атрибута - его имя должно быть уникальным для всего раздела глобальных атрибутов. Данная спецификация не содержит указаний касательно порядка использования таких атрибутов. Сочетание названия пространства имен и названия глобального атрибута идентифицирует глобальный атрибут уникальным образом.
- Разделы для каждого типа элементов
- С каждым типом в разделе всех типов элементов связано пространство имен, в котором располагаются названия неполных атрибутов этого элемента. Это обычное пространство имен, поскольку возникновение одном и том же элементе нескольких атрибутов с одинаковыми именами XML 1.0 запрещено. Сочетание имени атрибута, типа элемента и названия пространства имен уникальным образом идентифицирует каждый неполный атрибут.
В XML документах, отвечающих требованиям данной спецификации, названия всех полных (с префиксом) атрибутов относены к разделу глобальных атрибутов, тогда как названия всех неполных атрибутов помещаются в раздел соответствующего типа элемента.
Чтобы было проще задавать правила и выполнять сравнение, для каждого типа элементов и названия атрибутов в XML документе мы определяем расширенный формат, описываемый здесь средствами синтаксиса элементов XML.
[Определение:] Расширенный тип элемента представлен как пустой элемент XML типа ExpEType
. Он имеет обязательный атрибут type
, определяющий в этом типе локальную часть
, и необязательный атрибут ns
, определяющий название пространства имен, если данный элемент является полным.
[Определение:] Расширенное имя атрибута представлено как пустой элемент XML типа ExpAName
. Оно имеет обязательный атрибут name
, определяющий название. Если атрибут является глобальным, он имеет обязательный атрибут ns
, определяющий название пространства имен. В противном случае имеется обязательный атрибут eltype
, определяющий тип задействованного элемента, а также необязательный атрибут elns
, определяющий название пространства имен для этого элемента, если таковое известно.
Небольшое изменение приведенных ранее примеров проиллюстрирует работу расширенных типов элементов и названий атрибутов. Ниже представлены два фрагмента, сопровождаемые таблицей, показывающей обработку имен:
<!-- 1 --> <section xmlns='urn:com:books-r-us'>
<!-- 2 --> <title>Book-Signing Event</title>
<!-- 3 --> <signing>
<!-- 4 --> <author title="Mr" name="Vikram Seth" />
<!-- 5 --> <book title="A Suitable Boy" price="$22.95" />
</signing>
</section> |
Названия должны обрабатываться следующим образом:
Строка | Имя | Результат |
1 | section |
<ExpEType type="section" ns="urn:com:books-r-us" /> |
2 |
title | <ExpEType type="title" ns="urn:com:books-r-us" /> |
3 |
signing | <ExpEType type="signing" ns="urn:com:books-r-us" />
|
4 |
author | <ExpEType type="author" ns="urn:com:books-r-us" /> |
4 |
title |
<ExpAName name='title' eltype="author" elns="urn:com:books-r-us" />
|
4 |
name |
<ExpAName name='name' eltype="author" elns="urn:com:books-r-us" /> |
5 |
book | <ExpEType type="book" ns="urn:com:books-r-us" /> |
5 |
title | <ExpAName name='title' eltype="book" elns="urn:com:books-r-us" /> |
5 |
price | <ExpAName name='price' eltype="book" elns="urn:com:books-r-us" /> |
<!-- 1 --> <RESERVATION xmlns:HTML="http://www.w3.org/TR/REC-html40">
<!-- 2 --> <NAME HTML:CLASS="largeSansSerif">Layman, A</NAME>
<!-- 3 --> <SEAT CLASS="Y" HTML:CLASS="largeMonotype">33B</SEAT>
<!-- 4 --> <HTML:A HREF='/cgi-bin/ResStatus'>Check Status</HTML:A>
<!-- 5 --> <DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION> |
1 |
RESERVATION | <ExpEType type="RESERVATION" /> |
2 |
NAME | <ExpEType type="NAME" /> |
2 |
HTML:CLASS |
<ExpAName name="CLASS" ns=http://www.w3.org/TR/REC-html40 /> |
3 |
SEAT | <ExpEType type="SEAT" /> |
3 |
CLASS | <ExpAName name="CLASS" eltype="SEAT"> |
3 |
HTML:CLASS | <ExpAName name="CLASS" ns="http://www.w3.org/TR/REC-html40" /> |
4 |
HTML:A | <ExpEType type="A" ns="http://www.w3.org/TR/REC-html40" /> |
4 |
HREF | <ExpAName name="HREF" eltype="A" elns="http://www.w3.org/TR/REC-html40" /> |
5 |
DEPARTURE | <ExpEType type="DEPARTURE" /> |
Ограничение, описанное ранее в главе "5.3 Уникальность атрибутов", может быть реализовано непосредственно в виде требования, что элементу не разрешается иметь два атрибута, расширенные имена которых эквивалентны, то есть имеют одинаковую пару атрибут-значение.
Данный материал является результатом деятельности большого количества людей, особенно членов Рабочей Группы XML из консорциума World Wide Web, Special Interest Group и участников W3C Metadata Activity. Особенно был ценен вклад Чарльза Франксона (Charles Frankston) из компании Microsoft.
- RFC2141
- IETF (Internet Engineering Task Force) RFC 2141: URN Syntax, ред. R. Moats., май 1997.
- RFC2396
- IETF (Internet Engineering Task Force) RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax, ред. T. Berners-Lee, R. Fielding, L. Masinter., август 1998.
- XML
- Extensible Markup Language (XML) 1.0, ред. Tim Bray, Jean Paoli и C. M. Sperberg-McQueen. 10 февраля 1998. Доступна по адресу http://www.w3.org/TR/REC-xml.
При переводе спецификации на русский язык для ряда терминов был выбран следующий вариант перевода:
conformance document - согласованный документ; документ, отвечающий требованиям спецификации
document entity - сущность документа
entity - сущность
markup vocabulary - словарь разметки
namespace - пространство имен
nonterminal - нетерминальная конструкция
production - сценарий
qualified name - полное имя
start-tag - начальный тэг
validating processor - проверяющий процессор (XML)
|
Если у вас возникли какое-либо замечания, мы будем рады их получить по адресу radik_u@mail.ru.