python xpath函数_python – 如何从XPath函数返回文本片段?

首先要定义你的功能.它需要将节点集作为项列表返回.这些项目可能包括元素(也包括注释和处理指令),字符串和元组.

硬编码示例可能如下所示:

from lxml import etree

def myFunc(context, parm):

em = etree.Element('em')

em.text = 'text'

return ['some sample ', em]

请注意,在这种情况下,parm参数不是必需的,但我在此处将其包含在内,以匹配将调用中的参数传递给myns的示例代码:my-func.

如果你想使用fragments_fromstring来构建你的节点集,而不是手动构建它,那么函数定义就变得更加简单了.

def myFunc(context, parm):

import lxml.html

return lxml.html.fragments_fromstring('some sample text')

接下来,您需要设置命名空间并注册函数名称.

myns = etree.FunctionNamespace('http://example.org/myNamespace')

myns['my-func'] = myFunc

最后,您可以在XSLT样式表中使用它,如下所示:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:myns="http://example.org/myNamespace">

请注意,样式表中使用的命名空间URL必须与FunctionNamespace中注册的命名空间URL匹配.

现在假设您已将此样式表加载到名为xslt的字符串中,示例转换可能如下所示:

root = etree.XML('')

doc = etree.ElementTree(root)

transform = etree.XSLT(etree.XML(xslt))

res = transform(doc)

有关完整的示例,请参阅此pastebin link.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值