使用两个xsd控制单个元素

时间:2016-11-18 08:47:31

标签: xml xsd

我们可以使用两个,三个xsd来控制单个元素。

<html>
  <head>
    <title> </title>
  </head>
  <body>
  </body>
</html>

我有一个xsd来控制上面的结构。

<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="html" type="Root" />
<xs:complexType name="Root">
    <xs:sequence>
        <xs:element name="head"/>
        <xs:element name="body" type="xs:string" minOccurs="1"/>
    </xs:sequence>
</xs:complexType>

我可以将其称为基础xsd。我正在创建另外两个xsd来控制body元素属性值并在body中允许一个project1元素,而在另一个xsd中我想在body中使用包含base.xsd的new2元素。怎么做到这一点?这可以实现吗?

1 个答案:

答案 0 :(得分:1)

这是非常规的,但没有什么可以阻止您使用一个XSD再次使用不同的XSD验证XML文档。请注意,@schemaLocation@noNamespaceSchemaLocation不足以关联要连续应用的其他XSD;你必须在外部在XML文档和XSD之间建立额外的关联。

但更常见的是,单个XSD将用于验证。 XSD本身可能包含其他包含或导入的XSD。 (参见:What's the difference between xsd:include and xsd:import?)如果您是XSD新手,并希望模块化您的XSD设计,我建议您采用这种更传统的方法来组织和编写XSD。