Рассмотрим две возможные реализации «группы тегов»:
Авторам разрешено использовать либо элемент с именем <tag-group>
, либо любой элемент с атрибутом role="tag-group"
.
. Я хотел бы написать схему XSD, которая будет проверять любой случай.
В идеале, схема также может проверять, что дочерние элементы действительны в пределах данного родителя. «Группа тегов», например, позволяет дочерним элементам быть либо элементом с именем <tag>
, либо любым элементом с атрибутом role="tag"
.
Таким образом, идеальная схема будет проверять, что данный <tag-group>
, дочерний элемент должно быть <tag>
; ИЛИ учитывая любой элемент с role="tag-group"
, дочерний элемент должен быть любым элементом с role="tag"
.
Ожидания теста:
PASS
<tag-group>
<tag>foo</tag>
</tag-group>
PASS
<foo role="tag-group">
<bar role="tag">fum</bar>
</foo>
FAIL
<tag-group>
<bar role="tag">fum</bar>
</tag-group>
FAIL
<foo role="tag-group">
<tag>foo</tag>
</foo>
Я новичок в XSD и с удовольствием просматриваю справочные документы, если вы их связываете.