我发现将复杂类型从一个 XSD 文件导入和引用到另一个文件时遇到困难。让我用一个例子来说明我的场景
学生.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
xmlns="xyz"
elementFormDefault="qualified">
<xsd:element name="student" type="student" />
<xsd:complexType name="student">
<xsd:sequence>
<xsd:element name="id" type="xsd:string" />
<xsd:element name="birth-date" type="xsd:date" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
这是另一个 XSD,Teacher.xsd,我想在其中引用 student.xsd 中的复杂类型 student
教师.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
xmlns="xyz"
elementFormDefault="qualified">
<xsd:import schemaLocation="student.xsd"
namespace="xyzzz" />
<xsd:element name="teacher" type="teacher" />
<xsd:complexType name="teacher">
<xsd:sequence>
<xsd:element name="id" type="xsd:string" />
<xsd:element name="name" type="xsd:string" />
// TODO - Refer to student from student.xsd
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我已经看到其他 Stack Overflow 帖子关于实现这一点的语法,例如
<xs:element name="teacher" type="teacher:teacher"/>
随着进口:
<xsd:import schemaLocation="xyz" namespace="xyz"/>
但似乎没有任何效果。
有人可以帮助我实现这一目标吗?
最佳答案
使用 xsd:include
而不是 xsd:import
因为 XSD 在同一个命名空间中。
备注
<xsd:element name="student" type="student"/>
另见
xsd:import
的完整工作示例 | 用于命名空间不同时)关于xml - 从另一个 XSD 导入复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47684511/