我有 2 个具有一些共同属性的独立 XSD。我想创建另一个 XSD 并将我所有的公共属性放在单独的 XSD 中,然后将它们导入我已经拥有的 2 个 XSD 中,而不是在两个 XSD 中重复或复制它们。
这种实现有什么参考吗?
我有 2 个具有一些共同属性的独立 XSD。我想创建另一个 XSD 并将我所有的公共属性放在单独的 XSD 中,然后将它们导入我已经拥有的 2 个 XSD 中,而不是在两个 XSD 中重复或复制它们。
这种实现有什么参考吗?
我们这样做:
共享“库”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(如果包含语句则需要 Import)
<?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>