xsl-list
[Top] [All Lists]

Re: [xsl] Re: using OR in a group-ending-with test

2011-08-16 05:01:04
On 16 August 2011 10:43, Jeff Wilson <jeffrey(_at_)backhousestudios(_dot_)com> 
wrote:
Good morning,

It seems that xsl:for-each-group may not be the correct way to go about what
I'm trying to do. All I need to do is nest adjacent paras styled with
"Feature..." in a new element.

Would it be easier to test the following-sibling's value to determine when
to end the nesting element? Or is grouping the correct logic?

Given (simplified):

<w:p><w:pPr><w:pStyle @w:val="Para"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="Para"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeatureType"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeatureTitle"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeaturePara"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeaturePara"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeatureSlug"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeatureList"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeatureList"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeatureList"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="FeaturePara"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="Para"></w:pPr></w:p>
<w:p><w:pPr><w:pStyle @w:val="H1"></w:pPr></w:p>

^^^ what is that ?  ^^^^^^

It's not xml... its rubbish in so many ways.  How hard is it to put
together a small complete sample... if anyone wanted to use that
sample they would need to spend 5 mins correcting it first, then more
time wading through the redundant namespaces and nesting for this
problem.  You could just use:

<root>
  <foo val="para"/>
  <foo val="feature"/>
  <foo val="feature/>
  <foo val="feature"/>
</root>



I would like to end up with (simplified):

<Para>...</Para>
<Para>...</Para>
<AnchoredFeature>
<FeatureTitle>...</FeatureTitle>
<FeaturePara>...</FeaturePara>
<FeaturePara>...</FeaturePara>
<img src="...">
<FeatureList>...</FeatureList>
<FeatureList>...</FeatureList>
<FeatureList>...</FeatureList>
<FeaturePara>...</FeaturePara>
</AnchoredFeature>
<Para>...</Para>
<H1>...</H1>

You just need a for-each-group selecting the elements you want to
group, using group-adjacent to select the common thing to group on:

<xsl:for-each-group select="w:p"
group-adjacent="w:pPr/w:pStyle/@w:val/starts-with(., 'Feature')">




-- 
Andrew Welch
http://andrewjwelch.com

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>