在xml模式中引用另一个类型
xml代码:在xml模式中引用另一个类型,xml,web-services,wsdl,Xml,Web Services,Wsdl,xml代码: <?xml version="1.0" encoding="utf-8"?> <definitions xmlns:ns2="urn:uRServerResponse" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/m
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:ns2="urn:uRServerResponse" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="SBE" xmlns="http://schemas.xmlsoap.org/wsdl/" >
<types>
<xs:schema xmlns="SBE" targetNamespace="SBE">
<xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />
<xs:complexType name="SBEOrder">
<xs:sequence>
<xs:element name="OrderGUID" type="xs:string" />
<xs:element name="BuyerGUID" type="xs:string" />
<xs:element name="PONumber" type="xs:string" />
<xs:element name="Status" type="xs:string" />
<xs:element name="Date_Submitted" type="xs:dateTime" />
<xs:element name="Date_Shipped" type="xs:dateTime" />
<xs:element name="Date_Received" type="xs:dateTime" />
<xs:element name="ItemCount" type="xs:int" />
<xs:element name="ActionCount" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema xmlns="urn:uRServerResponse" targetNamespace="urn:uRServerResponse">
<xs:import namespace="SBE"/>
<xs:complexType name="TSBEServerResponseBase">
<xs:sequence>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TSBEServerResponse">
<xs:complexContent mixed="false">
<xs:extension base="ns2:TSBEServerResponseBase">
<xs:sequence>
<xs:element name="SBEOrder" type="ns1:SBEOrder"/>
<xs:element name="ItemClassCount" type="xs:int" />
<xs:element name="ItemClassHistoryCount" type="xs:int" />
<xs:element name="ItemClassInfoCount" type="xs:int" />
<xs:element name="InvoiceCount" type="xs:int" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
</types>
</definitions>
当我对上面的部分进行验证时,我得到的类型“SBE:SBEOrder”
没有声明。我在上面的声明中遗漏了什么?我实际上认为您的问题在于SOAPENC模式的导入声明:
<xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />
这使得第一个架构无效,导致第二个架构无法引用其类型
跳过该导入语句,您应该可以了。:)
编辑:(添加代码)
删除上述导入语句没有任何区别。另一个元素需要import语句,为了简化问题,我删除了该元素。你还有别的建议吗?提前感谢wsdl不需要在每个模式中导入名称空间,您只需在definitions元素中声明它们。我结束时使用的代码似乎工作正常。(有关完整的xml代码,请参阅我编辑的答案)。如果这仍然不适用于你,也许你应该给我你的问题的完整版本。我理解你的观点,我同意。然而,XML检查器一直在抱怨。我正在使用visual studio 2013。我将您的版本复制到一个新的XML文件中,并添加到末尾。我收到2条警告和1条消息警告10未声明类型“SBE:SBEOrder”。XMLFile1.xml 27 9杂项文件警告11命名空间“SBE”在此架构中不可引用。XMLFile1.xml 27 9杂项文件消息12命名空间“SBE”在此架构中不可引用。XMLFile1.xml 27 9杂项文件IT似乎这是visual studio 2013中的一个bug。如果我将schema SBE部分分解成一个.xsd文件,然后使用schemalocation导入SBE,VisualStudio不会抱怨SBE:SBEOrder not found
<?xml version = "1.0" encoding = "UTF-8"?>
<definitions xmlns = "http://schemas.xmlsoap.org/wsdl/" xmlns:mime = "http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns1 = "SBE" xmlns:ns2 = "urn:uRServerResponse" xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc = "http://schemas.xmlsoap.org/soap/encoding/" xmlns:xs = "http://www.w3.org/2001/XMLSchema">
<types>
<xs:schema targetNamespace = "SBE" xmlns = "SBE">
<xs:complexType name = "SBEOrder">
<xs:sequence>
<xs:element name = "OrderGUID" type = "xs:string"/>
<xs:element name = "BuyerGUID" type = "xs:string"/>
<xs:element name = "PONumber" type = "xs:string"/>
<xs:element name = "Status" type = "xs:string"/>
<xs:element name = "Date_Submitted" type = "xs:dateTime"/>
<xs:element name = "Date_Shipped" type = "xs:dateTime"/>
<xs:element name = "Date_Received" type = "xs:dateTime"/>
<xs:element name = "ItemCount" type = "xs:int"/>
<xs:element name = "ActionCount" type = "xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema targetNamespace = "urn:uRServerResponse" xmlns = "urn:uRServerResponse">
<xs:complexType name = "TSBEServerResponseBase">
<xs:sequence> </xs:sequence>
</xs:complexType>
<xs:complexType name = "TSBEServerResponse">
<xs:complexContent mixed = "false">
<xs:extension base = "ns2:TSBEServerResponseBase">
<xs:sequence>
<xs:element name = "SBEOrder" type = "ns1:SBEOrder"/>
<xs:element name = "ItemClassCount" type = "xs:int"/>
<xs:element name = "ItemClassHistoryCount" type = "xs:int"/>
<xs:element name = "ItemClassInfoCount" type = "xs:int"/>
<xs:element name = "InvoiceCount" type = "xs:int"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
</types>
</definitions>