XSD循环导入

时间:2015-11-18 19:22:55

标签: xsd wsdl tcl circular-reference

两个xsd相互导入是否有效?

例如,第一个是'MyService.xsd = 48,它看起来像:

<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:tns="http://documentation" xmlns:ns1="http://documentHistory" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" version="1.0" targetNamespace="http://documentation">

<xs:import namespace="http://documentHistory" schemaLocation="MyService.xsd=49" />

<xs:complexType name="item">
  <xs:sequence>
    <xs:element name="internalId" type="xs:long" minOccurs="0" />
    <xs:element name="readOnly" type="xs:boolean" minOccurs="0" />
  </xs:sequence>
</xs:complexType>

<xs:complexType name="data">
  <xs:sequence>
    <xs:element name="histories" type="ns1:history" nillable="true" minOccurs="0" maxOccurs="unbounded" />
  </xs:sequence>
</xs:complexType>

</xs:schema>

第二个xsd是MyService.xsd = 49,看起来像是:

<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:tns="http://documentHistory" xmlns:ns1="http://documentation" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" version="1.0" targetNamespace="http://documentHistory">

<xs:import namespace="http://documentation" schemaLocation="MyService.xsd=48" />

<xs:complexType name="history">
    <xs:complexContent>
        <xs:extension base="ns1:item">
            <xs:sequence>
                <xs:element name="dateReceived" type="xs:dateTime" minOccurs="0" />
                <xs:element name="dateSent" type="xs:dateTime" minOccurs="0" />
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

</xs:schema>

请注意,第一个导入第二个,第二个导入第一个。我有一个问题,我正试图追查,我不知道这是否是问题的一部分。我试图解决的问题与TCL有关,似乎没有正确解析我的wsdl。在TCL将wsdl解析为dict之后,'history'对象没有'item'对象的属性,即使xsd显示历史应该从item扩展。

问题是:两个xsd相互导入是有效还是看起来像问题?

另外,我已经查看了这篇文章XSD circular import,但发现答案很难理解。任何帮助/见解将不胜感激。谢谢!

0 个答案:

没有答案