У меня есть это в XML:
<generator Mode="High">
<GenMode name="Normal" kV="90" mA="0.5" />
<GenMode name="High" kV="160" mA="0.7" />
</generator>
generator/@mode
должно быть действительным, только если оно соответствует одному из generator/GenMode/@name
. Возможно ли это с XSD 1.0?
Теперь я использую эти правила в файле xsd для этого элемента:
<xs:element name="generator">
<xs:complexType>
<xs:sequence>
<xs:element name="GenMode" maxOccurs="unbounded" type="GenModeType" />
</xs:sequence>
<xs:attribute name="Mode" use="required" type="xs:string"/>
</xs:complexType>
<xs:key name="GenModeName">
<xs:selector xpath="GenMode"/>
<xs:field xpath="@name"/>
</xs:key>
</xs:element>
<xs:complexType name="GenModeType">
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="kV" use="required" type="xs:integer"/>
<xs:attribute name="mA" use="required" type="xs:decimal"/>
</xs:complexType>
I want to check
? Если в XML есть GenMode с тем же именем, что и у генератора/@mode, тогда он должен быть действительным или недействительным? Если вы хотите, чтобы один GenMode всегда имел то же имя, что и генератор/@mode, возможно, вы можете сделать это только с помощью XSD 1.1. - person sergioFC   schedule 22.06.2015generator/@mode
должен быть действителен, только если один изGenMode
имеет такое же имя. - person kot-da-vinci   schedule 22.06.2015