Re: [xsl] Grouping by attribute

Subject: Re: [xsl] Grouping by attribute
From: Jostein Austvik Jacobsen <josteinaj@xxxxxxxxx>
Date: Tue, 20 Oct 2009 12:35:59 +0200
Now, what if I want to replace all <p>-tags with <para>, and change
the namespace of all nodes to "foo"?

I've tried adding xmlns="foo" to the stylesheet tag, but then the
grouping solution won't work anymore. To apply my replace-<p>-template
I tried this with no luck either:

			<xsl:copy-of select="contentSection/node()">
				<xsl:apply-templates/>
			</xsl:copy-of>

Regards
Jostein
Newbie

2009/10/20 Jostein Austvik Jacobsen <josteinaj@xxxxxxxxx>:
> Thanks! I've been testing it a bit now and it works as expected.
>
> I'm having a little trouble mixing it with some of my other templates
> used on other parts of the document but I'll probably figure it out.
> Or else, I'll ask.
>
> Regards
> Jostein
>
> 2009/10/19 Michael Kay <mike@xxxxxxxxxxxx>:
>> The essence of the solution is
>>
>> <xsl:template match="contentSection">
>>  <h1>Title</h1>
>>  <xsl:for-each-group select="*" group-starting-with="headline">
>>    <xsl:choose>
>>      <xsl:when test="headline">
>>        <level2>
>>          <xsl:apply-templates select="current-group()"/>
>>        </level2>
>>      </xsl:when>
>>      <xsl:otherwise>
>>        <xsl:apply-templates select="current-group()"/>
>>      </xsl:otherwise>
>>    </
>>  </
>> </
>>
>> Regards,
>>
>> Michael Kay
>> http://www.saxonica.com/
>> http://twitter.com/michaelhkay
>>
>>> -----Original Message-----
>>> From: Jostein Austvik Jacobsen [mailto:josteinaj@xxxxxxxxx]
>>> Sent: 19 October 2009 13:18
>>> To: xsl-list
>>> Subject: [xsl] Grouping by attribute
>>>
>>> I've got this flat-structured XML:
>>>
>>> <document>
>>>   <metaData>
>>>     <title>Title</title>
>>>     <publisher>Publisher</publisher>
>>>   </metaData>
>>>   <contentSection>
>>>     <p>text</p>
>>>
>>>     <headline level="2">Headline</headline>
>>>     <p>text</p>
>>>     <p>text</p>
>>>
>>>     <headline level="2">Section</headline>
>>>     <p>text</p>
>>>     <pagenum id="page2"/>
>>>     <p>text</p>
>>>     <headline level="3">Subsection</headline>
>>>     <p>text</p>
>>>
>>>     <headline level="2">Section</headline>
>>>     <p>text</p>
>>>     <p>text</p>
>>>   </contentSection>
>>> </document>
>>>
>>> And want it transformed to this XML:
>>>
>>> <body>
>>>   <level1>
>>>     <h1>Title</h1>
>>>     <p>text</p>
>>>
>>>     <level2>
>>>       <h2>Headline</h2>
>>>       <p>text</p>
>>>       <p>text</p>
>>>     </level2>
>>>
>>>     <level2>
>>>       <h2>Section</h2>
>>>       <p>text</p>
>>>       <pagenum id="page2"/>
>>>       <p>text</p>
>>>       <level3>
>>>         <h3>Subsection</h3>
>>>         <p>text</p>
>>>       </level3>
>>>     </level2>
>>>
>>>     <level2>
>>>       <h2>Section</h2>
>>>       <p>text</p>
>>>       <p>text</p>
>>>     </level2>
>>>   </level1>
>>> </body>
>>>
>>> How would I do that using XSLT? XSLT 2.0 solutions are ok.
>>>
>>> Regards
>>> Jostein

Current Thread