2012-04-19 143 views
0
<?xml version="1.0" encoding="utf-8"?> 
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="Person"> 
    <xs:complexType> 
     <xs:all> 
      <xs:element name="address" type="Address"/> 
     </xs:all> 
    </xs:complexType> 
</xs:element> 
<xs:element name="Address"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="line1" type="xs:string"/> 
      <xs:element name="line2" type="xs:string"/> 
      <xs:element name="state" type="xs:string"/> 
      <xs:element name="city" type="xs:string"/> 
      <xs:element name="postcode" type="xs:string"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

在此XSD定义,我无法理解这个错误: 类型“地址”是不是这个模式或任何包含或导入 架构中定义为根项目。错误XSD自定义类型声明

我想这个类型声明是在同一个模式中提供的。但是这个声明有什么问题呢?

回答

1

你有一个本地元素声明

<xs:element name="address" type="Address"/> 

但与NAME = “地址” 无complexType定义。

我怀疑元素声明

<xs:element name="Address"> 
    <xs:complexType> 
    ... 

也许应该

<xs:complexType name="Address"> 
    ... 
+0

由于这个问题解决了 – Udhay 2012-04-19 15:15:12

2
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Person"> 
     <xs:complexType> 
      <xs:all> 
       <xs:element name="address" type="Address"/> 
      </xs:all> 
     </xs:complexType> 
    </xs:element> 
    <xs:complexType name="Address"> 
     <xs:sequence> 
      <xs:element name="line1" type="xs:string"/> 
      <xs:element name="line2" type="xs:string"/> 
      <xs:element name="state" type="xs:string"/> 
      <xs:element name="city" type="xs:string"/> 
      <xs:element name="postcode" type="xs:string"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema>