Ze stylu jsou před zpracováním vypuštěny všechny textové uzly, které obsahují pouze bílé znaky. To se nám v některých případech nemusí hodit.
Příklad 4.9. Odstranění bílých znaků – ws1.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> <html> <body> <p> <strong> <em>Ahoj</em> </strong> </p> <p> Výstup do několika řádek zalamování lze tímto způsobem ovlivnit jen v uzlech, které obahují nějaké tisknutelné znaky.</p> </body> </html> </xsl:template> </xsl:stylesheet>
V tomto stylu jsou automaticky odstraněny konce řádek za počátečními elementy, protože mezi nimi jsou jen bílé znaky. Na výstupu tak dostaneme:
<html> <body> <p><strong><em>Ahoj</em></strong></p> <p> Výstup do několika řádek zalamování lze tímto způsobem ovlivnit jen v uzlech, které obahují nějaké tisknutelné znaky. </p> </body> </html>
Bílé znaky jsou ve stylu zachovávány jen uvnitř elementu xsl:text
. Do tohoto elementu můžeme
například vložit znak pro konec řádky.
Příklad 4.10. Zachování bílých znaků – ws2.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> <html> <body> <p><xsl:text>
</xsl:text> <strong><xsl:text>
</xsl:text> <em>Ahoj</em><xsl:text>
</xsl:text> </strong><xsl:text>
</xsl:text> </p> <p> Výstup do několika řádek zalamování lze tímto způsobem ovlivnit jen v uzlech, které obahují nějaké tisknutelné znaky.</p> </body> </html> </xsl:template> </xsl:stylesheet>
Obdržíme pak korektní výstup s konci řádek tam, kde je očekáváme.
<html> <body> <p> <strong> <em>Ahoj</em> </strong> </p> <p> Výstup do několika řádek zalamování lze tímto způsobem ovlivnit jen v uzlech, které obsahují nějaké tisknutelné znaky. </p> </body> </html>
Pokud potřebujeme do výstupního dokumentu ručně vkládat konce řádek, můžeme opět využít „trik“ s interními textovými entitami.
Příklad 4.11. Zachování bílých znaků elegantněji – ws3.xsl
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xsl:stylesheet [ <!ENTITY LF "<xsl:text>
</xsl:text>"> ]> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> <html> <body> <p>&LF; <strong>&LF; <em>Ahoj</em>&LF; </strong>&LF; </p> <p> Výstup do několika řádek zalamování lze tímto způsobem ovlivnit jen v uzlech, které obahujé nějaké tisknutelné znaky.</p> </body> </html> </xsl:template> </xsl:stylesheet>
Ve vstupním dokumentu se textové elementy, které obsahují pouze bílé znaky, automaticky neruší.
Odstraní se pouze ty přebytečné textové uzly s bílými
znaky, které jako svého rodiče mají element uvedený v seznamu
elementů u instrukce <xsl:strip-space>
. Ve stromu dokumentu
naopak zůstanou uzly, které mají jako svého rodiče element uvedený
v instrukci <xsl:preserve-space>
. Seznam elementů
se zadává pomocí atributu elements
a můžeme v něm použít mezerami oddělený seznam atributů, případně
hvězdičku pro všechny elementy.
Vyšší váhu než předchozí dvě instrukce má nastavení atributu
xml:space
na hodnotu preserve
u elementu nebo u některého z jeho
předků.
V praxi se odstranění nepotřebných textových uzlů projeví v kratším výstupním dokumentu – implicitní textovou šablonou nejsou na vstup kopírovány přebytečné mezery.