简体   繁体   English

引用XML模式中的另一种类型

[英]referencing another type in xml schema

xml code: 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/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>

When I have the above section validate, I got Type 'SBE:SBEOrder' is not declared. 当上面的部分验证时,我没有声明类型'SBE:SBEOrder'
What am I missing in the above declaration? 我在上述声明中缺少什么?

I actually think that your problem lies in the import declaration for the SOAPENC schema: 我实际上认为您的问题出在SOAPENC模式的导入声明中:

<xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />

which is making the first schema invalid, causing the second schema to be unable to reference its types. 这会使第一个架构无效,从而导致第二个架构无法引用其类型。

Skip that import statement and you should be ok. 跳过该导入语句,您就可以了。 :) :)

Edit: (to add code) 编辑:(添加代码)

<?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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM