2015-02-10 153 views
0

我有一個HTML文檔,並試圖爲某些錶行提取hrefs。呈現,表格有幾列。每個名稱都是超鏈接,但我試圖捕獲第四列中具有空值的名稱的超鏈接。這是因爲第四列包含終止日期,而我只對活躍(未終止)的員工感興趣。HTML上的Xpath,查找條件匹配

下面是HTML響應的一個子集:

<tr id="r6" >          
<td> 
    <a href="benefits.asp?SK=177646822&STYPE=ELNAME&QRY=a">111-11-1111</a> 
</td> 
<td > 
    <a href="benefits.asp?SK=177646822&STYPE=ELNAME&QRY=a">Lastname</a> 
</td> 
<td nowrap="nowrap" > 
    <a href="benefits.asp?SK=177646822&STYPE=ELNAME&QRY=a">Firstname</a> 
</td> 
<td nowrap="nowrap" > 
    &nbsp; 
</td> 
<td> 
    <a href="benefits.asp?SK=177646822&STYPE=ELNAME&QRY=a">743</a> 
</td> 
</tr> 

<tr id="r7" >          
<td> 
    <a href="benefits.asp?SK=177646782&STYPE=ELNAME&QRY=a">222-22-2222</a> 
</td> 
<td > 
    <a href="benefits.asp?SK=177646782&STYPE=ELNAME&QRY=a">Ignore</a> 
</td> 
<td nowrap="nowrap" > 
    <a href="benefits.asp?SK=177646782&STYPE=ELNAME&QRY=a">This</a> 
</td> 
<td nowrap="nowrap" > 
    <a href="benefits.asp?SK=177646782&STYPE=ELNAME&QRY=a">7/12/2010</a> 
</td> 
<td> 
    <a href="benefits.asp?SK=177646782&STYPE=ELNAME&QRY=a">1070</a> 
</td> 
</tr> 

第一表行上述(ID = R6)中缺少第4欄的日期字段,它是存在於第二個。所以我試圖提取第一個但不是第二個的href。換句話說,「給我第4列中有&nbsp;的每個錶行的第一個href。」

這FirePath讓我在表中的所有的HREFs: //表[@ ID = 「SearchResult所」] // @ HREF

感謝

回答

0

答案取決於你所使用的環境XPath中。具體來說,它取決於非破壞空間的編碼方式。在XSLT,例如,表達看起來像

//tr[contains(td[4],'&#160;')]/td[1]/a/@href 

輸入(略有修改)

<?xml version="1.0"?> 
<!DOCTYPE root [ 
    <!ENTITY nbsp "&#160;"> 
]> 
<root> 
<tr id="r6" >          
<td> 
    <a href="YES">111-11-1111</a> 
</td> 
<td > 
    <a href="benefits.asp?SK=177646822STYPE=ELNAMEQRY=a">Lastname</a> 
</td> 
<td nowrap="nowrap" > 
    <a href="benefits.asp?SK=177646822STYPE=ELNAMEQRY=a">Firstname</a> 
</td> 
<td nowrap="nowrap" > 
    &nbsp; 
</td> 
<td> 
    <a href="benefits.asp?SK=177646822STYPE=ELNAMEQRY=a">743</a> 
</td> 
</tr> 

<tr id="r7" >          
<td> 
    <a href="benefits.asp?SK=177646782STYPE=ELNAMEQRY=a">222-22-2222</a> 
</td> 
<td > 
    <a href="benefits.asp?SK=177646782STYPE=ELNAMEQRY=a">Ignore</a> 
</td> 
<td nowrap="nowrap" > 
    <a href="benefits.asp?SK=177646782STYPE=ELNAMEQRY=a">This</a> 
</td> 
<td nowrap="nowrap" > 
    <a href="benefits.asp?SK=177646782STYPE=ELNAMEQRY=a">7/12/2010</a> 
</td> 
<td> 
    <a href="benefits.asp?SK=177646782STYPE=ELNAMEQRY=a">1070</a> 
</td> 
</tr> 
</root> 

樣式表

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="text" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" /> 

    <xsl:template match="/"> 
      <xsl:value-of select="//tr[contains(td[4],'&#160;')]/td[1]/a/@href"/> 
    </xsl:template> 

</xsl:transform> 

輸出

YES