libxslt 的 applyStylesheet() 产生损坏的 XHTML

发布于 2024-11-16 14:23:27 字数 534 浏览 5 评论 0原文

我有一个 XML 数据文件,我正在使用 Python 中的 libxslt 将 XSL 样式表应用于该文件。事情几乎是完美的,但是 XSL 文件中


的每个实例都被转换为
unicode( applyStylesheet())。这几乎就是我所做的一切:

style = libxslt.parseStylesheetDoc(libxml2.parseFile('template.xsl'))
xmlDoc = libxml2.parseFile('data.xml')
data = unicode(self.style.applyStylesheet(xmlDoc, None))
xmlDoc.freeDoc()

我做错了什么吗?我是否缺少使输出有效的 XHTML 的选项?

(我当前的计划是将 .replace('


','
')
附加到 data = 行以使其正常工作,但似乎应该有更好的方法。)

I've got an XML data file that I'm applying an XSL stylesheet to, using libxslt in Python. Things are almost perfect, but every instance of <hr/> in the XSL file is being turned into <hr> in the output from unicode(applyStylesheet()). This is pretty much all I'm doing:

style = libxslt.parseStylesheetDoc(libxml2.parseFile('template.xsl'))
xmlDoc = libxml2.parseFile('data.xml')
data = unicode(self.style.applyStylesheet(xmlDoc, None))
xmlDoc.freeDoc()

Am I doing something wrong? Is there an option that I'm missing to make the output valid XHTML?

(My current plan is to append .replace('<hr>','<hr/>') to the data = line to just make it work, but it seems like there should be a better way.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亚希 2024-11-23 14:23:27

我们可以看到 template.xsl 文件吗?它是否包含 标记?该标签的 method 属性是否设置为 html

如果是,则 libxsl 会自动从自结束标记中删除所有 /

请注意,xml输出方法并不总是输出正确的html,请参阅中的 xml、html 或 xhtml:哪个是更好的选择?了解更多信息。

正如链接问题的答案中所解释的,最佳选择是 xhtml,但仅从版本 2 开始 xsl 支持它。

Can we see the template.xsl file? Does it contain the <xsl:output/> tag? Is the method attribute of this tag set to html?

If it is, then libxsl automatically strips all / from self closing tags.

Beware that, xml output method does not always output correct html, refer to xml, html or xhtml in <xsl:output>: Which is the better choice? for more information.

As explained in the answer of the linked question, the best choice would be xhtml, but it is only supported by xsl starting at version 2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文