[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: how to match true and false and display yes and no

Subject: Re: how to match true and false and display yes and no instead?
From: Christian Rasmussen <byggemandbob@xxxxxxxxx>
Date: Wed, 27 Jul 2005 22:29:27 +0200
christian rasmussen
Thank you very much to both of you, Michael Kay and JBryant!

Regarding the closing tag: I'm very much aware of the possibility of
using forward slash. I was using XMLSpy, and it automatically inserts
a closing tag, and I was in a hurry...

Regarding the point you make, JBryant, that it should be easier
putting <xsl:apply-templates/> in all template matches.

According to my limited knowledge of XSLT, this means "fire all
templates that matches subnodes from the context node... Now, it works
fine in many situations, but I think there are also situations where
you dont want ALL template matches to fire on all subnodes, but just
on some of them. Another point regarding this, is
the:<xsl:apply-templates select="../married"> Here I want to fire a
template on a sibling. Here <xsl:apply-templates/>  also doesn't work
because its a sibling and not a subnode....

Or have I totally misunderstood? then please help me out :-)

Michael Kay, you say this:

<xsl:template match="members/profile/married[.='false']">no</xsl:template>
<xsl:template match="members/profile/married[.='true']">yes</xsl:template>

is another way of doing it. Now there are two templates. I have used
<xsl:if> Is templates faster (better) than <xsl:if> ? Or are there
other arguments for using this instead, then I'll change my code.

Thanks a lot for very good inputs :-)

/Christian

On 7/27/05, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> Another way do this:
>
> <xsl:template match="members/profile/married">
> <xsl:if test=".='false'">no</xsl:if>
> <xsl:if test=".='true'">yes</xsl:if>
> </xsl:template>
>
> is this:
>
> <xsl:template match="members/profile/married[.='false']">no</xsl:template>
> <xsl:template match="members/profile/married[.='true']">yes</xsl:template>
>
> Also, the members/profile/ qualifier is probably redundant.
>
> Michael Kay
> http://www.saxonica.com/
>
>
> > -----Original Message-----
> > From: Christian Rasmussen [mailto:byggemandbob@xxxxxxxxx]
> > Sent: 27 July 2005 18:49
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: Re:  how to match true and false and display
> > yes and no instead?
> >
> > Of course you are right... I was too fast making a sample xml. The
> > real xml-file I'm working on is too complex to post here, so its
> > better with a sample.
> >
> > However, I've made a better sample and actually now it works: Here's
> > the solution:
> >
> > do you have any comments to this?
> > thank-you for respons anyway...
> >
> > XML-FILE:
> > =======
> > <?xml version="1.0" encoding="UTF-8"?>
> > <members>
> >       <profile>
> >               <name>Bill Clinton</name>
> >               <married>false</married>
> >               <kid>joe</kid>
> >       </profile>
> > </members>
> >
> >
> > XSL-FILE:
> > =======
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > xmlns:fo="http://www.w3.org/1999/XSL/Format">
> >
> > <xsl:template match="members">
> > members-template is matched!
> > <xsl:apply-templates select="profile/kid"></xsl:apply-templates>
> > </xsl:template>
> >
> > <xsl:template match="members/profile/married">
> > <xsl:if test=".='false'">no</xsl:if>
> > <xsl:if test=".='true'">yes</xsl:if>
> > </xsl:template>
> >
> > <xsl:template match="kid">
> > <xsl:apply-templates select="../married"></xsl:apply-templates>
> > kids-template is matched!
> > </xsl:template>
> >
> > </xsl:stylesheet>
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On 7/27/05, JBryant@xxxxxxxxx <JBryant@xxxxxxxxx> wrote:
> > > Well, if you actually tried to run these templates, your
> > XML parser should
> > > spit out error messages.
> > >
> > > You seem to be trying to use </xsl:apply-templates> to close
> > > <xsl:template>, which isn't XML.
> > >
> > > Assuming you mean
> > >
> > > <xsl:template match="members">
> > > xsl-fo goes here.....
> > > </xsl:template>
> > >
> > > then you want
> > >
> > > <xsl:template match="members">
> > > xsl-fo goes here.....
> > > <xsl:apply-templates/>
> > > </xsl:template>
> > >
> > > Otherwise, the processor gets to members and stops, never
> > processing the
> > > children of members.
> > >
> > > Jay Bryant
> > > Bryant Communication Services
> > > (presently consulting at Synergistic Solution Technologies)
> > >
> > >
> > >
> > >
> > > Christian Rasmussen <byggemandbob@xxxxxxxxx>
> > > 07/27/2005 11:57 AM
> > > Please respond to
> > > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > >
> > >
> > > To
> > > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > cc
> > >
> > > Subject
> > >  how to match true and false and display yes and no instead?
> > >
> > >
> > >
> > >
> > >
> > >
> > > Hi experts,
> > >
> > > It seems to be a pretty simple question, but I'm newbie and I cannot
> > > figure out how to do it :-(
> > > please help me!
> > >
> > > here is some sample xml showing my problem:
> > >
> > > <members>
> > >                  <profile>
> > >                                  <name>Bill Clinton</name>
> > >                                  <married>false</married>
> > >                                  <kid>joe</kid>
> > >                  </profile>
> > > </members>
> > >
> > >
> > > my xsl looks something like this:
> > >
> > > <xsl:template match="members">
> > > xsl-fo goes here.....
> > > </xsl:apply-templates>
> > >
> > > <xsl:template match="members/profile/married">
> > > <xsl:if test=".='false'">no, he is not married</xsl:if>
> > > <xsl:if test=".='true'">yes, he is married</xsl:if>
> > > </xsl:apply-templates>
> > >
> > > <xsl:template match="kid">
> > > xsl-fo goes here.....
> > > <xsl:apply-templates select="../married"></xsl:apply-templates>
> > >
> > > I simply want to display "yes" and "no" instead of "true"
> > and "false".
> > > So I have made a template match which specifically matches
> > the element
> > > which holds the true or false value. After matching this element, I
> > > test whether its true or false, and returns the text instead.
> > >
> > > nothing shows up :-(
> > >
> > > Thanx in advance for you help
> > > /Christian

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.