2009-09-27 70 views
2

我想允许一个元素的两个属性值。这就是我现在所做的事,但我只想让2中的1个,但不是两个。有没有办法让'this'属性或'this other'属性,但不是两个?

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

我期待能够做这样的事情:

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

有没有办法做到使用带属性的限制因素?

感谢,
列维

回答

1

你不能用W3C xsd来做到这一点。

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

+0

好的。其实我刚刚读了第二个选项,我通常会转而采用这种方式,但这是一些非分级作业的一部分,所以我不想偏离要求太远。但是,对于正常情况,选择是一个很好的选择。谢谢! – Levi 2009-09-27 19:32:02

1

我不相信,属性约束是可能的XML模式。

你可以申请额外的验证机制(即schematron),或使用一个不同的模式实现(即Relax-NG

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

可惜你不能与 W3C XML Schema的做到这一点。当我看到它,你必须 两种选择:

1)更改为一个不同的模式 话(我认为RELAX-NG支持此 功能) 2)使用嵌入式 Schematron规则

表达你的 共同约束

这些约束条件可以通过 与新的Schematron验证器从 Topologi验证。该工具是免费的,可以从www.topologi.com下载 。

+0

好吧,我将不得不做一些阅读这两个。我知道这个学期在某个时候我的XML老师将会讨论他们,但是在此之前有一些基础知识可能会很好。 – Levi 2009-09-27 19:28:48

相关问题