Я начинаю использовать lxml
в Python для обработки документов XML / XSL, и в целом это кажется очень простым. Однако я не могу найти способ передать фрагмент XML в качестве параметра таблицы стилей при выполнении перевода.
Например, в PHP можно передавать DOMDocument
фрагменты XML в качестве параметров таблицы стилей, чтобы в таблице стилей можно было иметь сложные параметры:
$xml = new DOMDocument();
$xml->loadXML('<root><node/></root>');
$xsl = new DOMDocument();
$xsl->loadXML('<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"
indent="yes" media-type="text/html" />
<xsl:param name="a" />
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="$a/foo/bar/text()" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>');
$fragment = new DOMDocument();
$fragment->loadXML('<foo><bar>baz</bar></foo>');
$proc = new XSLTProcessor;
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsl);
$param_ns = '';
$param_name = 'a';
$proc->setParameter($param_ns, $param_name, $fragment->documentElement);
Что приведет к:
<html>
<body>
baz
</body>
</html>
Как это сделать, используя lxml
?