Re: [xsl] Writing conditional statement based on attribute

Subject: Re: [xsl] Writing conditional statement based on attribute
From: llobash@xxxxxxxx
Date: Tue, 6 Feb 2007 10:08:36 -0500
sure, sorry, more complete example:

<dsc type="combined">

<c01
level="series"><did><unittitle><unitdate></unitdate></unittitle><physdesc></physdesc></did>
<arrangement.</arrangement><scopecontent><p></p></scopecontent>

<c02
level="subseries"><did><unittitle><unitdate></unitdate></unittitle><physdesc></physdesc></did>
<arrangement.</arrangement><scopecontent><p></p></scopecontent>

<c03
level="file"><did><unittitle><unitdate></unitdate></unittitle><physdesc></physdesc></did>
<arrangement.</arrangement><scopecontent><p></p></scopecontent></c03>

<c03><did><unittitle><unitdate></unitdate></unittitle><physdesc></physdesc></did>
<arrangement.</arrangement><scopecontent><p></p></scopecontent></c03></c02></c01></dsc>

again, I am trying to format scopecontent one way where @level="series" or
"subseries" and another where @level="file" or there is no attribute level.

thanks again,
lynn



                                                                           
             Kamal Bhatt                                                   
             <kbhatt@xxxxxxxxx                                             
             >                                                          To 
                                       xsl-list@xxxxxxxxxxxxxxxxxxxxxx     
             02/05/2007 06:26                                           cc 
             PM                                                            
                                                                   Subject 
                                       Re: [xsl] Writing conditional       
             Please respond to         statement based on attribute        
             xsl-list@xxxxxxxx                                             
              lberrytech.com                                               
                                                                           
                                                                           
                                                                           
                                                                           




llobash@xxxxxxxx wrote:
> I am trying to write a conditional statement based on an attribute:
>
> The XML doc will have either @level=series, subseries, file, item, or no
> attribute.
>
> I would like the output to be in <p> with default font where
> @level="series" | @level="subseries"
>
> and  <font size="-1" color="gray"> where there is file, item or no level
> attribute. In other words anything but series or subseries.
>
> Here are two examples of XML:
>
> scopecontent is the element i am trying to format. parent element is dsc.
>
> <c01 level="series">
> <did>
> <container type="folder" label="Folder"> 15</container>
> <unittitle><unitdate>1932</unitdate></unittitle>
> </did>
> <scopecontent>
> <p> Includes letters regarding Lee Strasberg's health. </p>
> </scopecontent>
>
>
> <c04>
> <did>
> <container type="folder" label="Folder"> 15</container>
> <unittitle><unitdate>1932</unitdate></unittitle>
> </did>
> <scopecontent>
> <p> Includes letters regarding Lee Strasberg's health. </p>
> </scopecontent>
> </c04>
>
> I tried the following with no luck:
>
> <xsl:template match='dsc//scopecontent'>
> <xsl:choose>
>       <xsl:when test='* [@level="series"] |
>                   * [@level="subseries"]'>
>             <p>
>                   <xsl:apply-templates/>
>             </p>
>
>       </xsl:when>
>       <xsl:otherwise>
>             <font size="-1" color="gray">
>             <xsl:apply-templates/>
>             </font>
>       </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
>
You match is saying find all scopecontent elements in dsc. Your if
statement is wrong on two counts (I think). Firstly, I think the syntax
is wrong, I think you mean 'node()[@level="series"] or node [@level =
"subseries"]' but this is incorrect as you are searching for @level in
scopecontent. You should be looking in c01, c04, etc...
> Also:
>
> <xsl:template match='* [@level="series"]//scopecontent |
>              * [@level="subseries"]//scopecontent'>
>       <p>
>       <xsl:apply-templates/>
>       </p>
> </xsl:template>
>
> <xsl:template match='* [not (@level="series")]//scopecontent |
>              * [not (@level="subseries")]//scopecontent'>
>       <font size="-1" color="gray">
>       <xsl:apply-templates/>
>       </font>
> </xsl:template>
>
> Thanks for the help.
> Lynn
>
>
>
Can you give a more complete and correct example? From what you have
given us, you should not be matching on scopecontent first, but on c0x
where x is a number. We need to know more about these c0x elements. How
many are there, do they follow a pattern? are there any other sort of
elements in dsc? is there a b0x element?.

--
Kamal Bhatt

Current Thread