Potřebujete pomoci s XSLT?
Nabízím školení, konzultace, vývoj XSLT kódu na zakázku. Nevájte a kontaktujte mne.

Podpořte provoz stránek
Platba probíhá pomocí služby PayPal a je možné platit kartou nebo převodem z vašeho PayPal účtu.

14.6 Mapování znaků na výstupu transformace

V ojedinělých případech potřebujeme, aby transformace vygenerovala výstup, který porušuje syntaktická pravidla jazyků HTML a XML. Například potřebujeme do výstupu vygenerovat značky <% a %>, které skriptovací prostředí jako ASP nebo JSP používají pro oddělení HTML kódu od spustitelných částí vloženého kódu. V XSLT 1.0 pro tyto účely šlo použít atribut disable-output-escaping. Nová verze jazyka XSLT přidává možnost mnohem elegantnějšího řešení.

Transformace může obsahovat definici mapování znaků. Pro každý znak může být určeno, jakým znakem nebo posloupností znaků má být nahrazen při generování (serializaci) výstupu. Vše ukazuje následující příklad.

Příklad 14.9. Mapování znaků při serializaci – mapovani-znaku.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                version="2.0">

<!-- Uživatelské definování znaků při serializaci -->
<xsl:character-map name="moje-mapa">
  <!-- Pevná mezera se zapíše jako &nbsp; -->
  <xsl:output-character character="&#160;" string="&amp;nbsp;"/>
  
  <!-- Znaky ◄ a ► se převedou na ASP oddělovače <% a %> -->
  <xsl:output-character character="◄" string="&lt;%"/>
  <xsl:output-character character="►" string="%>"/>
</xsl:character-map>

<!-- Pro výstup se bude používat námi definovaná mapa -->
<xsl:output use-character-maps="moje-mapa"/>  
  
<xsl:template match="/">
  <html>
    <head>
      <title>Testovací stránka</title>
    </head>
    <body>
      V&#160;lese žije medvěd.
      Aktuální čas: ◄= Now()►
    </body>
  </html>
</xsl:template>  

</xsl:stylesheet>

Transformace přitom vygeneruje následující výstup.

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Testovací stránka</title>
   </head>
   <body>
      V&nbsp;lese žije medvěd.
      Aktuální čas: <%= Now()%>
    </body>
</html>

© Jiří Kosek 2014

Tento dokument je určen výhradně pro osobní potřebu seznámení s jazykem XSLT. Jakékoliv jiné použití, včetně dalšího šíření, pořizování kopií, použití při školeních a výuce apod. je výslovně zakázáno a bude považováno za porušení autorských práv.


Copyright © 2000-2014 Jiří Kosek