为直接定义的属性或引用选择XML实例上的属性

Dav*_*ave 6 xml xsd

我正在寻找一种为元素选择属性的变体,可以直接设置或引用.

这就是我的想法:

<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的元素属性中存在属性一样,不允许其他属性.如果没有,必须设置属性"名称"...

这个问题听起来很纯粹的虚拟和学术,但如果有可能有解决方案,或者我对我的想法完全错误,我会很高兴:)

预先感谢您的任何帮助!

戴夫

Ole*_*leg 1

在我看来,不可能像你想要的那样定义 XML Schema。您应该定义两个不同的元素名称,例如<attribute>和 以及<attributeRef>不同的强制属性集,或者您不应该将"ref""name"属性定义为"required"

XML 模式不是验证数据的唯一方法,并且您不能根据 XML 模式定义属性值之间的某些角色。因此,如果您确实需要验证 XML 文档中更复杂的关系,您可以使用 XPath 和 XSLT 来执行此操作(请参阅SchematronXML 模式语言比较Beyond W3C XML Schema使用 Schematron 改进 XML 文档验证高级 XML 验证使用 XSL 作为验证语言)。