2010-11-22 2 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. См. Мой ответ для подробного объяснения. –

+0

Был ли мой ответ полезен для вас? –

+0

@ Dimitre: Да, большое спасибо. – Kevin

ответ

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_fax, provider_phoneилиprovider_phone_ext.

Переменная $recprv должна содержать один или несколько элементов (набор узлов), и каждый такой элемент является вершиной дерева на основе отношения parent -> children.

+0

Отличный ответ, но я все еще немного неясен в отношении различий между элементами, набором узлов и деревом, не могли бы вы уточнить? Спасибо. – Kevin

+1

@ Robert: Вам нужно прочитать хорошую книгу XPath, на эти вопросы нельзя ответить просто в комментарии или даже в качестве ответа на отдельный вопрос. Нужно читать и много практики. –

2

$ recprv является переменной, так что XPATH действует на множестве узлов, содержащихся в функции переменной

Локальное имя() возвращает часть имени элемента с-вне пространства имен URI, так, например, они будут совпадать с именами элементов, как <provider_phone />, а также <xyz:provider_phone />