a.css

esbudellant estàndards


Tractament de salts de carro als atributs en XSLT

22/04/2008

En XSLT el tractament dels salts de carro difereix entre elements i atributs. En el primer cas s'aplica tal qual és al document XML original però en el segon el mostra com una entitat (&#A;).

Això és degut a que XML 1.0 obliga que els salts de carro en atributs es normalitzin a espais i que els salts de carro que no es normalitzin s'expressin com a entitat (&#A;).

És a dir, donat un XML tal que:


<aaa>Lorem Ipsum 
dolor sit amet.</aaa>

A l'aplicar un XSLT tal que:


<xsl:element name="p">
   <xsl:value-of select="//aaa"/>
</xsl:element>

o simplificat:


<p>
   <xsl:value-of select="//aaa"/>
</p>

S'obté una sortida tal que:


<p>Lorem Ipsum 
dolor sit amet.</p>

En canvi, a l'aplicar un XSLT tal que:


<xsl:element name="p">
   <xsl:attribute name="title">
      <xsl:value-of select="//aaa"/>
   </xsl:attribute>
</xsl:element>

O simplificat:


<p title="{//aaa}"></p>

S'obté una sortida tal que:


<p title="Lorem Ipsum &#A;dolor sit amet."/>

Solució

Per evitar obtenir aquesta entitat, cal normalitzar:


<p title="{normalize-space(//aaa)}"></p>

Amb la qual cosa s'obté una sortida tal que:


<p title="Lorem Ipsum dolor sit amet."/>

Recursos relacionats


© Arnau Siches. a.css està sota Llicència Creative Commons.