Ответ Димитре хорош для XSLT-решения, но для полноты излагаем еще одну перспективу. Поскольку данные находятся в таблице с однородной структурой, в некотором смысле XPath для любого одного элемента совпадает с , если рассматривать номер карты в качестве параметра. Например, в C # метод string.Format
использует {0}
в качестве заполнителя, как показано в XPATH_TEMPLATE ниже. Просто заполните заполнитель в этом шаблоне номером карты, чтобы получить необходимое выражение XPath.
string XPATH_TEMPLATE =
"//td[normalize-space(.)='{0}']/preceding-sibling::td/a";
string CardNumber = "4987 6543 2109 8769";
string XPathExpression = string.Format(XPATH_TEMPLATE, CardNumber);
Выше приведено следующее результирующее выражение XPath:
//td[normalize-space(.)='4987 6543 2109 8769']/preceding-sibling::td/a
Итак, работаете ли вы в XSLT, C # или чем-то еще, этот вариант XPath более значим (чем, например, / table / tbody / tr [3] / td [1] / a), поскольку он самодостаточен с контекстная информация.