Используя только выражение XPath (а не в XSLT или DOM - просто чистый XPath), я пытаюсь создать относительный путь от текущего узла (в тд) к связанному тд в том же столбце того же HTML таблица.
Например, предположим, у меня есть такой тип данных:
<table>
<tr> <td><a>Blue Jeans</a></td> <td><a>Shirt</a></td> </tr>
<tr> <td><span>$21.50</span></td> <td><span>$18.99</span></td> </tr>
</table>
и я с "Голубыми джинсами" и хочу найти цену ($ 21,50). В XSLT я мог бы использовать функцию current (), чтобы получить такой ответ:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:apply-templates select="//a" />
</xsl:template>
<xsl:template match="a">
Name: <xsl:value-of select="."/>
Price: <xsl:value-of select="../../following-sibling::tr[1]/td[position() = count(current()/../preceding-sibling::td) + 1]" />
</xsl:template>
</xsl:stylesheet>
Но проблема, с которой я сталкиваюсь, заключается в том, что в XPath 1.0 не определен current (). Я пытался использовать self :: axis, но вроде "." сокращение, которое указывает только на узел «context», а не на «текущий» узел. Язык, который я вижу в стандарте XPath , предполагает, что XPath не имеет понятия «текущий узел».
Возможно, есть другой способ сформировать этот путь или это ограничение XPath?