1

我正在创建一个简单的重氮主题。

rules.xml是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<rules
    xmlns="http://namespaces.plone.org/diazo"
    xmlns:css="http://namespaces.plone.org/diazo/css"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <theme href="index.html"/>

    <replace css:content="#form-1" css:theme="#form-1" />

</rules>

在内容文件中,有以下几行:

...
<div id="form-1">
    <form action="...">
        <input type="text" id="name" />
        <input type="submit" value="ok" />
    </form>
</div>
....

我希望这些行在输出 html 中以完全相同的方式复制。然而,他们变成了这样:

<div id="form-1">
    <form action="...">
        <input type="text" id="name" /><input type="submit" value="ok" /></form>
</div>

也就是说,每次我有一个空的 html 标记时,比如<input ... />or <br />,它和下一个标记之间的空格就会被删除。

我尝试使用<xsl:output><xsl:preserve-space>选项修改此行为,但没有成功。

我能做些什么?

4

2 回答 2

0

我面临同样的问题。这是一个错误。

Diazo 使用 Python XML 库 lxml。lxml 使用 2 个 C 库,libxml2 和 libxslt。这很可能是这两个库之一中的错误。

很可能是这个错误:

https://bugzilla.gnome.org/show_bug.cgi?id=642191

最明显的解决方案是为 CSS 中的输入添加一些边距。

于 2014-04-22T14:31:37.340 回答
0

编辑 CSS 的另一种解决方案是在规则文件中重新引入空格。

<replace css:content="#form-1 input">
    <xsl:copy-of select="." /><xsl:value-of select="'&#32;'"/>
</replace>

这有点骇人听闻,但对我有用。

于 2014-04-22T14:46:52.457 回答