Определить селектор ключевой ссылки на основе типа элемента в XPath - PullRequest
0 голосов
/ 13 марта 2010

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 13 марта 2010

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

...