Drupal: lepší ošetření atributů u obrázků a odkazů, konverze i/b → em/strong, kontrola (apply-templates) vnořených značek.
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>