Requiring an attribute be defined if and only if a child element is not present for an element in a DTD

一个人想着一个人 提交于 2019-12-12 06:32:37

问题


Consider the following definition from a DTD:

<!ELEMENT application (calculator)?>
<!ATTLIST application
        uri CDATA #REQUIRED
>

My problem is that I want the uri attribute to be defined if and only if there is not a calculator element.

Is there a way to require this?


回答1:


@Alejandro is right. That's not possible with a DTD nor is it possible with XML Schema. You can do this using a co-occurrence constraint with a RelaxNG schema or you could use Schematron in conjunction with any of those schema languages.

I've resolved issues like this before by using embedded schematron rules with schemas (good discussion of this with XSD on XFront and with RelaxNG on XML.com). I've recently been doing something similar in pure RelaxNG but then you have a schema that can only be expressed in that one form.



来源:https://stackoverflow.com/questions/4081789/requiring-an-attribute-be-defined-if-and-only-if-a-child-element-is-not-present

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!