# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1318957829 -7200
# Node ID 8c5867ac69df20877831857f1b5506fdd1f81f62
# Parent  3009cb0be5471df670593ee7cd1e82aa71e1cdb7
Drupal: lepší ošetření atributů u obrázků a odkazů, konverze i/b → em/strong, kontrola (apply-templates) vnořených značek.

diff -r 3009cb0be547 -r 8c5867ac69df helpers/mimeXhtmlPart.xsl
--- a/helpers/mimeXhtmlPart.xsl	Mon Oct 17 21:11:59 2011 +0200
+++ b/helpers/mimeXhtmlPart.xsl	Tue Oct 18 19:10:29 2011 +0200
@@ -96,20 +96,32 @@
 	
 	<!-- Odkazy -->
 	<xsl:template match="h:a">
-		<a href="{@href}" title="{@title}"><xsl:apply-templates/></a>
+		<xsl:element name="a">
+			<xsl:if test="@href"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute></xsl:if>
+			<xsl:if test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:if>
+			<xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:if>
+			<xsl:apply-templates select="node()"/>
+		</xsl:element>
 	</xsl:template>
 	
 	
 	<!-- Obrázky -->
 	<xsl:template match="h:img">
-		<img src="{@src}" alt="{@alt}" title="{@title}"><xsl:apply-templates/></img>
+		<xsl:element name="img">
+			<xsl:if test="@src"><xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute></xsl:if>
+			<xsl:if test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:if>
+			<xsl:if test="@alt"><xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute></xsl:if>
+		</xsl:element>
 	</xsl:template>
 	
+	
 	<!-- Zkratky -->
 	<xsl:template match="h:abbr">
 		<abbr title="{@title}"><xsl:apply-templates/></abbr>
 	</xsl:template>
 	
+	
+	<!-- Citace -->
 	<xsl:template match="h:blockquote[not(h:p)]">
 		<blockquote>
 			<p>
@@ -118,8 +130,25 @@
 		</blockquote>
 	</xsl:template>
 	
+	<!-- Tučné písmo -->
+	<xsl:template match="h:b">
+		<strong>
+			<xsl:apply-templates select="node()"/>
+		</strong>
+	</xsl:template>
 	
-	<!-- Další povolené značky – ostatní odfiltrujeme (zbude z nich jen text) -->
+	<!-- Skloněné písmo -->
+	<xsl:template match="h:i">
+		<em>
+			<xsl:apply-templates select="node()"/>
+		</em>
+	</xsl:template>
+	
+	
+	<!--
+		Další povolené značky (jejich případné atributy zahodíme).
+		Ostatní elementy odfiltrujeme (zbude z nich jen text). 
+	-->
 	<xsl:template match="*">
 		<xsl:choose>		
 			<xsl:when test="
@@ -145,7 +174,7 @@
 				name() = 'code' or
 				name() = 'blockquote'">
 				<xsl:element name="{name()}">
-					<xsl:copy-of select="./node()"/>
+					<xsl:apply-templates select="node()"/>
 				</xsl:element>
 			</xsl:when>
 			<xsl:otherwise>