在XSD中导入及其实现

时间:2012-07-30 09:03:16

标签: xsd xsd.exe xsd2code linq-to-xsd

我有两个独立的XSD,它们有一些共同的属性。我想创建另一个XSD并将所有常用属性放在单独的XSD中,并将它们导入到我已经使用的2个XSD中,而不是重复它们或在两个XSD中复制它们。

是否有任何参考此类实施?

1 个答案:

答案 0 :(得分:0)

我们这样做:

共享“库”xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.common.namespace/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.common.namespace/">
    <xs:attribute name="ACommonAttribute" type="xs:float" default="1.7"/>
</xs:schema>

左xsd具有相同的目标命名空间:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.common.namespace/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.common.namespace/">
    <xs:include schemaLocation="Common.xsd"/>
    <xs:element name="MyLeftElement">
        <xs:annotation>
            <xs:documentation>Comment describing your root element</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="ACommonAttribute"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

具有不同目标命名空间的右xsd(如果包含语句,则需要导入)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://another.namespace/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:libs="http://www.common.namespace/" targetNamespace="http://another.namespace/">
    <xs:import namespace="http://www.common.namespace/" schemaLocation="Common.xsd"/>
    <xs:complexType name="RightComplexType">
        <xs:sequence>
            <xs:element name="Bit">
                <xs:complexType>
                    <xs:attribute ref="libs:ACommonAttribute"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>