Ваша ошибка в этом :
...font[...]/following-sibling::tr/...
Легко видеть, что в предоставленном фрагменте XML элемент <font>
не имеет родственных элементов.
Вот одно правильное выражение XPath :
tr[td[contains(., 'Refine by Vehicle Types')]]
/following-sibling::tr
/td/div/table
/tr/td/font
/ul/li/a
При сравнении со следующим XML-документом (предоставленный вами фрагмент обернут * <table>
):
<table>
<tr>
<td class="padded2" bgcolor="#103A74">
<font color="White">Refine by Vehicle Types</font>
</td>
</tr>
<tr>
<td class="padded2" bgcolor="White">
<div>
<table border="0">
<tr>
<td class="padded2">
<font color="#103A74">
<ul>
<li>
<a class="padded2"> Cars</a>
</li>
<li>
<a class="padded2">Marine Engines</a>
</li>
<li>
<a class="padded2">Trucks</a>
</li>
</ul>
</font>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
выделены следующие элементы :
<a class="padded2"> Cars</a>
<a class="padded2">Marine Engines</a>
<a class="padded2">Trucks</a>
XSLT - проверка на основе :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*">
<xsl:copy-of select=
"tr[td[contains(., 'Refine by Vehicle Types')]]
/following-sibling::tr
/td/div/table
/tr/td/font
/ul/li/a
"/>
</xsl:template>
</xsl:stylesheet>
когда это преобразование применяется к документу XML выше, выбранные элементы выводятся :
<a class="padded2"> Cars</a>
<a class="padded2">Marine Engines</a>
<a class="padded2">Trucks</a>
Я бы рекомендовал использовать XPath Visualizer , чтобы быстро приступить к написанию правильных и элегантных выражений XPath.