Как проверить в xPath, равен ли тип типу или является производным от типа - PullRequest
3 голосов
/ 30 ноября 2011

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

<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>

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

1 Ответ

4 голосов
/ 30 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...