Drupal: XSLT odstavce – textové vs. netextové uzly.
1.1 --- a/helpers/mimeXhtmlPart.xsl Fri Oct 14 12:41:14 2011 +0200
1.2 +++ b/helpers/mimeXhtmlPart.xsl Fri Oct 14 13:32:34 2011 +0200
1.3 @@ -79,7 +79,9 @@
1.4 <xsl:if test="$title and $isRoot">
1.5 <h1><xsl:value-of select="$title"/></h1>
1.6 </xsl:if>
1.7 - <xsl:apply-templates select="h:html/h:body/node()"/>
1.8 + <xsl:call-template name="zpracujTělo">
1.9 + <xsl:with-param name="prvek" select="h:html/h:body/node()[1]"/>
1.10 + </xsl:call-template>
1.11
1.12 <xsl:if test="$wwwRead or $wwwPost">
1.13 <div class="wwwLinks">
1.14 @@ -150,11 +152,43 @@
1.15 <!--
1.16 Z neuzavřeného (nevalidně se vyskytujícího v body) textu uděláme odstavce.
1.17 -->
1.18 - <xsl:template match="h:body/text()">
1.19 - <xsl:call-template name="dělejOdstavce">
1.20 - <xsl:with-param name="blokTextu" select="."/>
1.21 - </xsl:call-template>
1.22 + <xsl:template name="zpracujTělo">
1.23 + <xsl:param name="prvek"/>
1.24 + <xsl:if test="$prvek">
1.25 + <li>
1.26 + <
1.27 + <xsl:choose>
1.28 + <xsl:when test="$prvek/self::text()">
1.29 + <!--
1.30 + Textový uzel → budeme dělat odstavce
1.31 + (rekurzivně se opět zavolá šablona zpracujTělo)
1.32 + <xsl:call-template name="dělejOdstavce">
1.33 + <xsl:with-param name="blokTextu" select="."/>
1.34 + </xsl:call-template>
1.35 + -->
1.36 + [T]
1.37 + </xsl:when>
1.38 + <xsl:otherwise>
1.39 + <!--
1.40 + Jiný uzel → aplikujeme obecné šablony
1.41 + a zpracujeme následující uzel.
1.42 + <xsl:apply-templates select="."/>
1.43 + -->
1.44 + [N]
1.45 + </xsl:otherwise>
1.46 + </xsl:choose>
1.47 + [<xsl:value-of select="$prvek/name()"/>]
1.48 + [<xsl:value-of select="$prvek/text()"/>]
1.49 + [<xsl:value-of select="$prvek/self::text()"/>]
1.50 + >
1.51 + </li>
1.52 + <xsl:call-template name="zpracujTělo">
1.53 + <xsl:with-param name="prvek" select="$prvek/following-sibling::node()[1]"/>
1.54 + </xsl:call-template>
1.55 +
1.56 + </xsl:if>
1.57 </xsl:template>
1.58 +
1.59 <xsl:template name="dělejOdstavce">
1.60 <xsl:param name="blokTextu"/>
1.61 <xsl:variable name="oddělovač" select="'\n\s+\n\s+'"/>