2011-11-30 22 views
3

我正在使用Schematron中的xPath。我可以檢查一個類型是否等於目標類型。例如'xsd:string eq xsd:string'。如何在xPath中檢查類型是否等於類型或從類型派生

<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

這樣做沒有暴露的XPath 2.0功能。實際上,XPath 2.0類型不是一流的值;沒有辦法從僅在運行時已知的名稱中查找類型,或者查詢該類型的屬性。您需要使用擴展:Xerces和Saxon都有用於查詢模式組件的API,並且您可以構建調用這些擴展函數的Java擴展函數。

+0

謝謝邁克爾,我會看看你的建議。 – user1072936

相關問題