【问题标题】:Is there a way to allow 'this' attribute or 'this other' attribute, but not both?有没有办法允许“this”属性或“this other”属性,但不能同时允许?
【发布时间】:2015-02-11 06:36:15
【问题描述】:

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

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

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

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

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

谢谢,
列维

【问题讨论】:

    标签: xml xsd schema


    【解决方案1】:

    W3C xsd 无法做到这一点。

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

    【讨论】:

    • 好的。实际上,我刚刚阅读了第二个选项,我通常会切换并这样做,但这是一些非评分作业的一部分,所以我不想偏离要求太远。但是,是的,对于正常情况,选择是一个不错的选择。谢谢!
    【解决方案2】:

    我不相信 XML Schema 可以实现属性约束。

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

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

    很遗憾,你不能这样做 W3C XML 模式。如我所见,你有 两种选择:

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

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

    【讨论】:

    • 好的,我将不得不阅读这两个方面的内容。我知道本学期的某个时候我的 XML 老师会复习它们,但在此之前掌握一些基础知识可能会很好。
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    相关资源
    最近更新 更多