3.2  валифицированные локальные элементы и атрибуты

ѕоскольку элементы и атрибуты могут квалифицироватьс¤ независимо друг от друга, начнем описание квалифицировани¤ с локальных элементов. ƒл¤ того чтобы определить, что все локально объ¤вленные элементы в схеме должны быть квалифицированы, мы устанавливаем значение elementFormDefault какqualified:

»зменени¤ вpo1.xsd дл¤ квалифицированных локальных элементов

<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:

—чет на покупку с квалифицированными по умолчанию элементами, 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>

 

Используются технологии uCoz