Подмодуль Qualified Names/Квалифицированные Имена
Сначала Вам нужно определить подмодуль квалифицированных имён (подмодуль это обычный файловый объект, который отделён таким образом, что он может быть вставлен в результирующее ОТД в соответствующей точке). Подмодуль квалифицированных имён конструируется с прохождением следующих этапов (где строка MODULE заменена на соответствующую строку нового модуля):
Если %MODULE.prefixed установлен в INCLUDE, этот атрибут должен включать также объявление xmlns:%MODULE.prefix;.
Если модуль добавляет атрибуты к элементам, определённым в модуле, не разделяющем (share) ПИ данного модуля, объявите эти атрибуты так, чтобы они использовали префикс %MODULE.pfx. Например:
<ENTITY % MODULE.img.myattr.qname "%MODULE.pfx;myattr" >
Пример подмодуля qname для гипотетического Inventory Module приведён ниже:
<!-- ...................................................................... --> <!-- Inventory Qname Module ................................................... --> <!-- file: inventory-qname-1.mod
PUBLIC "-//MY COMPANY//ELEMENTS XHTML Inventory Qnames 1.0//EN" SYSTEM "http://www.example.com/DTDs/inventory-qname-1.mod"
xmlns:inventory="http://www.example.com/xmlns/inventory" ...................................................................... -->
<!-- Объявляется значение по умолчанию для префиксирования элементов этого модуля --> <!-- Заметьте, штаа NS.prefixed будет переопределён в XHTML Framework или объектом документа. --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % Inventory.prefixed "%NS.prefixed;" >
<!-- Объявляется действующее ПИ данного модуля --> <!ENTITY % Inventory.xmlns "http://www.example.com/xmlns/inventory" >
<!-- Объявляется префикс по умолчанию для данного модуля --> <!ENTITY % Inventory.prefix "inventory" >
<!-- Объявляется префикс для данного модуля --> <![%Inventory.prefixed;[ <!ENTITY % Inventory.pfx "%Inventory.prefix;:" > ]]> <!ENTITY % Inventory.pfx "" >
<!-- Объявляется атрибут ПИ xml для данного модуля --> <![%Inventory.prefixed;[ <!ENTITY % Inventory.xmlns.extra.attrib "xmlns:%Inventory.prefix; %URI.datatype; #FIXED '%Inventory.xmlns;'" > ]]> <!ENTITY % Inventory.xmlns.extra.attrib "" >
<!-- Объявляется дополнительное ПИ. которое должно быть включено в элементы XHTML --> <!ENTITY % XHTML.xmlns.extra.attrib %Inventory.xmlns.extra.attrib; >
<!-- Теперь определяются квалифицированные имена для всех элементов модуля --> <!ENTITY % Inventory.shelf.qname "%Inventory.pfx;shelf" > <!ENTITY % Inventory.item.qname "%Inventory.pfx;item" > <!ENTITY % Inventory.desc.qname "%Inventory.pfx;desc" > <!ENTITY % Inventory.sku.qname "%Inventory.pfx;sku" > <!ENTITY % Inventory.price.qname "%Inventory.pfx;price" >