Drupal: lepší ošetření atributů u obrázků a odkazů, konverze i/b → em/strong, kontrola (apply-templates) vnořených značek.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Tue, 18 Oct 2011 19:10:29 +0200
changeset 948c5867ac69df
parent 93 3009cb0be547
child 95 62b9b2533902
Drupal: lepší ošetření atributů u obrázků a odkazů, konverze i/b → em/strong, kontrola (apply-templates) vnořených značek.
helpers/mimeXhtmlPart.xsl
     1.1 --- a/helpers/mimeXhtmlPart.xsl	Mon Oct 17 21:11:59 2011 +0200
     1.2 +++ b/helpers/mimeXhtmlPart.xsl	Tue Oct 18 19:10:29 2011 +0200
     1.3 @@ -96,20 +96,32 @@
     1.4  	
     1.5  	<!-- Odkazy -->
     1.6  	<xsl:template match="h:a">
     1.7 -		<a href="{@href}" title="{@title}"><xsl:apply-templates/></a>
     1.8 +		<xsl:element name="a">
     1.9 +			<xsl:if test="@href"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute></xsl:if>
    1.10 +			<xsl:if test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:if>
    1.11 +			<xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:if>
    1.12 +			<xsl:apply-templates select="node()"/>
    1.13 +		</xsl:element>
    1.14  	</xsl:template>
    1.15  	
    1.16  	
    1.17  	<!-- Obrázky -->
    1.18  	<xsl:template match="h:img">
    1.19 -		<img src="{@src}" alt="{@alt}" title="{@title}"><xsl:apply-templates/></img>
    1.20 +		<xsl:element name="img">
    1.21 +			<xsl:if test="@src"><xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute></xsl:if>
    1.22 +			<xsl:if test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:if>
    1.23 +			<xsl:if test="@alt"><xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute></xsl:if>
    1.24 +		</xsl:element>
    1.25  	</xsl:template>
    1.26  	
    1.27 +	
    1.28  	<!-- Zkratky -->
    1.29  	<xsl:template match="h:abbr">
    1.30  		<abbr title="{@title}"><xsl:apply-templates/></abbr>
    1.31  	</xsl:template>
    1.32  	
    1.33 +	
    1.34 +	<!-- Citace -->
    1.35  	<xsl:template match="h:blockquote[not(h:p)]">
    1.36  		<blockquote>
    1.37  			<p>
    1.38 @@ -118,8 +130,25 @@
    1.39  		</blockquote>
    1.40  	</xsl:template>
    1.41  	
    1.42 +	<!-- Tučné písmo -->
    1.43 +	<xsl:template match="h:b">
    1.44 +		<strong>
    1.45 +			<xsl:apply-templates select="node()"/>
    1.46 +		</strong>
    1.47 +	</xsl:template>
    1.48  	
    1.49 -	<!-- Další povolené značky – ostatní odfiltrujeme (zbude z nich jen text) -->
    1.50 +	<!-- Skloněné písmo -->
    1.51 +	<xsl:template match="h:i">
    1.52 +		<em>
    1.53 +			<xsl:apply-templates select="node()"/>
    1.54 +		</em>
    1.55 +	</xsl:template>
    1.56 +	
    1.57 +	
    1.58 +	<!--
    1.59 +		Další povolené značky (jejich případné atributy zahodíme).
    1.60 +		Ostatní elementy odfiltrujeme (zbude z nich jen text). 
    1.61 +	-->
    1.62  	<xsl:template match="*">
    1.63  		<xsl:choose>		
    1.64  			<xsl:when test="
    1.65 @@ -145,7 +174,7 @@
    1.66  				name() = 'code' or
    1.67  				name() = 'blockquote'">
    1.68  				<xsl:element name="{name()}">
    1.69 -					<xsl:copy-of select="./node()"/>
    1.70 +					<xsl:apply-templates select="node()"/>
    1.71  				</xsl:element>
    1.72  			</xsl:when>
    1.73  			<xsl:otherwise>