xsl-list
[Top] [All Lists]

RE: XSLT 2.0 & Grouping for-each-group

2003-08-07 01:20:48
* Mark Brand

Hi

I have further questions on the fragments posted earlier. I 
did try implementing both options 
but had some questions ...

Q1. 
<snip>
<xsl:for-each-group select="current-group() except "." 
      group-starting-with="*[(_at_)StyleName='DIVISION']">
</snip>

With this line of code, i found that it would execute (enter 
the for-each-group
loop) even if there wasn't a DIVISION item in the group. How 
do I stop the loop being entered if the group-starting-with 
entry is not in the list. I have tried an if statement after 
the loop has been entered but it is too late then for my purposes.

This reads to me like

<xsl:if test="current-group()/*[(_at_)StyleName='DIVISION']">
  <xsl:for-each-group select="current-group() except "." 
        group-starting-with="*[(_at_)StyleName='DIVISION']">
...
</xsl:if>

But I may have misunderstood the requirement. What do you want to happen
if there isn't a DIVISION item in the group?


Q2. 
<snip>
  <Part Category="{(_at_)StyleName}">
    <xsl:copy-of select="child::node()"/>
    <xsl:for-each-group select="current-group() except ."
       group-starting-with="*[(_at_)StyleName=f:child(@StyleName)]">
      <xsl:apply-templates select="."/>
</snip>

With this piece of code from the second option where would 
you put the closing tags, 
where-ever i put them they would all output after everything 
else instead of in a nested fashion.

Clearly the XSLT must be well-formed XML, so the closing tags have to be
properly nested, and they will then also be properly nested in the
result document. In fact, it's impossible to output a document in which
the tags aren't properly nested! So I don't think I understand the
question.

Michael Kay


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list