繁体   English   中英

XML-具有属性和子元素序列的模式元素

[英]XML - Schema Element with attribute and sequence of sub-elements

我有一个XML模式,如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <xs:element name="labels">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="label"  minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="language"  minOccurs="1" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="xs:string">
                                            <xs:attribute name="value" type="xs:string" />
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>    

</xs:schema>

<labels>可以具有许多<label>元素,而<label>元素可以具有许多<language>元素。 现在,我需要的是<label>元素具有一个称为“ identifier”的唯一属性。

我想要一个这样的XML结构:

<?xml version="1.0" encoding="UTF-8"?>

<labels
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xsi:noNamespaceSchemaLocation='labels.xsd'>

    <label identifier="class_contact">
        <language value="english">Contacts</language>
        <language value="afrikaans">Kontakte</language>
    </label>

</labels>

好的,我将其更改为此名称,现在它允许使用标识符属性,但不会强制其唯一。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <xs:element name="labels">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="label" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="language"  minOccurs="1" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="xs:string">
                                            <xs:attribute name="value" type="xs:string" />
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="identifier" type="xs:string" />
                    </xs:complexType>
                    <xs:unique name="UniqueLabelLanguage">
                        <xs:selector xpath="language" /> 
                        <xs:field xpath="@value" /> 
                    </xs:unique>
                    <xs:unique name="UniqueLabelIdentifier">
                        <xs:selector xpath="label" /> 
                        <xs:field xpath="@identifier" /> 
                    </xs:unique>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>    

</xs:schema>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <xs:element name="labels">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="label" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="language"  minOccurs="1" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="xs:string">
                                            <xs:attribute name="value" type="xs:string" />
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="identifier" type="xs:string" />
                    </xs:complexType>
                    <xs:unique name="UniqueLabelLanguage">
                        <xs:selector xpath="language" /> 
                        <xs:field xpath="@value" /> 
                    </xs:unique>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:unique name="UniqueLabelIdentifier">
            <xs:selector xpath="label" /> 
            <xs:field xpath="@identifier" /> 
        </xs:unique>
    </xs:element>    

</xs:schema>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM