我不是XML和XSD的主人。
只是想知道如何将多个XSD文件合并到一个XSD文件中?
先谢谢。
答案 0 :(得分:2)
您可以多次使用import(不同的命名空间)和include(相同的命名空间)。 redefine也可以多次使用。这取决于你的意思"合并。"
另请参阅http://www.herongyang.com/XML-Schema/Multiple-XSD-Schema-Document-Include-Redefine-Import.html或http://msdn.microsoft.com/en-us/library/ee254473%28v=bts.10%29.aspx。
编辑:重新定义可以多次使用(类似于包含)。
示例(在Eclipse中验证)如下。我在必要时使用了不同的命名空间(作为"合并"目标命名空间)和元素名称:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/m"
xmlns:tns="http://www.example.org/m" elementFormDefault="qualified">
<!-- import: different (i.e. not target) namespace -->
<import namespace="http://www.example.org/a" schemaLocation="so20046640a.xsd"/>
<import namespace="http://www.example.org/b" schemaLocation="so20046640b.xsd"/>
<!-- include: same namespace -->
<include schemaLocation="so20046640c.xsd"/>
<include schemaLocation="so20046640d.xsd"/>
<!-- redefine: same namespace -->
<redefine schemaLocation="so20046640e.xsd"/>
<redefine schemaLocation="so20046640f.xsd"/>
</schema>
... a.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/a"
xmlns:tns="http://www.example.org/a" elementFormDefault="qualified">
<element name="a" type="int"/>
</schema>
... b.xsd:与... a.xsd相同但目标命名空间... / b
... c.xsd:与... a.xsd相同但目标命名空间... / m
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/m"
xmlns:tns="http://www.example.org/m" elementFormDefault="qualified">
<element name="a" type="int"/>
</schema>
... d.xsd:与... c.xsd相同,但是元素名称b。
... e.xsd:与... c.xsd相同,但元素名称为e。
... f.xsd:与... c.xsd相同,但元素名称为f。