Subject: Re: [xsl] 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 |
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: [xsl] 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 > > > [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] how to match true and fal, Michael Kay | Thread | RE: [xsl] how to match true and fal, Michael Kay |
Re: [xsl] How can I redirect XSL ou, Will McCutchen | Date | [xsl] Conditioned merge of XML from, Karl Koch |
Month |