不能同时对XML元素和属性施加限制

时间:2013-09-26 09:01:11

标签: xml xsd

我想要一个这个xml的模式

<person>
    <name age="12" code="abc">Jack</name>
</person>

Age must be between 10-90, code must be 3 letters, Name must be atmost 5 letters.

我无法在同一complexType中对元素“name”的限制及其属性的限制

这就是我所做的。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="name">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="age">
                                <xs:simpleType>
                                    <xs:restriction base="xs:integer">
                                        <xs:minInclusive value="10"/>
                                        <xs:maxInclusive value="90"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="code">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:pattern value="[a-z][a-z][a-z]"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

我不知道在哪里对Name元素进行限制。请帮助。

1 个答案:

答案 0 :(得分:0)

刚想通了。

<xs:simpleType name="nameRes">
    <xs:restriction base="xs:string">
        <xs:minLength value="5"/>
    </xs:restriction>
</xs:simpleType>

现在应该将此类型定义为扩展基值。 :P