# 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>