我有这个XML Schema,它包含一个带有两个具有相同名称但名称空间不同的引用的序列。 Address1.xsd 和 Address2.xsd
中定义了Address
个元素
我想知道这是否被标准所接受。
<xsd:schema targetNamespace="http://xmlns.oracle.com/bpmn/bpmnCloudProcess/Testnamespace/Process"
xmlns:tns7="http://my.namespace.com2" xmlns:tns6="http://my.namespace.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://my.namespace.com" schemaLocation="Address1.xsd"/>
<xsd:import namespace="http://my.namespace.com2" schemaLocation="Address2.xsd"/>
<xsd:element name="start">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="tns6:Address"/>
<xsd:element ref="tns7:Address"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
答案 0 :(得分:0)
是的,您的示例是正确的,并演示了引用两个Address
元素的正确方法,这些元素通过位于不同的命名空间中来区分。请确保Address1.xsd的targetNamespace
等于http://my.namespace.com
,而Address2.xsd的targetNamespace
等于http://my.namespace.com2
。以下是一致定义的所有三个XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace="http://xmlns.oracle.com/bpmn/bpmnCloudProcess/Testnamespace/Process"
xmlns:tns7="http://my.namespace.com2"
xmlns:tns6="http://my.namespace.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://my.namespace.com"
schemaLocation="Address1.xsd"/>
<xsd:import namespace="http://my.namespace.com2"
schemaLocation="Address2.xsd"/>
<xsd:element name="start">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="tns6:Address"/>
<xsd:element ref="tns7:Address"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://my.namespace.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Address"/>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://my.namespace.com2"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Address"/>
</xsd:schema>