XML模式能否根据父属性值进行验证?

XML模式能否根据父属性值进行验证?,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我正在使用XML进行地理定位项目。这使用属性来定义项目的位置。范围0-9的简单一维示例如下: <Range Start="0" Size="10">Some item</Range> XSD模式是否可以检测到这种情况,或者无法根据父属性值进行验证?XSD 1.0 不可能 XSD 1.1 使用xs:assert和every在父元素上定义断言,以确保子范围在父范围指定的边界内 下面是断言的外观(只关注键范围属性和结构): XSD 1.0 不可能 XSD 1.1 使用xs:

我正在使用XML进行地理定位项目。这使用属性来定义项目的位置。范围0-9的简单一维示例如下:

<Range Start="0" Size="10">Some item</Range>
XSD模式是否可以检测到这种情况,或者无法根据父属性值进行验证?

XSD 1.0 不可能

XSD 1.1 使用
xs:assert
every
在父元素上定义断言,以确保子范围在父范围指定的边界内

下面是断言的外观(只关注键
范围
属性和结构):


XSD 1.0 不可能

XSD 1.1 使用
xs:assert
every
在父元素上定义断言,以确保子范围在父范围指定的边界内

下面是断言的外观(只关注键
范围
属性和结构):



谢谢。这真的很有帮助。但有一点要警告:这种技术需要XSD 1.1,而当前的Microsoft Visual Studio不支持XSD 1.1。似乎必须使用更专业(且成本更高)的验证器。见[链接]谢谢。这真的很有帮助。但有一点要警告:这种技术需要XSD 1.1,而当前的Microsoft Visual Studio不支持XSD 1.1。似乎必须使用更专业(且成本更高)的验证器。见[链接]
<Range Start="0" Size="10">
   <Range Start="12" Size="1">Out of range 0-9</Range>
</Range>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
    elementFormDefault="qualified"
    vc:minVersion="1.1">
    <xs:element name="Range">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Range" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="Start" type="xs:integer" use="required"/>
            <xs:attribute name="Size" type="xs:integer" use="required"/>
            <xs:assert test="every $r in Range satisfies 
                             $r/@Start >= @Start 
                             and $r/@Start + $r/@Size > @Start + @Size"/>
        </xs:complexType>
    </xs:element>
</xs:schema>