嵌套的xsd:无法将名称...解析为类型定义组件

时间:2016-07-04 22:52:54

标签: java xsd namespaces

我的webservice应该能够针对模式验证xml-input(request.xsd)。模式中复杂的唯一元素拥有不同的子元素,这些子元素在其他xsds中定义。我正在导入所有的xsds。但最终无法解析元素类型。 这是我的“request.xsd”:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:fe="http://www.some.dir/featurenamespace"
    xmlns="http://this.is.my.space" 
    targetNamespace="http://this.is.my.space" 
    elementFormDefault="qualified">

<xs:import schemaLocation=" http://www.some.dir/featurenamespace/cmplxtypes.xsd " 
    namespace=" http://www.some.dir/featurenamespace"/>

<xs:element name="elem1" type="request"/>

  <xs:complexType name="request">
    <xs:complexContent>
       <xs:extension base="fe:complexElement">
          <xs:sequence>
            <xs:element name="record" type="fe:complexElement "/>
          </xs:sequence>
       </xs:extension>
    </xs:complexContent>
  </xs:complexType>

</xs:schema>

这是架构(例如cmplxtypes.xsd),其中定义了“complexElement”类型:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:fe="http://www.some.dir/featurenamespace"  
  xmlns:ofe ="http://www.some.dir/otherfeaturenamespace" 
  targetNamespace="http://www.some.dir/featurenamespace" 
  version="1.1.0" 
  elementFormDefault="qualified" 
  attributeFormDefault="unqualified">
<xs:include schemaLocation="fe_types.xsd" />
<xs:import schemaLocation="ofe_types.xsd" namespace="http://www.some.dir/otherfeaturenamespace"/>

<xs:complexType name="complexElement">
  <xs:sequence>
    <xs:element name="feature" type="fe:FeatureType "/>  
    <xs:element name="otherfeature" type="ofe:otherFeatureType"/>                
 </sequence>
</xs:complexType>

文件:cmplxtypes.xsd,fe_types.xsd和ofe_types.xsd共享相同的命名空间。

现在,尝试针对request.xsd验证myxml我得到:无法将'complexElement'解析为'type defintion'组件。 我很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

模式中存在一些可能解释错误的不一致。

  1. request.xsd似乎没有导入cmplxtypes.xsd,其中定义了fe:complexElement。

    <xs:import
      schemaLocation="http://www.some.dir/featurenamespace/cmplxtypes.xsd"
      namespace=" http://www.some.dir/featurenamespace" />
    
  2. cmplxtypes.xsd包含ofe_types.xsd,即使命名空间根据request.xsd中的import不匹配。包含其他模式时,命名空间非常匹配(或者包含的模式必须没有目标命名空间)。