有没有办法允许'this'属性或'this other'属性,但不是两者兼而有之?

时间:2009-09-27 16:25:52

标签: xml xsd schema

我试图为一个元素允许两个属性值。这就是我现在完成它的方式,但我只想允许2中的1个,但不是两个。

<contact phoneH="cell">8025550000</contact>
<contact phoneW="work"> 8025550094</contact>

我希望能够做到这样的事情:

<xsd:attribute name="phoneH|phoneW" type="xsd:string" />

有没有办法将限制元素与属性一起使用?

谢谢,
列维

2 个答案:

答案 0 :(得分:1)

我不相信XML Schema可以使用属性约束。

您可以应用其他验证机制(即schematron)或使用其他架构实施(即Relax-NG

http://lists.xml.org/archives/xml-dev/200107/msg00070.html

  

不幸的是你无法做到这一点   W3C XML Schema。正如我所见,你有   两个选项:

     

1)更改为其他架构   方言(我认为RELAX-NG支持这个   功能)   2)表达你   使用嵌入式共同约束   schematron规则

     

可以验证这些约束   使用新的Schematron Validator   Topologi。该工具是免费的,可以   从www.topologi.com下载。

答案 1 :(得分:1)

使用W3C xsd无法执行此操作。

另一种方法是制作phoneH和phoneW子联系人,并使用xs:choice将用户限制为一个或另一个子元素。