2010-11-22 121 views
1

我碰到這個XPath在一個來到我的學習代碼:請幫助我理解這個XPath

count($recprv//*[local-name()='provider_email' or local-name()='provider_fax' 
    or local-name()='provider_phone' or local-name()='provider_phone_ext' ]) 

我現在有一個很難搞清楚什麼意思,我個人認爲它說:」在xml文件recprv,計算包含provider_email或包含provider_fax或包含provider_phone或包含provider_phone_ext的任何元素的數量。

因此,它基本上會通過xml文件recprc並計算所有記錄?只是有點困惑另外,我很想知道在count函數中究竟是什麼,非常感謝幫助我這裏!

+1

好問題,+1。詳細解釋請參閱我的答案。 – 2010-11-22 14:00:35

+0

我的回答對你有用嗎? – 2010-11-25 15:58:04

+0

@Dimitre:是的,非常感謝。 – Kevin 2010-12-02 22:21:02

回答

8
count($recprv//* 
      [local-name()='provider_email' 
      or 
      local-name()='provider_fax' 
      or 
      local-name()='provider_phone' 
      or 
      local-name()='provider_phone_ext' 
      ] 
     ) 

這意味着

給我你所有的計數中包含的任何包含在可變$recprv樹木的其元素,local-name()(名字的下列命名空間前綴的一部分,如果這樣的存在或整個名稱否則)provider_email之一, provider_faxprovider_phoneprovider_phone_ext

變量$recprv應該包含一個或多個元素(節點集),每個這樣的元素都是基於父 - >子關係的樹頂部。

+0

偉大的答案,但我仍然有點不清楚元素,節點集和樹之間的差異,你可以詳細說明嗎?謝謝。 – Kevin 2010-12-03 00:44:55

+1

@Robert:你需要閱讀一本好的XPath書籍,這些問題不能僅僅在評論中回答,甚至不能作爲對單獨問題的回覆。一個人需要閱讀和大量的練習。 – 2010-12-03 02:26:56

2

$ recprv是一個變量,以便作用在包含在可變

本地名稱()函數的節點集的XPATH返回元素名稱的部分用時的命名空間URI,以便例如他們將匹配像<provider_phone />元素名稱以及​​