2013-04-16 46 views
0

我需要檢查siteId在整個文檔中是否包含唯一的記錄ID。例如:現場11111提交記錄ID爲1 & 2和3 & 4.站點2222的提交記錄3 & 4.Schematron檢查多個元素中的唯一值

GOOD:

<submission> 
<site> 
<siteId>11111</siteId> 
<record><id>1</id></record> 
<record><id>2</id></record> 
</site> 
<site> 
<siteId>2222</siteId> 
<record><id>3</id></record> 
<record><id>4</id></record> 
</site> 
<site> 
<siteId>1111</siteId> 
<record><id>3</id></record> 
<record><id>4</id></record> 
</site> 
</submission> 

BAD:

<submission> 
<site> 
<siteId>11111</siteId> 
<record><id>1</id></record> 
<record><id>2</id></record> 
</site> 
<site> 
<siteId>2222</siteId> 
<record><id>3</id></record> 
<record><id>4</id></record> 
</site> 
<site> 
<siteId>1111</siteId> 
<record><id>3</id></record> 
<record><id>4</id></record> 
<record><id>4</id></record> 
</site> 
</submission> 

回答

0

你的問題可以通過下面的代碼來解決: -

<iso:pattern id="site"> 
    <iso:rule context="id"> 
     <iso:assert test="count(id) != count(distinct-values(ancestor::site/record/id))">BAD</iso:assert> 
    </iso:rule> 
</iso:pattern>