RE: Re: [xsl] formatting issues

Subject: RE: Re: [xsl] formatting issues
From: ms <mina_hurray@xxxxxxxxx>
Date: Fri, 3 Nov 2006 08:24:31 -0800 (PST)
Thank you for your response and sorry for the delay.  

Are you saying that there may be "state" elements
> with "sym" child elements that contain text nodes
> which can have any one of these values "R", "A", and
> "C" and further that you want to process each type
> differently?

Yes, the sym element can contain "r, a or C" as
values. The only diffrence will be in the heading for
each valye. For example: if sym="R" , then the table
heading should change to "Required", if it is C it
should change to "Contain" , other than that the
content is the same. So when each of the "state"
elements are processed, the "sym" should be cheked in
order to put the right heading and display in
different tables. 

Did you > envision putting the values from one or the
other > set of (Val5, Val6, Val7, Val8) in the row in
the > template above, and if so, how would you
distinguish > which "data" node to use? 

All the "data" elements should be displayed.

--- cknell@xxxxxxxxxx wrote:

> You need to parse the question a little more
> carefully.
> =============================
> "state" elements according to an earlier statement
> you made, are always and only child elements of
> "states". That is to say all "state" elements are
> siblings and their parent element is "states".
> Therefor the construct "//state" is pointless and a
> waste of processing effort since it tells the
> processor to find all "state" elements at whatever
> level they may be in the source document.
> 
> =============================
> Are you saying that there may be "state" elements
> with "sym" child elements that contain text nodes
> which can have any one of these values "R", "A", and
> "C" and further that you want to process each type
> differently?
> 
> If so, you will want to create three templates:
> 
> <xsl:template match="state[sym='A']>
> </xsl:template>
> 
> <xsl:template match="state[sym='C']>
> </xsl:template>
> 
> <xsl:template match="state[sym='R']>
> </xsl:template>
> 
> and inside each template, put the content you want
> each to output.
> 
> So at some point you will have a template like this:
> 
> <xsl:template match="states">
>   <xsl:apply-templates />
> </xsl:template>
> 
> which will cause every "state" element to be
> processed by it's distinct template.
> =============================
> 
> Since you have shown in some detail what you want to
> output when you encounter a "state" element with a
> "sym" child with a value of "R", let's consider what
> that template would look like.
> 
> <xsl:template match="state[sym='R']>
>   <tr><td colspan="8"><b>STATES: </b></td></tr>
>   <tr>
>     <td width="9%"><u>Val1</u></td>
>     <td width="15%"><u>Val2</u></td>
>     <td width="7%"><u>Val3</u></td>
>     <td width="7%"><u>Val4</u></td>
>     <td width="9%"><u>Val5</u></td>
>     <td width="21%"><u>Val6</u></td>
>     <td width="15%"><u>Val7</u></td>
>     <td width="7%"><u>Val8</u></td>
>   <tr>
>     <td><xsl:value-of select="Val1"/></td>
>     <td><xsl:value-of select="Val2"/></td>
>     <td><xsl:value-of select="Val3"/></td>
>     <td><xsl:value-of select="Val4"/></td>
>     .... We'll deal with the dynamically-generated
> data here ....
>   </tr>
>   </tr>
> </xsl:template>
> 
> On the subject of the dynamically-generated data,
> I'm going to suggest you put it in a variable to
> make things easier for me to work with, so we are
> going to modify the template above to this:
> 
> <xsl:template match="state[sym='R']>
>   <xsl:variable name="dyn-data" select="document(...
> whatever goes in here...)" />
>   <tr><td colspan="8"><b>STATES: </b></td></tr>
>   <tr>
>     <td width="9%"><u>Val1</u></td>
>     <td width="15%"><u>Val2</u></td>
>     <td width="7%"><u>Val3</u></td>
>     <td width="7%"><u>Val4</u></td>
>     <td width="9%"><u>Val5</u></td>
>     <td width="21%"><u>Val6</u></td>
>     <td width="15%"><u>Val7</u></td>
>     <td width="7%"><u>Val8</u></td>
>   <tr>
>     <td><xsl:value-of select="Val1"/></td>
>     <td><xsl:value-of select="Val2"/></td>
>     <td><xsl:value-of select="Val3"/></td>
>     <td><xsl:value-of select="Val4"/></td>
>     ... Questions about dynamic data still to be
> answered ...
>   </tr>
>   </tr>
> </xsl:template>
> 
> You showed a sample of the document that would be
> returned by the document() function. It contained a
> root node of "results" that had two "data" child
> nodes. You showed in your original stylesheet an
> intent to insert the content of the dynamic document
> here. Each of the two "data" nodes had an identical
> set of child nodes (Val5, Val6, Val7, Val8). Did you
> envision putting the values from one or the other
> set of (Val5, Val6, Val7, Val8) in the row in the
> template above, and if so, how would you distinguish
> which "data" node to use? If you planned to use both
> (or all, if there are more than two "data" nodes")
> do you intend to add additional columns to this row
> or to break the output into several rows?
> =============================
> 
> Let's have the answers to these questions before we
> go any further.
> -- 
> Charles Knell
> cknell@xxxxxxxxxx - email
> 
> 
> 
> -----Original Message-----
> From:     ms <mina_hurray@xxxxxxxxx>
> Sent:     Thu, 2 Nov 2006 08:43:32 -0800 (PST)
> To:       xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Re: [xsl] formatting issues
> 
> Thank you very much for your interest and response.
> Here is my response:
> 
>  >Your test tries to establish if there is any "sym"
> > element with a value of 
> > >"R" that is a child of a "state" element that my
> be
> > at any level in the 
> > >document. If so then it goes on to create a
> table.
> > >
> > >Is that really what you want to do?
> 
> - Yes, the 'sym' element can have values R, A and C.
> So depending on the value of sym, the heading for
> the
> table changes. I have done a similar code for the
> other values also. 
> 
> 
> 
> > 
> > 
> > 
> > >From: cknell@xxxxxxxxxx
> > >Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > >To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > >Subject: RE: RE: Re: [xsl] formatting issues
> > >Date: Thu, 02 Nov 2006 10:18:25 -0500
> > >
> > >I'm willing to work with you on this, but the
> XSLT
> > you showed is such an 
> > >awful mess that in order for me to spend time on
> > the problem, we'll have to 
> > >clean it up no matter that "So hetting these to
> > display correctly on the 
> > >XSLT is not an issue."
> > >
> > >Based on what I see in your stylesheet, I surmise
> > that you are fairly new 
> > >to XSLT, or at least, you haven't had the benefit
> > of training by someone 
> > >with a good understanding of the processing
> model.
> > >
> > >So let's start with your first template. I'll
> quote
> > from the first part:
> > >
> > ><xsl:template match="states">
> > >   <br/>
> > >   <xsl:if test="//state/sym='R'">
> > >
> > >Your test tries to establish if there is any
> "sym"
> > element with a value of 
> > >"R" that is a child of a "state" element that my
> be
> > at any level in the 
> > >document. If so then it goes on to create a
> table.
> > >
> > >Is that really what you want to do? Since you say
> > that all "state" elements 
> > >are children of one "states" element, there is no
> > point in starting the 
> > >test attribute value with two slashes. You could
> > accomplish the same thing, 
> > >with less confusion and at less processing cost
> by
> > replacing your construct 
> 
=== message truncated ===



 
____________________________________________________________________________________
Cheap Talk? Check out Yahoo! Messenger's low PC-to-Phone call rates 
(http://voice.yahoo.com)

Current Thread
  • RE: Re: [xsl] formatting issues, (continued)
      • ms - Thu, 2 Nov 2006 06:35:51 -0800 (PST)
    • cknell - Thu, 02 Nov 2006 10:18:25 -0500
    • ms - Thu, 2 Nov 2006 08:43:32 -0800 (PST)
    • cknell - Thu, 02 Nov 2006 12:30:23 -0500
      • ms - Fri, 3 Nov 2006 08:24:31 -0800 (PST) <=
    • cknell - Fri, 03 Nov 2006 15:12:03 -0500