Мне нужно конвертировать некоторые файлы 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? Я знаю, что мой вопрос довольно расплывчатый, но, пожалуйста, помогите мне. Если вам нужна дополнительная информация, пожалуйста, спросите.