В файле XSD для элемента несколько атрибутов указаны как необязательные. Необходимо проверить, доступен ли какой-либо из перечисленных атрибутов во входном XML-файле.
В проверке схемы XSD 1.0 любой доступный параметр для проверки элемента имеет какие-либо атрибуты?
Ответы (1)
В XSD 1.0 вы можете использовать xs:key, чтобы гарантировать наличие у элемента хотя бы одного атрибута. Пример:
<xs:element name="elem">
<xs:complexType>
<xs:attribute name="a" type="xs:int" use="optional" />
<xs:attribute name="b" type="xs:int" use="optional" />
<xs:attribute name="c" type="xs:int" use="optional" />
<xs:attribute name="d" type="xs:int" use="optional" />
</xs:complexType>
<xs:key name="attributePresent">
<xs:selector xpath="." />
<xs:field xpath="@*" />
</xs:key>
</xs:element>
Например, если вы хотите гарантировать, что хотя бы один из атрибутов b или c присутствует в элементе, вы можете использовать
<xs:field xpath="@b | @c" />
person
sergioFC
schedule
06.01.2015
Работает только в том случае, если указан только один атрибут — если указано более одного атрибута, проверка завершится неудачно. Пример XML:
<elem a="1" b="2" c="3" />
xmlint дает: element elem: Schemas validity error : Element '{mynamespace}elem', attribute 'b': The XPath '@*' of a field of key identity-constraint '{mynamespace}attributePresent' evaluates to a node-set with more than one member.
Тот же результат при использовании <xs:field xpath="@b | @c" />
.
- person codesniffer; 27.03.2020
foo-e
я хотел бы установить один из следующих атрибутовfoo-att-1
илиfoo-att-a2
илиfoo-att-a3
? - person potame   schedule 06.01.2015