Как проверить в xPath, если тип равен типу или является производным от типа

Я работаю с xPath внутри Schematron. Я могу проверить, что тип равен целевому типу. Например, «xsd:string eq xsd:string».

<sch:rule context="uis:variable/uis:dependency/uis:length">
<sch:assert test="**../../@type eq 'xsd:string'**">      
Text        
</sch:assert>                       
</sch:rule>

Как я могу проверить, является ли тип, определенный пользователем, производным от xsd:string? Я пробовал:

<sch:rule context="uis:variable/uis:dependency/uis:length">
<sch:assert test="**../../@type instance of attribute (*,xsd:string)**">
Text        
</sch:assert>                       
</sch:rule>

Но это не работает.


person user1072936    schedule 30.11.2011    source источник


Ответы (1)


Для этого нет открытых функций XPath 2.0. На самом деле типы XPath 2.0 не являются первоклассными значениями; невозможно найти тип по имени, известному только во время выполнения, или запросить свойства типа. Вам нужно будет использовать расширения: и Xerces, и Saxon имеют API для опроса компонентов схемы, и вы можете создавать функции расширения Java, которые их вызывают.

person Michael Kay    schedule 30.11.2011
comment
Спасибо, Михаил, я посмотрю, что вы предлагаете. - person user1072936; 01.12.2011