Для ниже XSD я хочу добиться зависимости между элементами на разных глубинах. Как изменить эту схему для достижения следующей проверки для моего XML:Схема XSD - как создать зависимость между элементами на разных уровнях
- Если элемент «Info» не присутствует в XML, то элемент «Value» должен присутствовать для каждого "ObjectData «
Если элемент с именем» Значение «не указан в XML для одного или нескольких» ObjectData «элементов, чем элемент с именем» Info "должен присутствовать
<xs:element name="Objects" minOccurs="0" maxOccurs="1" > <xs:complexType> <xs:all> <xs:element name="Info" type="Info" minOccurs="0" maxOccurs="1"/> <xs:element name="ObjectData" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:all> <xs:element name="ObjType" type="ObjTypeEnum" /> <xs:element name="Value" type="xs:decimal" minOccurs="0" maxOccurs="1"/> <xs:element name="Prop" type="properties" /> </xs:all> </xs:complexType> </xs:element> </xs:all> </xs:complexType> </xs:element>
Другой способ понять выше два требования это,
if(Objects.Info.occurs == 0)
For-each Objectdata in Objects
assert(ObjectData.Value.occurs == 1)
For-atleast-one ObjectData in Objects
if (ObjectData.Value.occurs == 0)
assert(Objects.Info.occurs == 1)
Можете ли вы использовать XML-схему 1.1 или Schematron? Если вы не знаете, используйте элемент 'xs: assert' в XSD для тестирования XSD 1.1 или скажите, какой инструмент вы используете для проверки. –
У меня нет понимания xs :: assert или schmeatron. Как это сделать? – nurabha
Затем, как я сказал, расскажите, какой инструмент и его версию вы используете для проверки. Неявный тест заключается в том, чтобы положить, например, ' ' в одном из определений вашего типа. –