我使用python / lxml将源xml转换为目标xml格式。当我尝试将模板与除root之外的任何其他元素匹配时,我不断得到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>
&#13;
...
目标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>
...
&#13;
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>'''
)
&#13;
答案 0 :(得分:0)
每个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>