我開始在Python中使用lxml
來處理XML/XSL文檔,並且通常它看起來非常簡單。但是,我無法在翻譯時找到將XML片段作爲樣式表參數傳遞的方法。將XML片段作爲樣式表參數傳遞給lxml?
例如,在PHP也能夠通過DOMDocument
XML片段作爲樣式表的參數,使得一個可以具有在樣式表中可用的複雜PARAMS:
$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
完成此操作?
謝謝。你可以編輯你的文章,並使用自定義解析器更改鏈接到頁面?我在發佈後注意到了自定義xpath函數,並得出了相同的結論,但'document()'方法可能更有用。 – 2009-11-19 08:05:29
這個答案很特別,因爲從@Steven有這麼幾點他不能發佈多個鏈接的時候開始。他現在有大約12k點。長路。 – mlissner 2015-04-05 05:44:35
@mlissner:感謝提醒我;-),我修復了這些鏈接。 – Steven 2015-04-14 14:37:25