[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
On 13/04/2010 16:03, Mathieu Malaterre wrote:
entry/@morerows != ''
as a general rule never use != if either operand is a sequence (or a simpler rule, never use != at all) There are times when you want to break this rule but they are rather infrequent. The semantics of not(entry/@morerows = '') are far simpler (and far more frequently desired) than those of entry/@morerows != ''
preceding-sibling::row[not(entry/@morerows)][1]
David
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. ________________________________________________________________________
Re: [xsl] Select previous sibling where attribute is not empty
Subject: Re: [xsl] Select previous sibling where attribute is not empty From: David Carlisle <davidc@xxxxxxxxx> Date: Tue, 13 Apr 2010 16:17:19 +0100 |
On 13/04/2010 16:03, Mathieu Malaterre wrote:
Hi there,
I am trying to select preceding-sibling::row[1] or preceding-sibling::row[2] in the following example. Of course '1' or '2' are hardcoded, and instead I need to express instead " where entry/@morerows != '' "
Here is my Input.xml:
<informaltable frame="all"> <tgroup cols="3.782608695652174"><tbody><row> <entry morerows="2"> <para>Study</para> </entry> <entry> <para>General Study</para> </entry> <entry> <para>C.7.2.1</para> </entry> <entry> <para>M</para> </entry> </row> <row> <entry> <para>Patient Study</para> </entry> <entry> <para>C.7.2.2</para> </entry> <entry> <para>U</para> </entry> </row> <row> <entry> <para>Clinical Trial Study</para> </entry> <entry> <para>C.7.2.3</para> </entry> <entry> <para>U</para> </entry> </row></tbody></tgroup> </informaltable>
My current xsl script is:
<xsl:template match="row"> <xsl:message> <xsl:if test="count(entry) = 3"> <xsl:value-of select="preceding-sibling::row[entry/@morerows != '' ]"/> </xsl:if> </xsl:message> </xsl:template>
Thanks for suggestions,
entry/@morerows != ''
as a general rule never use != if either operand is a sequence (or a simpler rule, never use != at all) There are times when you want to break this rule but they are rather infrequent. The semantics of not(entry/@morerows = '') are far simpler (and far more frequently desired) than those of entry/@morerows != ''
I'm not at all clear what your requirement is, if you want the nearest row that doesn't have an entry with a morerows attribute then that would be
preceding-sibling::row[not(entry/@morerows)][1]
David
________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: Select previous sibling w, Mathieu Malaterre | Thread | [xsl] EXSLT replace to XSLT 2.0 rep, Szabo, Patrick \(LNG |
[xsl] Re: Select previous sibling w, Mathieu Malaterre | Date | Re: [xsl] The output of evaluating , Wendell Piez |
Month |
Keywords