Определить селектор ключевой ссылки на основе типа элемента в XPath

Допустим, у меня есть XML-файл, который будет выглядеть так:

<a>
    <b d="value1"/>
    <c d="value2"/>
</a>

В XSD-файле, который определяет структуру этого XML-файла, я определил элементы с именами "b" и "c" как имеющие один и тот же тип (и тип требует атрибута "d").

Допустим, я хочу сделать keyReference для всех элементов типа, которые являются как 'b', так и 'c', есть ли способ в XPath сделать это?

При определении типа "а" я бы ожидал что-то вроде этого:

<xs:keyref name="myReferenceName" refer="keyToReferTo">
    <xs:selector xpath="[@type='typenameof elements b and c?']"/>
    <xs:field xpath="@d"/>
</xs:keyref>

Возможно ли что-то подобное, или XPath, даже в XSD, не знает схемы?

1 ответ

Решение

XPath 1.0, конечно, не знает ни о каких схемах, а спецификация схемы W3C XML в версии 1.0 даже использует только подмножество XPath 1.0. Я думаю, что продолжается работа по определению новой версии языка схемы W3C XML, которая использует XPath 2.0, но я понятия не имею о его деталях и о том, позволяет ли он затем выбирать элементы в селекторе на основе типов схемы. XPath будет element(*, NameOfTypeGoesHere) Я думаю, см. http://www.w3.org/TR/xpath20/

Другие вопросы по тегам