У меня есть сайт Plone, тематический с plone.app.theming.У меня проблема в том, что дизайн довольно строгий и не предполагает пустых элементов <p>
или каких-либо других бессмысленных выходных данных TinyMCE.Такие элементы нарушают задуманный дизайн.Поэтому я хочу убрать пустые элементы из контента.Я пробовал встроенный xslt (который, согласно http://diazo.org/advanced.html#inline-xsl-directives должен поддерживаться) как:
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(*) and not(text()[normalize-space()])]"/>
Но это не сработало.На самом деле это сделало что-то странное.Пустые теги p
, от которых я хотел избавиться, остались без изменений, но некоторые другие элементы, такие как
<a href="mylink"> <img src="../++theme++jarn.com/whatever.png" /></a>
, превратились в
<a href="mylink"></a>
с полосатым изображением.Замена match="*[…
во втором шаблоне на match="p[…
не удаляла изображения, но эти неприятные <p>
все еще были в выводе.
Любые подсказки о том, как избавиться от пустых элементов, используяПравила Diazo?
ОБНОВЛЕНИЕ 31 января 2012 г. Вот содержимое, из которого мне нужно удалить пустые теги p
:
<div id="parent-fieldname-text">
<p></p>
<p> </p>
<p> </p>
<p><section id="what-we-do">
<p class="visualClear summary">Not empty Paragraph</p>
<ul class="thumbsList">
<li><a href="mylink"> <img src="../++theme++jarn.com/whatever.png" /></a></li>
<li><a href="mylink"> <img src="../++theme++jarn.com/whatever.png" /></a></li>
</ul>
</section></p>
</div>
The Diazoправила преобразования:
<?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">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="p[not(*) and not(normalize-space())]"/>
<!-- The default theme, used for standard Plone web pages -->
<theme href="index.html" css:if-content="#visual-portal-wrapper" />
<replace css:theme-children="div.contentWrapper" css:content-children="#content" />
</rules>
Вывод, который я получаю после применения преобразований к сайту Plone, абсолютно идентичен вводу, хотя я ожидаю получить эти 3 пустых тега <p>
после открытия <div>
, чтобы перейтипрочь.
Если я изменю второй шаблон, чтобы он соответствовал всем элементам, таким как match="*…
, тогда изображения будут удалены, но пустые теги <p>
все еще там.