Subject: Re: [xsl] Writing conditional statement based on attribute From: Kamal Bhatt <kbhatt@xxxxxxxxx> Date: Tue, 06 Feb 2007 10:29:33 +1100 |
I am trying to write a conditional statement based on an attribute: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...
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>
Also: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?.
<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
-- Kamal Bhatt
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Writing conditional statement, llobash | Thread | Re: [xsl] Writing conditional state, llobash |
Re: [xsl] 99 bottles of beer, Abel Braaksma | Date | RE: [xsl] 99 bottles of beer, Michael Kay |
Month |