我正在寻找一种为元素选择属性的变体,可以直接设置或引用.
这就是我的想法:
<root>
<element>
<attribute ref="shortname" />
</element>
<element>
<attribute name="shortname" isEditable="true" anotherattrib="0815" />
</element>
</root>
Run Code Online (Sandbox Code Playgroud)
由于没有xml方案这不会有问题,如果需要元素属性的属性"name",则此属性的定义非常困难.
该计划可能看起来像这样
<xs:element name="attribute">
<xs:complexType>
<xs:attribute name="ref" use="required" />
<xs:attribute name="name" use="required" />
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
是否有可能在属性之间做出选择(类似于xs:元素的选择)?就像从名为ref的元素属性中存在属性一样,不允许其他属性.如果没有,必须设置属性"名称"...
这个问题听起来很纯粹的虚拟和学术,但如果有可能有解决方案,或者我对我的想法完全错误,我会很高兴:)
预先感谢您的任何帮助!
戴夫
在我看来,不可能像你想要的那样定义 XML Schema。您应该定义两个不同的元素名称,例如<attribute>和 以及<attributeRef>不同的强制属性集,或者您不应该将"ref"或"name"属性定义为"required"。
XML 模式不是验证数据的唯一方法,并且您不能根据 XML 模式定义属性值之间的某些角色。因此,如果您确实需要验证 XML 文档中更复杂的关系,您可以使用 XPath 和 XSLT 来执行此操作(请参阅Schematron、XML 模式语言比较、Beyond W3C XML Schema、使用 Schematron 改进 XML 文档验证、高级 XML 验证和使用 XSL 作为验证语言)。