我正在尝试为这种xml文件创建一个xml架构:
<root>
<class type="A">
<name>My Name</name>
<surname>My Surname</surname>
<address-eu>
<postalcode>555888</postalcode>
</address-eu>
</class>
<class type="B">
<name>My Name</name>
<surname>My Surname</surname>
<address-us>
<zipcode>555888</zipcode>
</address-us>
</class>
<root>
我想要的是添加 address-eu 或 address-us ,具体取决于标记类中类型的值。
使用XSD 1.1很简单,但我需要使用xsd 1.0实现它。
我想避免像这样的xml文件,其中address-us属于type =“A”类,这是不正确的:
<root>
<class type="A">
<name>My Name</name>
<surname>My Surname</surname>
<address-us>
<zipcode>555888</zipcode>
</address-us>
</class>
<class type="B">
<name>My Name</name>
<surname>My Surname</surname>
<address-us>
<zipcode>555888</zipcode>
</address-us>
</class>
<root>
这可能吗?
由于
答案 0 :(得分:2)
否,您不能基于XSD 1.0中的属性值使用元素类型。
在XSD 1.1中,您可以使用 Conditional Type Assignment 。有关CTA的示例,请参阅How to make type depend on attribute value using Conditional Type Assignment
在XSD 1.0中,您可以将class
元素type="A"
重命名为A
或ClassA
,以将其与名为B
或{{1}的元素区分开来}。然后,您就可以为这两个元素定义不同的内容模型。
通常,在XSD 1.0中,不同的元素应该有不同的名称。