Это //cache
означает: элемент-потомок без пространства имен (или пустого пространства имен)
Ваш элемент groundspeak:cache
находится под URI пространства имен http://www.groundspeak.com/cache/1/0
.
Итак, если вы не можете объявить привязку префикса пространства имен (я думаю, что вы не можете с какао ...), вы можете использовать это выражение XPath:
//*[namespace-uri()='http://www.groundspeak.com/cache/1/0' and
local-name()='cache']
Если вы не хотите быть настолько строгими в отношении пространства имен ...
//*[local-name()='cache']
Но это последнее - плохая практика , потому что вы можете в итоге выбрать неправильные узлы, и потому что при работе с XML ваш инструмент должен поддерживать пространства имен.
В качестве доказательства, эта таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:copy-of select="//*[namespace-uri() =
'http://www.groundspeak.com/cache/1/0' and
local-name() = 'cache']"/>
</xsl:template>
</xsl:stylesheet>
Выход:
<groundspeak:cache id="1521507" available="True" archived="False"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.topografix.com/GPX/1/0"
xmlns:groundspeak="http://www.groundspeak.com/cache/1/0">
<groundspeak:name>Kadonneet ja karanneet</groundspeak:name>
<groundspeak:placed_by>ooti</groundspeak:placed_by>
<groundspeak:owner id="816431">ooti</groundspeak:owner>
<groundspeak:type>Traditional Cache</groundspeak:type>
<groundspeak:container>Small</groundspeak:container>
<groundspeak:difficulty>1.5</groundspeak:difficulty>
<groundspeak:terrain>2</groundspeak:terrain>
<groundspeak:country>Finland</groundspeak:country>
<groundspeak:state></groundspeak:state>
<groundspeak:short_description html="True"></groundspeak:short_description>
<groundspeak:encoded_hints></groundspeak:encoded_hints>
<groundspeak:travelbugs />
</groundspeak:cache>