Я использую XSLT, чтобы преобразовать XML в HTML. Если я укажу indent='no'
в <xsl:output>
, смежные теги в сгенерированном HTML объединяются в одну длинную строку (все пробелы для макета между ними удаляются), что очень затрудняет чтение и понимание. Однако, если я укажу "indent-'yes '", HTML будет иметь хороший отступ, но это полностью разрушит макет текста, заключенного в ...
.
Есть ли способ получить лучшее из в обоих мирах, имея indent='yes'
при оставлении <pre>
блоков без изменений?
Изменить: Я пытался придумать минимальный пример, но не могу воспроизвести то, что вижу , так что, очевидно, происходит что-то еще. FWIW, вот что я пробовал:
<?xml version='1.0'?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="demo">
<html>
<head>
<title>Demo</title>
</head>
<body>
<h1>This is a demo</h1>
<hr/>
<xsl:apply-templates/>
<hr/>
</body>
</html>
</xsl:template>
<xsl:template match="foo">
<h2>This is foo</h2>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Я применил эту таблицу стилей к этому вводу:
<code><demo>
<p>Some HTML</p>
<pre>this is
preformatted text
which should not be<br/>
indented
и результат выглядел так: без отступов, но, по крайней мере, читаемый.
<code><html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Demo</title>
</head>
<body>
<h1>This is a demo</h1>
<hr>
<p>Some HTML</p>
<pre>this is
preformatted text
which should not be<br>
indented
Это foo
Реализация, которую я использую, - это все, что поставляется с Java 1.8.