我们可以使用两个,三个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元素。怎么做到这一点?这可以实现吗?
答案 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。