2010-11-22 127 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 />元素名称以及​​