[英]Ruby Nokogiri - XPATH using URL
我有这张桌子:
<tr>
<td><b>Amount</b></td>
<td><b>Due Date</b></td>
<td"><b>Link</b></td>
</tr>
<tr>
<td>02/13/2012</td>
<td>$81.66</td>
<td><a onclick="javascript:window.open('/cso/displaypdfbill?selectedBillkey=449409587','_blank');" href="javascript: void(0);">View Bill</a></td>
</tr>
<tr>
<td>01/13/2012</td>
<td>$181.66</td>
<td><a onclick="javascript:window.open('/cso/displaypdfbill?selectedBillkey=543409587','_blank');" href="javascript: void(0);">View Bill</a></td>
</tr>
我正在遍历该表并在每行中提取Bill
键。 我删除了Billkey
并将其存储到变量中。
BillKey = 449409587
我想要的是获取BillKey
所在的<tr>
:
所以我应该有:
2/13/2012 81.86 View Bill
我在编写XPATH来获取<tr>
时遇到麻烦。
用途 :
string(table/tr
[td/a/@onclick
[substring
(.,
string-length()
- 21
)
=
$vEnding
]
]
)
$ vEnding必须用字符串替换 : "=449409587','_blank');"
因此,此替换后的完整XPath表达式为:
string(table/tr
[td/a/@onclick
[substring
(.,
string-length()
- 21
)
=
"=449409587','_blank');"
]
]
)
基于XSLT的验证 :
此XSLT转换 :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vEnding">=449409587','_blank');</xsl:variable>
<xsl:template match="/">
<xsl:copy-of select=
"string(table/tr
[td/a/@onclick
[substring
(.,
string-length()
- 21
)
=
$vEnding
]
]
)
"/>
</xsl:template>
</xsl:stylesheet>
当应用于以下XML文档 (提供的文档包装在单个top元素table
)时:
<table>
<tr>
<td>
<b>Amount</b>
</td>
<td>
<b>Due Date</b>
</td>
<td>
<b>Link</b>
</td>
</tr>
<tr>
<td>02/13/2012</td>
<td>$81.66</td>
<td>
<a onclick=
"javascript:window.open('/cso/displaypdfbill?selectedBillkey=449409587','_blank');" href="javascript: void(0);">View Bill</a>
</td>
</tr>
<tr>
<td>01/13/2012</td>
<td>$181.66</td>
<td>
<a onclick=
"javascript:window.open('/cso/displaypdfbill?selectedBillkey=543409587','_blank');" href="javascript: void(0);">View Bill</a>
</td>
</tr>
</table>
评估XPath表达式并将评估结果复制到输出 :
02/13/2012
$81.66
View Bill
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.