0

目前正在使用以下代码进行 XML-XSLT 转换。

from lxml import etree

xmlRoot = etree.parse('path/abc.xml')
xslRoot = etree.parse('path/abc.xsl')
transform = etree.XSLT(xslRoot)
newdom = transform(xmlRoot)
print(etree.tostring(newdom, pretty_print=True))

以下代码可以正常工作,但只提供root elementas 输出,而不是整个 XML 内容。当我运行相同的转换时,XML and XSL file using Altova它可以很好地进行转换。打印整个 XML 的语法是不同的还是您发现的任何错误?

XML 内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <slide name="slide7.xml" nav_lvl_1="Solutions" nav_lvl_2="Value Map" page_number="7">
        <title>Retail Value Map</title>
        <Subheadline>Retail </Subheadline>
    </slide>
</root>

XSL 内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding="UTF-8" indent="yes" method="xml" standalone="yes" version="1.0"/>
    <xsl:template match="/">
        <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
            <xsl:for-each select="root/slide">
                <xsl:choose>
                    <xsl:when test="@nav_lvl_1='Solutions'">
                        <xsl:if test="@nav_lvl_2='Value Map'">
                             <p:txBody>

                                    <a:p>
                                        <a:r>
                                            <a:rPr lang="en-US" dirty="0" smtClean="0"/>
                                            <a:t>
                                               <xsl:value-of select="title"/>
                                            </a:t>
                                        </a:r>
                                        <a:endParaRPr lang="en-US" dirty="0"/>
                                    </a:p>
                            </p:txBody>
                      </xsl:if>
                </xsl:when>
            </xsl:choose>
        </xsl:for-each>
    </p:sld>
</xsl:template>

电流输出:

<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"/>
4

0 回答 0