Мне нужно создать выражение 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