Конвертировать XML с XSL в HTML? Я пишу программу на Python - PullRequest
0 голосов
/ 01 ноября 2019

Мне нужно конвертировать некоторые файлы XML в формат HTML. Это был унаследованный проект, поэтому некоторые XML-файлы уже имеют свои XSL-файлы. Я пробовал несколько инструментов для преобразования XML с XSL в HTML, и все они работают с онлайн-примерами. Однако, когда я попытался ввести свой XML и соответствующий ему файл XSL, это не сработало. Это интерактивный инструмент, который я использую: https://www.freeformatter.com/xsl-transformer.html. Он выдает ошибку «Невозможно сгенерировать документ XML с использованием предоставленного ввода XML / XSL. Null». Я также использую этот код:

import lxml.html
from lxml import etree

xslt_doc = etree.parse("test-xslt.xslt")
xslt_transformer = etree.XSLT(xslt_doc)

source_doc = etree.parse("toc-test.xml")
output_doc = xslt_transformer(source_doc)

print(str(output_doc))
output_doc.write("output-toc.html", pretty_print=True)

Я заметил, что About.xsl также ссылается на другие файлы xsl, используя следующий код. Является ли эта проблема причиной проблемы?

<xsl:import href="Header.xsl"/>
<xsl:import href="Login.xsl"/>
<xsl:import href="Footer.xsl"/>

Если у меня есть About.xml и About.xsl, как мне преобразовать их в About.html? Например, это часть About.xsl, соответствующая About.xml. Однако

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:local="#local-functions"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
    xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes"
    exclude-result-prefixes="xhtml xsl fn xs xdt">

    <xsl:import href="Header.xsl"/>
    <xsl:import href="Login.xsl"/>
    <xsl:import href="Footer.xsl"/>

    <msxsl:script language="JScript" implements-prefix="local">
        function encodeuri(string) {
        return escape(string);
        }
    </msxsl:script>

    <xsl:output method="xml" media-type="text/html"
        doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 
        doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
        cdata-section-elements="script style" 
        indent="no" 
        encoding="UTF-8"/>

    <xsl:param name="title" select="'Quality Marine'"/>
    <xsl:param name="baseURL" select="document('/XML/Config.xml')/URL"/>
    <xsl:param name="role" select="'public'"/>
    <xsl:param name="page" select="'Company'"/>

Итак, как мне преобразовать файл XML в HTML, если у меня уже есть файл XSL? Я знаю, что мой вопрос довольно расплывчатый, но, пожалуйста, помогите мне. Если вам нужна дополнительная информация, пожалуйста, спросите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...