为元素XSD定义新属性

时间:2014-04-15 07:33:45

标签: xml xsd

我有一个关于在我的xml架构中为我的元素定义新属性的问题(xsd) 我有一个这样的元素

<xs:element name="xyz" type="xs:hexBinary" minOccurs="2">

我想添加一个新属性&#34; size&#34;我可以在哪里指定元素的大小&#34; xyz&#34;。我该如何定义呢?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

以下是一个简单有效的XSD,围绕您的xyz元素构建。

<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:complexType name="dummy">
        <xs:sequence>
            <xs:element name="xyz" minOccurs="2">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:hexBinary">
                            <xs:attribute name="size" type="xs:int" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

任何具有属性和/或嵌套元素的元素必须是复杂类型。如果有嵌套元素,那么复杂类型的内容模型必须是complexContent;否则,它必须是简单的内容。

这种方法不允许您约束基类型(此处为hexBinary)。如果还需要为简单基类型指定约束facet,则必须单独创建一个新的简单类型,限制为hexBinary,然后使用属性扩展新类型。