有一个问题,尝试将字符串参数传递给 xslt 2.0 脚本,纯整数参数在本例中工作正常,但像
"value"
甚至 "w1234"
这样的字符串将无法通过 xslt 中的 $my_param
访问。
这是一个已知问题吗? (Gemini 无法提供帮助,代码中的典型 string() 修改也无法提供帮助。)如何才能将字符串参数传递到 XSLT 2.0 中?
Python:
from lxml import etree
xml_doc = etree.parse('input.xml')
xslt_doc = etree.parse('my_stylesheet.xslt')
transform = etree.XSLT(xslt_doc)
result_tree = transform(xml_doc, my_param='value')
result_tree.write('output.xml', pretty_print=True)
XSLT-样式表:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<root>
<param><xsl:value-of select="$my_param"/></param>
</root>
</xsl:template>
</xsl:stylesheet>
XML:
<?xml version="1.0" encoding="utf-8"?>
<root>
<data />
</root>
预期:
<root>
<param>value</param>
</root>
实际:
<root>
<param/>
</root>
如果
my_param
是 123
(或任何其他整数,甚至 10-2
会导致 <param>8</param>
)也可以正常工作。执行 xslt 脚本后,字符串值似乎会丢失。
etree.XLST.strparam
:
from lxml import etree
xml_doc = etree.parse('input.xml')
xslt_doc = etree.parse('my_stylesheet.xslt')
transform = etree.XSLT(xslt_doc)
result_tree = transform(xml_doc, my_param=etree.XSLT.strparam('value'))
result_tree.write('output.xml', pretty_print=True)
输出:
<root>
<param>test</param>
</root>