请帮助我理解这个XPath

时间:2010-11-22 06:39:09

标签: xml 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的任何元素的数量。< / p>

那么它基本上会通过xml文件recprc并计算所有记录?只是有点困惑。此外,我很想知道计数函数中究竟计算了什么。非常感谢帮助我在这里!

2 个答案:

答案 0 :(得分:8)

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

这意味着

向我提供变量 $recprv中包含的任何树中包含的所有元素的计数 {{3} } (名称空间前缀后面的名称部分,如果存在,或者是整个名称) provider_emailprovider_fax,{{ 1}} provider_phone

变量provider_phone_ext应该包含一个或多个元素(节点集),并且每个这样的元素都是基于父级的树的顶部 - &gt;儿童关系。

答案 1 :(得分:2)

$ recprv是一个变量,因此XPATH作用于变量

中包含的节点集

local-name()函数返回Element名称的一部分而没有命名空间URI,例如它们匹配像<provider_phone />这样的元素名称以及<xyz:provider_phone />