3

Schematron 内で xPath を使用しています。タイプがターゲットタイプと等しいことを確認できます。たとえば、「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>

しかし、うまくいきません。

4

1 に答える 1

4

これを行うための公開された XPath 2.0 機能はありません。実際、XPath 2.0 型は第一級の値ではありません。実行時にのみ知られている名前から型を見つけたり、型のプロパティを要求したりする方法はありません。拡張機能を使用する必要があります。Xerces と Saxon の両方に、スキーマ コンポーネントを問い合わせるための API があり、これらを呼び出す Java 拡張関数を作成できます。

于 2011-11-30T15:56:58.513 に答える