[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: Testing if multiple nodes contain values - nevermi
Subject: Re: Testing if multiple nodes contain values - nevermind
From: Jonathan Kart <jkart@xxxxxxxxxxxx>
Date: Thu, 26 Aug 2004 19:04:35 -0700
|
I found something.
didn't realize you could concat multiple nodes together as part of a
variable:
<xsl:variable name="all_publications">
<xsl:copy-of select="*[starts-with(name(),'publications_')]"/>
</xsl:variable>
This is working, so i'm ok unless you have better ideas.
Thanks,
jonathan
On Aug 26, 2004, at 6:40 PM, Jonathan Kart wrote:
Hi all,
I'm sure i should be spending more time on this myself, but i'm in a
bit of a time crunch and i can't seem to find what i'm looking for.
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>
is it possible to concatenate string values of a nodeset together? (in
xsl 1.0)
something like:
<xsl:test select="concat(*[starts-with(name(),'publication_')]) !='' ">
again, this may be simple. sorry. I wish i had more time to research
it on my own.
Thanks for any help,
jonathan
On Aug 26, 2004, at 4:08 PM, cking wrote:
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
RSS 2.0 |
|
Atom 0.3 |
|
|