Drupal: XSLT odstavce – textové vs. netextové uzly.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Fri Oct 14 13:32:34 2011 +0200 (2011-10-14)
changeset 78969f001a0f5f
parent 77 623025c704c5
child 79 245311d10726
Drupal: XSLT odstavce – textové vs. netextové uzly.
helpers/mimeXhtmlPart.xsl
     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 +				&lt;
    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 +				&gt;
    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+'"/>