#xml #xslt #xpath
#xml #xslt #xpath
Вопрос:
Я хочу выполнить поиск дочернего узла, который начинается с «php»
<globals-cookie>
<utma>1.959760512.1318348214.1318348214.1318348214.1</utma>
<utmz>1.1318348214.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)</utmz>
<phpsessid34534>826427ef2fade7f9471581a429ce266d</phpsessid34534>
<utmb>122420241.88.10.1321257433</utmb>
<utmc>122420241</utmc>
</globals-cookie>
Я бы написал //globals-cookie/phpsessid34534
, но номер меняется в конце..
Ответ №1:
Вы можете использовать этот XPath:
globals-cookie/*[starts-with(local-name(), 'php')]
Комментарии:
1. Я нашел
//globals-cookie/*[starts-with(name(), 'php')]
очень похожее, спасибо!
Ответ №2:
Во-первых, XPath к такому узлу, который вы описываете, будет:
/globals-cookie/*[starts-with(local-name(.),'php']
Во-вторых, для этого и нужны атрибуты — что-то подобное было бы более разумным.
<php sessid="34534">826427ef2fade7f9471581a429ce266d</php>
Комментарии:
1.
Something like this would be more sensible.
— вы предполагаете, что я могу изменить XML2. Я предполагаю, что ничего подобного нет — вот почему я дал вам как ответ на заданный вопрос, так и предлагаемое улучшение xml, а не только одно или другое.