【发布时间】:2015-11-18 10:20:27
【问题描述】:
我有两个不同的 .xsd(“item”和“user”),我想使用导入将它们合并到一个 .xsd 中:这个新架构 (items.xsd) 将包含一个项目序列和一个用户.
问题是我在调用之前在命名空间中定义的类型的行中收到此错误:
src-resolve: 无法将名称 'i:item' 解析为 a(n) 'type 定义'组件。
另外,在 xml 中,我在根元素上收到此错误:
cvc-elt.1.a:找不到元素“items”的声明。
item.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="item"
xmlns="item" elementFormDefault="qualified">
<xsd:simpleType name="itemID">
<xsd:restriction base="xsd:ID">
<xsd:pattern value="AR[0-9][0-9][0-9][0-9]"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="item" xmlns:i="item">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="description">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="comments">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="comment" minOccurs="0" maxOccurs="100">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="comment_text">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="75"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="id_user" type="xsd:IDREF" use="required"/>
<xsd:attribute name="id_item" type="xsd:IDREF" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
user.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="user" elementFormDefault="qualified" xmlns="user">
<xsd:simpleType name="usrID">
<xsd:restriction base="xsd:ID">
<xsd:pattern value="[A-Z][0-9][0-9][0-9][0-9][0-9]"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="user" xmlns:u="user">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="alias" type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="id_user" type="userID" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
items.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:i="item"
xmlns:u="user" targetNamespace="items" elementFormDefault="qualified">
<xsd:import namespace="item" schemaLocation="item.xsd" />
<xsd:import namespace="user" schemaLocation="user.xsd" />
<xsd:element name="items">
<xsd:complexType>
<xsd:sequence>
<!-- ERROR HERE --> <xsd:element name="item" type="i:item" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="users">
<xsd:complexType>
<xsd:sequence>
<!-- ERROR HERE --> <xsd:element name="user" type="u:user" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="url" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
items.xml
<!-- ERROR HERE --><items url="http://example.com/items" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="items.xsd">
<item id_item="AR0000">
<title>
Item title
</title>
<description>
Item description
</description>
<comments>
<comment id_user="A00000" id_item="AR0000">
<comment_text>
Text
</comment_text>
</comment>
</comments>
</item>
<users>
<user id_user="A00000">
<alias>
User1 alias
</alias>
<email>
user1@gmail.com
</email>
</user>
<user id_user="A00001">
<alias>
User2 alias
</alias>
<email>
user2@hotmail.com
</email>
</user>
</users>
</items>
【问题讨论】:
-
items.xml 不是格式正确的文档 - 请更正它,否则我们将无法解析它。谢谢。
标签: xml xsd xml-namespaces