Subject: [xsl] Testing if multiple nodes contain values From: Jonathan Kart <jkart@xxxxxxxxxxxx> Date: Thu, 26 Aug 2004 18:40:51 -0700 |
I'm trying to test to see if multiple nodes contain a value. xml is like:
<publication_1>a publication</publication_1> <publication_2>a publication</publication_2> . . . <publication_n>a publication</publication_n>
i want to do, in pseudocode <xsl:if test="any node which starts with publication_ has a value"> do something </xsl:if>
Thanks for any help, jonathan
Hello Susan,
<sw:stop>
<word>the</word>
<word>a</word>
<word>an</word>
</sw:stop>
<xsl:variable name="stop-words" select="document('')/xsl:stylesheet/sw:stop/word"/>
I didn't know this was possible? Selecting elements from the stylesheet by using document('')
Anyway, it didn't work for me... so I put the stop-words in a separate file and used
"document('stop-words.xml')/stop/word" instead; that worked.
(I also corrected the "uppercase" variable: the last 4 chars are missing)
Then, after some experimenting, I succeeded in sorting twice, with empty titles included,
simply by omitting [text()!=''] from your first for-each select. Like this:
<xsl:for-each select="//section-02/title"> <!-- removed [text()!=''] -->
<xsl:sort select="concat(substring(substring-after(.,' '), 0 div boolean
($stop-words[starts-with(translate(current(), $uppercase, $lowercase),
concat(translate(., $uppercase, $lowercase), ' '))])), substring(., 0 div not
($stop-words[starts-with(translate(current(), $uppercase, $lowercase),
concat(translate(., $uppercase, $lowercase), ' '))])))"/>
<xsl:sort select="number(concat(substring(../arrival-date, 7,4),
substring(../arrival-date, 1,2), substring(../arrival-date, 4,2)))" order="descending"/>
<!-- added ../ -->
<tr> <td width="10%"><xsl:value-of select="../doc-number"/></td> <td width="30%"><xsl:value-of select="../title" /></td> <td width="10%"><xsl:value-of select="../isbn-issn"/></td> <td width="20%"><xsl:value-of select="../imprint"/></td> <td width="20%"><xsl:value-of select="../description"/></td> <td width="10%"><xsl:value-of select="../arrival-date"/></td> </tr> </xsl:for-each>
You were really close, I guess... I hope I didn't miss something, but I think it works now
Best regards, Anton Triest
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] sorting titles w stopword, cking | Thread | Re: [xsl] Testing if multiple nodes, Jonathan Kart |
[xsl] How to make a request to a sa, IceT | Date | [xsl] Applying a Second Stylesheet , petefc@xxxxxxxxxxxxx |
Month |