ѕоскольку элементы и атрибуты
могут квалифицироватьс¤ независимо друг от друга, начнем описание
квалифицировани¤ с локальных элементов. ƒл¤ того чтобы определить, что все
локально объ¤вленные элементы в схеме должны быть квалифицированы, мы
устанавливаем значение elementFormDefault
как† qualified
:
<schema xmlns=Фhttp://www.w3.org/2001/XMLSchemaФ xmlns:po=Фhttp://www.example.com/PO1" targetNamespace=Фhttp://www.example.com/PO1Ф elementFormDefault=ФqualifiedФ attributeFormDefault=ФunqualifiedФ> <element name=ФpurchaseOrderФ type=Фpo:PurchaseOrderTypeФ/> <element name=ФcommentФ type=ФstringФ/> <complexType name=ФPurchaseOrderTypeФ> <!-- etc. --> </complexType> <!-- etc --> </schema>
» в этом документе примера мы
квалифицируем все элементы ¤вно:
<?xml version=Ф1.0Ф?> <apo:purchaseOrder xmlns:apo=Фhttp://www.example.com/PO1Ф orderDate=Ф1999-10-20Ф> <apo:shipTo country=ФUSФ> <apo:name>Alice Smith</apo:name> <apo:street>123 Maple Street</apo:street> <!-- etc. --> </apo:shipTo> <apo:billTo country=ФUSФ> <apo:name>Robert Smith</apo:name> <apo:street>8 Oak Avenue</apo:street> <!-- etc. --> </apo:billTo> <apo:comment>Hurry, my lawn is going wild!</apo:comment> <!-- etc --> <</apo:purchaseOrder>
јльтернативно,
мы можем установить ¤вную квалификацию дл¤ каждого элемента, который не¤вно
квалифицирован. Ёту возможность обеспечивает пространство имен по умолчанию,
как показано в po2.xml
:
<?xml version=Ф1.0Ф?> <purchaseOrder xmlns=Фhttp://www.example.com/PO1Ф orderDate=Ф1999-10-20Ф> <shipTo country=ФUSФ> <name>Alice Smith</name> <street>123 Maple Street</street> <!-- etc. --> </shipTo> <billTo country=ФUSФ> <name>Robert Smith</name> <street>8 Oak Avenue</street> <!-- etc. --> </billTo> <comment>Hurry, my lawn is going wild!</comment> <!-- etc. --> </purchaseOrder>
¬ po2.xml
, все элементы в документе принадлежат
одному пространству имен, и предложение пространства имен объ¤вл¤ет значение
пространство имен по умолчанию, которое примен¤ет ко всем элементам в
документе. —ледовательно, нет необходимости†
в ¤вном префиксе дл¤ элементов. ¬ другой раз, в схемах –аздела 5 ,
представлено† использование
квалифицированных элементов, когда они все требуют квалификации.
валификаци¤ атрибутов очень
похожа на квалификацию элементов. јтрибуты, которые должны быть
квалифицированы, либо потому что они объ¤влены глобально, либо потому что
атрибут attributeFormDefault
установлен как qualified
, в документах представл¤ютс¤ с префиксом. ќдин пример
квалифицированного атрибута Ц это атрибут xsi:nil
, который был введен в –азделе 2.9.
‘актически, атрибуты, дл¤ которых требуетс¤ квалификаци¤, должны иметь ¤вный
префикс, так как† спецификаци¤ XML-Namespaces не
обеспечивает механизм задани¤ пространств имен по умолчанию дл¤ атрибутов.
јтрибуты, дл¤ которых не требуетс¤ квалификаци¤, представл¤ютс¤ в документах
без префиксов.
ћеханизм квалификации, который
мы описали, примен¤етс¤ к объ¤влени¤м локальных элементов и атрибутов в
пределах указанного целевого пространства имен. “акже возможно дл¤ управлени¤
квалификацией при объ¤влении основных объ¤влений использовать атрибут form
. Ќапример, дл¤ того, чтобы потребовать в
документе дл¤ локально объ¤вленного атрибута publicKey квалификации, мы выполн¤ем следующее:
<schema xmlns=Фhttp://www.w3.org/2001/XMLSchemaФ xmlns:po=Фhttp://www.example.com/PO1" targetNamespace=Фhttp://www.example.com/PO1Ф elementFormDefault=ФqualifiedФ attributeFormDefault=ФunqualifiedФ> <!-- etc. --> <element name=ФsecureФ> <complexType> <sequence> <!-- element declarations --> </sequence> <attribute name=ФpublicKeyФ type=Фbase64BinaryФ form=ФqualifiedФ/> </complexType> </element> </schema>
ќтметим, что значение атрибута form
перекрывает значение атрибута attributeFormDefault
только дл¤ атрибута publicKey. “аким же способом атрибут form
может быть применен к объ¤влению
элемента. ѕример документа, соответствующий схеме:
<?xml version=Ф1.0Ф?> <purchaseOrder xmlns=Фhttp://www.example.com/PO1Ф xmlns:po=Фhttp://www.example.com/PO1Ф orderDate=Ф1999-10-20Ф> <!-- etc. --> <secure po:publicKey=ФGpM7Ф> <!-- etc --> </secure> </purchaseOrder>