XSLT: удалить пробелы при преобразовании в HTML - PullRequest
4 голосов
/ 11 января 2010

У меня есть документ XML, который преобразован в HTML, но я хочу, чтобы результат HTML был как можно меньше. Поэтому я должен удалить все пробелы и окончания строк. Как я могу это сделать?

Ответы [ 4 ]

8 голосов
/ 11 января 2010

Вы должны быть в состоянии использовать strip-space:

<xsl:strip-space elements="*"/>
3 голосов
/ 12 января 2010

Использование

<xsl:strip-space elements="*"/>

хорошая идея.

Итак, уточняем детали вывода:

<xsl:output
    indent="no"
    method="html"/>

Если вышеупомянутое все еще недостаточно хорошо, вы можете попробовать изменить обработку text() узлов (думая в соответствии со схемой DocBook, где любой текст, который вы явно хотите, был бы в тегах <para/> или аналогичных):

<xsl:template match="chapter/text()"/>

Вы можете использовать только match="text()", но это может быть слишком агрессивно, поскольку оно очень расплывчато - оно не обязательно уничтожит нужный вам текст (опять же, в ваших <para/> тегах или аналогичных), как эти текстовые узлы вероятно, будут неявно обрабатываться встроенными шаблонами XSLT.

2 голосов
/ 11 января 2010

xsl:strip-space позволит вам убрать пробел из результирующего дерева. Также убедитесь, что вы не генерируете лишние пробелы в таблице стилей. То есть убедитесь, что вместо чего-то типа

<xsl:value-of select="@key"/>
:
<xsl:value-of select="@value"/>

использовать xsl:text

<xsl:value-of select="@key"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="@value"/>
1 голос
/ 11 января 2010

Вы должны пойти с

<xsl:strip-space elements="*"/>
...