XSD 1.0 如果另一个属性没有值,则将属性设置为 false

XSD 1.0 set attribute to false if another has no value

我正在尝试编写一个模式,其中我有两个属性 IDrequired:

如果 ID 没有文本,我需要将 required 设置为 false。

我搜索了整个这个地方,发现这可以使用 XSD 1.1 完成,但我无法访问它,因为它在 Visual Studio 2017 中不受支持。是否有替代方案XSD 1.0 ?

这是架构的一部分:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
       
    <xs:element name="sizeGroup">
        <xs:complexType>
            <xs:attribute name="ID" type="xs:string" use="required" />
            <xs:attribute name="required" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
</xs:schema>

XSDs constrainrequire XML 文档的属性;他们没有设置属性。

假设您的意思是您希望要求,而不是设置,一个属性具有基于另一个属性值的特定值,不,这样的约束不能在 XSD 1.0 中表达。您将需要 XSD 1.1 断言。

进一步注意: 要求从另一个 XML 组件中已经存在的内容派生属性值通常是设计缺陷的标志。

另见