您好我是XML Schema的新手。 (这是我的第一次尝试。) 我不明白为什么我一直收到这个错误。命名空间“无法在此架构中引用。
这是我收到错误的行。
<sch:element name="Field1" type="naming"/>
XSD文件
<?xml version="1.0" encoding="utf-8"?>
<sch:schema xmlns:sch="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tempuri.org/MySchemaFile"
elementFormDefault="qualified">
<sch:element name="Root">
<sch:complexType>
<sch:sequence>
<sch:element name="Nodes" maxOccurs="unbounded">
<sch:complexType>
<sch:sequence>
<sch:element name="Field1" type="naming"/>
<sch:element name="Field2" type="sch:string"/>
<sch:element name="Field3" type="sch:integer" default="0"/>
<sch:element name="Field4" type="sch:string" default="0"/>
<sch:element name="Field5" type="sch:string"/>
<sch:element name="Field6" type="sch:string"/>
<sch:element name="Field7" type="sch:string" default="0"/>
<sch:element name="Field8" type="sch:string" default="0"/>
<sch:element name="Field9" type="sch:string" default="None"/>
</sch:sequence>
</sch:complexType>
</sch:element>
</sch:sequence>
</sch:complexType>
</sch:element>
<sch:simpleType name="naming">
<sch:restriction base ="sch:string">
<sch:minLength value="0"/>
<sch:maxLength value="5"/>
</sch:restriction>
</sch:simpleType>
</sch:schema>
谁能告诉我我做错了什么?感谢任何有帮助的人。
答案 0 :(得分:9)
您已定义目标命名空间,这意味着所有类型定义都将存在于此命名空间中。但是Field1的类型引用引用了空名称空间。声明一个额外的命名空间:
<sch:schema xmlns:sch="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tempuri.org/MySchemaFile"
xmlns:tns="http://tempuri.org/MySchemaFile"
elementFormDefault="qualified">
并在引用架构中定义的类型时使用该前缀:
<sch:sequence>
<sch:element name="Field1" type="tns:naming"/>
<sch:element name="Field2" type="sch:string"/>
...
</sch:sequence>