2011-01-18 18 views
2

我試圖直獲取XML模式, 獨特而關鍵要素尤其是關於內選擇和域元素。本地唯一?

我不清楚選擇器和字段,我需要弄清楚這一點。

假設我有一個XML文件,其中列出了功能組中列出的公司。 我有每個組具有唯一字段中的元素(參考 每個特定組)。

我想在每個公司列表中的每個公司列表內創建一個唯一的字段,每個組只有在該特定的組中才是唯一的 。

這是否是正確的?:

<xs:unique id="company_group_refs" name="company_group_refs"> 
     <xs:selector xpath="root/all_companies/company_group"/> 
     <xs:field xpath="company_group_ref"/> 
    </xs:unique> 

    <xs:unique id="company_refs" name="company_refs"> 
     <xs:selector xpath="root/all_companies/company_group"/> 
     <xs:field xpath="company/company_ref"/> 
    </xs:unique> 

如果是的話,我可能會凝結在上面的這個?:

<xs:unique id="company_refs" name="company_refs"> 
     <xs:selector xpath="root/all_companies/company_group"/> 
     <xs:field xpath="company_group_ref"/> 
     <xs:field xpath="company/company_ref"/> 
    </xs:unique> 

要特別引用任何公司的名字,我希望能夠以 給XPath表達式所示:

根/ all_companies/company_group [company_group_ref = X1] /公司[company_ref = X2] /名稱

其中:X1 =爲公司集團的唯一參考。
和:X2 =爲公司組內的唯一的參考。

下面是一個XML文件摘錄體現了這樣的場景:

<all_companies> 

    <company_group> 
     <company_group_name>Cleaning</company_group_name> 
     <company_group_ref>1</company_group_ref> 
     <company> 
      <name>Ajax</name> 
      <company_ref>1</company_ref> 
     </company> 
     <company> 
      <name>Bloomburg</name> 
      <company_ref>2</company_ref> 
     </company> 
     <company> 
      <name>Morris</name> 
      <company_ref>3</company_ref> 
     </company> 
    </company_group> 

    <company_group> 
     <company_group_name>Electrical</company_group_name> 
     <company_group_ref>2</company_group_ref> 
     <company> 
      <name>Armstrong</name> 
      <company_ref>1</company_ref> 
     </company> 
     <company> 
      <name>Bloomburg</name> 
      <company_ref>2</company_ref> 
     </company> 
     <company> 
      <name>Zap Electrical</name> 
      <company_ref>3</company_ref> 
     </company> 
     <company> 
      <name>Morris</name> 
      <company_ref>4</company_ref> 
     </company> 
    </company_group> 

</all_companies> 

謝謝!

回答

1

要求group_refs唯一性的約束是正確的。約束,使集團內唯一company_refs應該這樣寫

<xs:element name="company_group"> 
    <xs:unique name="company_unique_within_group"> 
    <xs:selector xpath="company"> 
    <xs:field xpath="company_ref"> 
    </xs:unique> 
    ... 
</xs:element> 

閱讀爲「company_group內」「全選公司」,並要求「company_ref是其中唯一」。

您的company_ref約束條件爲:「全部」爲所有company_groups「要求」company/company_ref是唯一的「。

您的精簡約束表達了完全不同的東西:「所有company_groups」的「全局」「要求」company_group_ref和company/company_ref的組合「是唯一的」鑑於每個組實際上有多個company_refs,後兩個沒有意義

+0

嗨馬丁!感謝您的迴應,並回答。這是有道理的。 – user304607 2011-01-19 03:42:15