2015-02-10 159 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