我试图在XPath中使用lower-case
函数匹配国家或地区。translate
有点混乱,所以我相信使用小写和我的python2.6.6版本支持XPath 2.0,因为小写只在XPath 2.0中可用。在
如何在我的案件中使用小写是我正在寻找的。希望这个例子不言自明。我正在寻找['USA', 'US']
作为输出(两个国家一次可以发生,如果小写评估国家和国家是相同的)。在
HTML:文档.htm
<html>
<table>
<tr>
<td>
Name of the Country : <span> USA </span>
</td>
</tr>
<tr>
<td>
Name of the country : <span> UK </span>
</td>
</tr>
</table>
Python:
^{pr2}$更新:
out.xpath('//table/tr/td[text()[contains(translate(., "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz") , "country")]]/span/text()')
现在问题仍然存在,我是否可以将translate部分存储为全局变量'handlecase',并在每次执行XPath时打印该全局变量?在
类似这样的方法有效:
handlecase = """translate(., "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")"""
out.xpath('//table/tr/td[text()[contains(%s , "country")]]/span/text()' % (handlecase))
但为了简单易读,我想这样运行:
out.xpath('//table/tr/td[text()[contains(handlecase , "country")]]/span/text()')
使用:
基于XSLT的验证:
^{pr2}$将此转换应用于提供的XML文档时:
计算XPath表达式并将选定的两个文本节点复制到输出:
说明:
ends-with($text, $s)
:这是:。。。。。在
.2。下一步是使用
translate()
函数,将结束的10个字符长的字符串转换为小写,消除任何空格或“:”字符。在.3。如果结果是字符串(全部小写)“country”,那么我们选择这个
td
的s=span
子节点的子文本节点(在本例中只有一个)。在我相信最简单的事情就是编写一个XPath扩展函数。在
通过这样做,您既可以编写
lower-case()
函数,也可以编写不区分大小写的搜索。在您可以在这里找到详细信息:http://lxml.de/extensions.html
相关问题 更多 >
编程相关推荐