lxml抛出xslt分析错误,无法匹配除

2024-06-26 00:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python/lxml将源xml转换为目标xml格式。当我尝试将模板与根(“/”)以外的任何其他元素匹配时,我总是得到一个XLSTParseError,但无法找出错误所在-非常确定它的命名空间相关…我尝试从源xml访问的内容包含在元素中。知道如何修复或如何让lxml输出更详细的错误消息吗?你知道吗

源xml具有声明:

<?xml version="1.0" encoding="UTF-8"?> <dataroot generated="2016-10-24T09:16:37" xsi:noNamespaceSchemaLocation="BOLIG_XML.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:od="urn:schemas-microsoft-com:officedata"> <BOLIG_XML>...</BOLIG_XML> <BOLIG_XML>...</BOLIG_XML>
...

目标xml具有声明:

<?xml version="1.0" encoding="utf-8"?> <BoligListe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oio:lbf:1.0.0"> <BoligStruktur>...</BoligStruktur> <BoligStruktur>...</BoligStruktur> ...

XSLT当前看起来如下所示:

xslt_tree = etree.XML('''\ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <BoligListe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oio:lbf:1.0.0"> <xsl:template match="BOLIG_XML"> <BoligStruktur>hello world</BoligStruktur> </xsl:template> </BoligListe> </xsl:template> </xsl:stylesheet>''' )

Tags: orghttpversionwwwtemplatexmlxmlschemaxsd
1条回答
网友
1楼 · 发布于 2024-06-26 00:27:47

每个xsl:template元素都需要是样式表根元素的顶级元素,您不能像在XSLT代码中那样嵌套模板。然后使用xsl:apply-templates处理具有匹配模板的子元素,因此我想您需要

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <BoligListe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oio:lbf:1.0.0">
           <xsl:apply-templates/>
        </BoligListe>  
    </xsl:template>
        <xsl:template match="BOLIG_XML">
                <BoligStruktur>hello world</BoligStruktur>
            </xsl:template>
    </xsl:stylesheet>

相关问题 更多 >