2015-04-12 50 views
0

我有這樣的XML:XQuery和不同的值

<university> 
<departaments> 
    <departament sl="AA"> 
     <subject>Numbers</subject> 
     <categories> 
      <categorie> 
       <name type="one">Mathematics</name> 
      </categorie> 
      <categorie> 
       <name type="one">Physics</name> 
      </categorie> 
      <categorie> 
       <name type="two">Other</name> 
      </categorie> 
     </categories> 
    </departament> 
    <departament sl="BB"> 
     <subject>Letters</subject> 
     <categories> 
      <categorie> 
       <name type="one">Philosophy</name> 
      </categorie> 
      <categorie> 
       <name type="two">Language</name> 
      </categorie> 
      <categorie> 
       <name type="two">Other</name> 
      </categorie> 
     </categories> 
    </departament> 
</departaments> 
</university> 

我需要與他的屬性,通過長度和沒有重複的名字責令獲得的名稱。 I.e.this xml:

<name type="two">Other</name> 
<name type="one">Physics</name> 
<name type="two">Language</name> 
<name type="one">Philosophy</name> 
<name type="one">Mathematics</name> 

我有這個代碼,但不工作。

for $name in distinct-values(doc ("uni.xml")//categorie/name) 
order by string-length($name) 
return $name 

有人可以幫我嗎?

在此先感謝。

回答

0

嘗試:

for $name in distinct-values(doc("uni.xml")//categorie/name) 
order by string-length($name) 
return (doc("uni.xml")//categorie/name[.=$name])[1] 
+0

謝謝你非常非常 – Saturno

+0

的StackOverflow的協議不是在評論作出迴應,但通過單擊空白處打勾/複選標記爲已接受簡單的標記答案。這對後來出現類似問題的人很有用,所以他們知道答案是有效的。 (它也給了答覆者的聲望點,一些SO成員似乎很關心)。 –