Модуляризация XHTML

Подмодуль(и) объявлений


Далее вам необходимо определить один или более "подмодулей объявлений". Задачей этих файловых объектов является объявление элементов ОТД XML и списков атрибутов. Модуль объявлений XHTML должен конструироваться следующим образом:

  • Определить объект параметра для использования с ATTLIST каждого объявленного элемента. Этот объект параметра должен содержать %NS.decl.attrib;, если %MODULE.prefixed; установлен в INCLUDE, и %NS.decl.attrib; плюс "xmlns %URI.datatype; #FIXED '%MODULE.xmlns;'", если %MODULE.prefixed; установлен в IGNORE.
  • Объявить все элементы и атрибуты модуля. В каждый ATTLIST элемента включить объект параметра, определённый выше, так, чтобы все необходимые атрибуты xmlns были доступны каждому элементу модуля.
  • Если модуль добавляет атрибуты к тем элементам, определённым в модуле, которые не разделяют пространство имён этого модуля, объявить эти атрибуты так, чтобы они использовали префикс %MODULE.pfx. Например:

    <ENTITY % MODULE.img.myattr.qname "%MODULE.pfx;myattr" > <!ATTLIST %img.qname; %MODULE.img.myattr.qname; CDATA #IMPLIED >

    Здесь должен быть добавлен атрибут к элементу img модуля Image, но имя атрибута будет квалифицированным именем, включая префикс, если префиксы выбраны для объекта документа.

    Добавляется также атрибут xmlns:MODULE_PREFIX к списку атрибутов элемента img, так что разборщик, понимающий пространство имён XML, будет "знать", как разбирать пространство имён на безе его (ПИ) префиксов.

    В следующем примере показано объявление подмодуля для гипотетического модуля Inventory:

    <!-- ...................................................................... --> <!-- Inventory Elements Module ................................................... --> <!-- file: inventory-1.mod

    PUBLIC "-//MY COMPANY//ELEMENTS XHTML Inventory Elements 1.0//EN" SYSTEM "http://www.example.com/DTDs/inventory-1.mod"

    xmlns:inventory="http://www.example.com/xmlns/inventory" ...................................................................... -->


    <!-- Inventory Module

    shelf item sku desc price

    Этот модуль определяет простую структуру инвентаризации -->

    <!-- Определяет атрибуты глобального ПИ --> <![%Inventory.prefixed;[ <!ENTITY % Inventory.xmlns.attrib "%NS.decl.attrib;" > ]]> <!ENTITY % Inventory.xmlns.attrib "xmlns %URI.datatype; #FIXED '%Inventory.xmlns;'" >

    <!-- Определяет обычный набор атрибутов для всех элементов модуля --> <!ENTITY % Inventory.Common.attrib "%Inventory.xmlns.attrib; id ID #IMPLIED >

    <!-- Определяет элементы и атрибуты модуля --> <!ELEMENT %Inventory.shelf.qname; ( %Inventory.item.qname; )* > <!ATTLIST %Inventory.shelf.qname; location CDATA #IMPLIED %Inventory.Common.attrib; > <!ELEMENT %Inventory.item.qname; ( %Inventory.desc.qname;, %Inventory.sku.qname;, %Inventory.price.qname;) > <!ATTLIST %Inventory.item.qname; location CDATA #IMPLIED %Inventory.Common.attrib; >

    <!ELEMENT %Inventory.desc.qname; ( #PCDATA ) > <!ATTLIST %Inventory.desc.qname; %Inventory.Common.attrib; >

    <!ELEMENT %Inventory.sku.qname; ( #PCDATA ) > <!ATTLIST %Inventory.sku.qname; %Inventory.Common.attrib; >

    <!ELEMENT %Inventory.price.qname; ( #PCDATA ) > <!ATTLIST %Inventory.price.qname; %Inventory.Common.attrib; >

    <!-- end of inventory-1.mod -->


    Содержание раздела