Фильтрация XPath по атрибуту с пространством имен

Мне нужно создать выражение XPath для фильтрации на основе атрибута, находящегося в заданном пространстве имен. Пример XML:

<feed xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/'
  xmlns:yt='http://gdata.youtube.com/schemas/2007'> ...
 <entry>
  <media:group>
   <media:thumbnail url='http://i.ytimg.com/1.jpg' yt:name='default'/>
   <media:thumbnail url='http://i.ytimg.com/2.jpg' yt:name='hqdefault'/>
   <media:thumbnail url='http://i.ytimg.com/3.jpg' yt:name='start'/>
   <media:thumbnail url='http://i.ytimg.com/4.jpg' yt:name='middle'/>
  </media:group>
 </entry>

И мне нужно получить URL-адрес узла с атрибутом yt: name, установленным на 'hqdefault'.

Я пробовал с выражением XPath

'./media:group/media:thumbnail[@yt:name='hqdefault']/@url'

, но похоже, что указание атрибута пространства имен с yt: name не работает. Я получаю пустой DOMNodeList при выполнении запроса.

Я получаю доступ к XML в php, поэтому я заранее зарегистрировал пространство имен yt:

registerNamespace( 'yt', 'http://gdata.youtube.com/schemas/2007' );

Thnx

11
задан LarsH 4 August 2014 в 13:19
поделиться