Re: [xsl] Grouping with keys

Subject: Re: [xsl] Grouping with keys
From: "Silvia Liberto" <SLiberto@xxxxxx>
Date: Thu, 9 Feb 2006 16:05:33 +0100 (MET)
hello again,

have someone an idea for my problem?
i don4t know where the mistake is?

i have another solution, without keys, but it doesn4t works too!?
Maybe its a small thing!?

can someone give me a tip?

Thanks!

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

 <xsl:template match="p">
 <programlisting>
  <xsl:call-template name="prog"/>
     </programlisting> 
</xsl:template>

<xsl:template match="r">
  <xsl:copy-of select="."/>
</xsl:template>

<xsl:template name="prog">
	&#160; 
      <xsl:for-each  
select="following-sibling::p[pPr/pStyle/@val='Programlisting']">
		  <xsl:value-of select="." />&#160; 
	  </xsl:for-each>  
    		 	  

</xsl:template>


</xsl:stylesheet>




> Hi Wendell and all,
> 
> thanks for helping, i know what you mean when you say i should try a
> simpler
> solution, but i need this key! ;-)
> 
> so i have changed my syntax on the @use attribute for Programlisting.
> 
> > generate-id(preceding-sibling::p[pPr/pStyle/@val='Heading1'][1])
> 
> but it still doesn4t works!? i have no grouping effect?
> 
> i can4t find the reason, have you another idea?

the output shoud be like this:

<programlisting>
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;BODY&gt;
</programlisting>

> 
> 
> <xsl:key name="prog" match="p[pPr/pStyle/@val='Programlisting']"
> 
>
use="generate-id(preceding-sibling::p[pPr/pStyle/@val='Programlisting'][1])"/>
>  
> 
>  <xsl:template match="p">
>  <xsl:choose>			
> 		<xsl:when test="pPr/pStyle/@val='Heading1'">
> 			<title>
> 				<xsl:value-of select="r/t"/>
> 			</title>
> 		</xsl:when>
> 		<xsl:when test="pPr/pStyle/@val='Programlisting'">
> 	<programlisting>
> 			 <xsl:for-each select="key('prog',generate-id())">
> 				<xsl:value-of select="r/t"/>
> 			 </xsl:for-each>	 
> 		</programlisting>
> 		</xsl:when>
> </xsl:choose>
> 
> 
> </xsl:template>
> 
> </xsl:stylesheet>
> 
> 
> 
> XML:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!--<?mso-application progid="Word.Document"?>-->
> <wordDocument>
> 	<body>
> 		<sect>
> 			<p>
> 				<pPr>
> 					<pStyle val="Heading1"/>
> 				</pPr>
> 				<r>
> 					<t>Erste Ueberschrift</t>
> 				</r>
> 			</p>
> 			<p>
> 				<pPr>
> 					<pStyle val="Programlisting"/>
> 				</pPr>
> 				<r>
> 					<t>&lt;HTML&gt;</t>
> 				</r>
> 			</p>
> 			<p>
> 				<pPr>
> 					<pStyle val="Programlisting"/>
> 				</pPr>
> 				<r>
> 					<t> &lt;HEAD&gt;</t>
> 				</r>
> 			</p>	
> 			<p>
> 				<pPr>
> 					<pStyle val="Programlisting"/>
> 				</pPr>
> 				<r>
> 					<t> &lt;BODY&gt;</t>
> 				</r>
> 			</p>	
> 		</sect>
> 	</body>
> </wordDocument>
> 
> 
> 
> 
> -- 
> Telefonieren Sie schon oder sparen Sie noch?
> NEU: GMX Phone_Flat http://www.gmx.net/de/go/telefonie
> 

-- 
DSL-Aktion wegen gro_er Nachfrage bis 28.2.2006 verldngert:
GMX DSL-Flatrate 1 Jahr kostenlos* http://www.gmx.net/de/go/dsl

Current Thread