Как я могу сохранить пробелы между тегами с Diazo?

Я создаю простую тему Диазо.

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 ... /> или же <br />, пробел между ним и следующим тегом удаляется.

Я пытался изменить это поведение, используя <xsl:output> а также <xsl:preserve-space> варианты, без успеха.

Что я могу сделать?

2 ответа

Альтернативным решением для редактирования вашей CSS может быть повторное введение пробелов в вашем файле правил.

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

Это немного взломать, но у меня работает.

Я сталкиваюсь с этой же проблемой. Это ошибка.

Diazo использует lxml, библиотеку Python XML. lxml использует 2 библиотеки C, libxml2 и libxslt. Скорее всего, это ошибка в одной из этих двух библиотек.

Вполне возможно, что это ошибка:

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

Наиболее очевидным решением является добавление некоторого поля для входных данных в вашем CSS.

Другие вопросы по тегам