将多个XSD合二为一

时间:2018-03-19 11:57:43

标签: xml xsd xsd-validation xml-validation

我有5个XSD文件,一个是“主要的”(我说主要的一个,因为这里我想添加其余的模式文件),名为catalogo.xsd,其余的是辅助文件(数据集。 XSD,imagenes.xsd,propietario.xsd,identificacion.xsd)。在catalogo.xsd中,我想导入其中一个文件的命名空间,例如propietario.xsd。所以我在编写这行代码的catalogo.xsd中导入它:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/catalogo" xmlns:tns="http://www.example.org/catalogo" elementFormDefault="qualified">

<xsd:import namespace = "http://www.example.org/propietario" schemaLocation = "propietario.xsd"/>

文件propietario.xsd是这样的:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/propietario" xmlns:prop="http://www.example.org/propietario" elementFormDefault="qualified">
<xsd:element name="tPropietario">
<xsd:complexType>
 whatever code here
 </xsd:complexType>

但是在catalogo中,当我想添加一个type = prop:tPropietario的元素时,eclipse会给我一个错误,说明prop:前缀未定义。我不明白如何正确添加它,schemaLocation它的罚款路径,以及命名空间uri。我不知道我是否解释清楚,但那是我的问题。谢谢你。

1 个答案:

答案 0 :(得分:0)

此命名空间声明

xmlns:prop="http://www.example.org/propietario"

prop设置为http://www.example.org/propietario命名空间的命名空间前缀。将其添加到任何XML文件中使用或高于其使用的元素,包括XSD,您希望在其中将此命名空间称为prop。对于XSD,名称空间声明通常在xsd:schema根元素上组合在一起。

相关问题