Далее находится объявление рабочего пространства имен.
Работа с ним, возможно, окажется наиболее сложной. Это пространство включено в проект со следующей целью. Модули XHTML позволяют определить конфигурации, где традиционные правила описания типов документа XML могут использоваться как с поддержкой пространств имен XML, так и без нее. Данный механизм, называемый обход пространства имен (namespace hack) определяет последовательность шагов, которые позволяют разрабатывать типы документов, соответствующих требованиям пространства имен XML. Методы достижения этих целей можно представить следующим образом:
• каждый элемент, описанный в модуле, имеет символическое имя;
• по желанию разработчика именам элементов можно присвоить префикс, соответствующий идентификатору области видимости для данных имен;
• идентификатору пространства имен разрешается присваивать любое значение, соответствующее URI пространства имен неповторяющемуся идентификатору;
• независимо от решения автора использовать пространство имен или отказаться от него, если структура документа является корректной, - документ считается состоятельным.
Пространства имен выглядят несколько неопределенно. Возможно, по этой причине они не очень широко используются разработчиками Web-документов. Однако с увеличением количества коллекций элементов, создаваемых для XHTML-модулей, пространства имен потребуются, чтобы включить связанную с элементом или атрибутом семантику и избежать коллизий между именами.
Вернемся к нашему примеру. Информация, представленная в начале файла подраздела, была закомментирована, то есть вступительная часть предназначалась для пользователя, а не для компьютера. Начальная фраза выглядит так:
<!ENTITY %Recipe.prefix "http://www.webgeek.com/xmlns/recipe">
Данный префикс используется, если имена должны быть объявлены в собственных параметризованных компонентах, имена которых имеют суффикс .prefix:
<!ENTITY %Recipe.prefix "recipe"> <![% Recipe.prefixed;[
<!ENTITY %Recipe.pfx "%Recipe.pfx;:"> <!ENTITY %Recipe.xmlns.extra.attrib
"xmlns:%Recipe.prefix; %URI.datatype; #FIXED '%Recipe.xmlns;' "> ] ]>
<!ENTITY %Recipe.pfx " ">
<!ENTITY %Recipe.xmlns.extra.attrib " ">
Теперь для каждого элемента, который будет описан в модуле, необходим параметрический компонент, представляющий составное имя. Обычно к названию
такого параметра прибавляется суффикс . qname. Значения этого компонента всегда будут иметь следующий вид: %Module . pf х; name. Здесь строка идентификации модуля заменяет слово Module, а слово name - место для записи имени элемента, например:
%Recipe.pfx;ingredient
Таким образом, необходимо ввести следующие записи:
<!ENTITY %Recipe.recipe.qname "%Recipe.pfx;recipe">
<!ENTITY %Recipe.ingredients.qname "%Recipe.pfx;ingredients">
<!ENTITY %Recipe.ingredient.qname " %Recipe.pfx;ingredient">
<!ENTITY %Recipe.prep.qname "%Recipe.pfx;prep">
Опубликовал vovan666
April 09 2013 22:31:53 ·
0 Комментариев ·
4648 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.