Xml 有没有办法允许';这';属性或';另一个';属性,但不是两者都有?

Xml 有没有办法允许';这';属性或';另一个';属性,但不是两者都有?,xml,xsd,schema,Xml,Xsd,Schema,我试图为一个元素允许两个属性值。我现在就是这样做的,但我只想允许2个中的1个,但不能同时允许2个 <contact phoneH="cell">8025550000</contact> <contact phoneW="work"> 8025550094</contact> 8025550000 8025550094 我希望能够做到以下几点: <xsd:attribute name="phoneH|phoneW" type="xsd:st

我试图为一个元素允许两个属性值。我现在就是这样做的,但我只想允许2个中的1个,但不能同时允许2个

<contact phoneH="cell">8025550000</contact>
<contact phoneW="work"> 8025550094</contact>
8025550000
8025550094
我希望能够做到以下几点:

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

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

谢谢,

Levi

我不认为XML模式可以实现属性约束

您可以应用额外的验证机制(例如)或使用不同的模式实现(例如)

不幸的是,你不能这样做 W3CXML模式。在我看来,你有 两种选择:

1) 更改为其他模式 方言(我认为RELAX-NG支持这一点) 功能) 2) 表达你 基于嵌入式系统的协同约束 schematron规则

可以验证这些约束 使用来自的新Schematron验证器 拓扑学。该工具是免费的,可以使用 从www.topologi.com下载


使用W3CXSD无法做到这一点


另一种方法是将phoneH和phoneW子元素设置为contact,并使用
xs:choice
将用户限制为一个子元素或另一个子元素。

好的,我必须对这两个子元素进行一些阅读。我知道在这个学期的某个时候,我的XML老师会对它们进行检查,但是在那之前先把一些基础知识记下来可能会更好。实际上,我刚刚读到了第二个选项,通常我会切换并这样做,但这是一些未评分作业的一部分,所以我不想偏离要求太远。但对正常情况来说,选择是个不错的选择。谢谢