Определить селектор ключевой ссылки на основе типа элемента в 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/