У меня есть xml / tei, как
<p> In trattoria scoprii che c'era <del rend="tratto a matita">anche</del> Mirella,
non la non vedevo da almeno sei anni.
La spianata dava infatti l'impressione di fango secco, <del rend="matita">divorato
dalle rughe</del><add place="margine sinistro" rend="matita">attraversato da
lunghe ferite nere</add>. Lontano si vedeva una montagna di creta dello
stesso colore della mota. </p>
Я использую эту таблицу стилей для удаления пробелов, как между элементами, так и внутри текстовых узлов.
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="normalize-space()"/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
Все идет хорошо, за исключением того факта, что normalize-space () удаляет также начальные и тральные пробелы, поэтому у меня есть некоторые нежелательные действия, такие как
c'era<del rend="tratto a matita">anche</del>Mirella
Я не могу исключить содержимое смешанного режима из удаления, потому что моя первая потребность - свернуть пробелы, такие как возвраты, табуляции, отступы внутри, скажем, элемент <p>
.
Есть ли способ / функция / трюк для свертывания нескольких пробелов в одном пробеле без удаления начальных и конечных пробелов?