Пожалуйста, помогите мне понять этот XPath - PullRequest
1 голос
/ 22 ноября 2010

Я наткнулся на этот 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. 1004 *

То есть он будет в основном проходить через xml-файл recprc и подсчитывать все записи? Просто немного смущен. Кроме того, я хотел бы знать, что именно считается в функции подсчета. Большое спасибо за помощь здесь!

Ответы [ 2 ]

8 голосов
/ 22 ноября 2010
 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.

2 голосов
/ 22 ноября 2010

$ recprv является переменной, поэтому XPATH воздействует на набор узлов, содержащийся в переменной

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...