XPath根据传递的参数查找特定行和相关值

时间:2018-07-27 20:47:43

标签: xslt xpath

我正在尝试根据参数中设置的门牌号从lights节点获取值。问题是,根据某些条件,房屋可能位于不同的行位置。

如果要发送给我的门牌号参数是House237,那么我如何获取row-2-Lights节点内的灯光数量?

如果下次运行,门牌号为House867,我该怎么做?以下是我的HTML:

<?xml version='1.0' encoding='utf-8'?>
<table id="neighborhood">
    <tr onmouseover="leave('1')">
        <td id="row-1-house">
            <div class="houseCol">
                <a href="#" onClick="goHome('867');return false">
                    House867
                </a>
            </div>
        </td>
        <td id="row-1-Lights">
            <div class="decimal">14</div>
        </td>
    </tr>
    <tr onmouseover="leave('2')">
        <td id="row-2-house">
            <div class="houseCol">
                <a href="#" onClick="goHome('237');return false">
                    House237
                </a>
            </div>
        </td>
        <td id="row-2-Lights">
            <div class="decimal">12</div>
        </td>
    </tr>
</table>

1 个答案:

答案 0 :(得分:1)

您可以尝试以下XPath-1.0表达式。该参数是“ HouseXXX”字符串,它是a元素的子元素。

/table[@id='neighborhood']/tr[td/div[@class='houseCol']/a[normalize-space(text())='House237']]/td[contains(@id,'Lights')]/div[@class='decimal']/text()

此输出为

  

12

在此示例中,参数设置为“ House237”。如何将参数合并到XPath表达式中取决于您的用例场景。

例如,在XSLT中,您可以用$ HouseNumber之类的变量替换“ House237”来设置参数。