Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在XSD模式中定义复杂类型的默认值_Xml_Xsd - Fatal编程技术网

Xml 在XSD模式中定义复杂类型的默认值

Xml 在XSD模式中定义复杂类型的默认值,xml,xsd,Xml,Xsd,我有一个包含以下内容的xsd: <xs:complexType name="MyDataType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="id" type="xs:int" fixed="9999" /> </xs:extension> </xs:sim

我有一个包含以下内容的xsd:

<xs:complexType name="MyDataType">
    <xs:simpleContent>
        <xs:extension base="xs:boolean">
            <xs:attribute name="id" type="xs:int" fixed="9999" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

<xs:complexType name="MessageType">
    <xs:all>
        <xs:element name="Data" type="MyDataType"/>
    </xs:all>
</xs:complexType>

所以这个片段是有效的:

<Message>
    <Data>true</Data>
</Message>

真的
其中消息定义为MessageType类型。但我想做的是让客户端能够省略数据元素:

<Message></Message>

(或等效的自闭合元件)

在语义上,有点像:

<xs:complexType name="MyDataType">
    <xs:simpleContent>
        <xs:extension base="xs:boolean" default="true">
            <xs:attribute name="id" type="xs:int" fixed="9999" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>


将默认值添加到扩展中。但是不起作用……

你不能实现你想要的

更重要的是,假设您将default=“true”移动到数据元素声明中,并使数据成为可选的(通过添加minOccurs=“0”)。。。它对元素和属性的工作方式不同。。。引用:“缺少属性时应用默认属性值,元素为空时应用默认元素值。”

因此,您可能得到的最接近的结果是允许使用
,在这种情况下,默认值“true”将通过PSVI可用。

的可能副本