Subject: Re: Re: [xsl] How to do an 'existence' test in XSL? From: ben@xxxxxxxxxxxxx Date: Thu, 23 Dec 2004 11:38:19 +0000 |
George certainly has a point... computer languages are modelling languages. If they are not able to elegantly model a common phenomenon (which this is) then they aren't doing their job too well, doubtless why XSL 2.0 has this new property. However, the scenario I outlined was overly simplistic. +It should not be assumed that the gui tags are are siblings. They may be scattered throughout the document at various nestings+ One of my additional problems is that I am using PHP5 and thus James Clark's expat parser, which doesn't support keys? In this case I wonder which of the various proposed techniques will work! Many thanks for all the input, the discussion certainly highlights many potentially useful approaches for an XSL beginner such as myself! Ben P.S. If Dimtre fancies explaining in a little more detail what on earth is going on in his script below that would be a wonderful thing! You wrote: > In case you know all possible types in advance, a simple (but not > too-efficient) way of picking up all "existing" gui types is the > following: > > <xsl:stylesheet version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > > > > <xsl:output method="text"/> > > <xsl:param name="pAllStyles" as="xs:string+" > select="'alertBox', 'combo', 'help', 'tooltip'"/> > > <xsl:variable name="vDoc" select="/"/> > > <xsl:template match="/"> > <xsl:value-of separator="
" select= > "$pAllStyles[. = $vDoc/styles/gui/@type ]" /> > </xsl:template> > </xsl:stylesheet> > > When this transformation is applied on your source xml (provided with > a single element parent): > > <styles> > <gui type="alertBox"/> > <gui type="tooltip"/> > <gui type="help"/> > <gui type="tooltip"/> > <gui type="alertBox"/> > <gui type="tooltip"/> > <gui type="help"/> > </styles> > > the wanted result is produced: > > alertBox > help > tooltip > > > Cheers, > Dimitre. > > > > On Wed, 22 Dec 2004 14:33:06 +0000, ben@xxxxxxxxxxxxx <ben@xxxxxxxxxxxxx> wrote: > > I'm having great difficulty understanding how/if XSL provides the tool to satisfy the following simple requirement. > > > > Lets say I have some simple xml like : > > > > <gui type="alertBox">...</gui> > > <gui type="tooltip">...</gui> > > <gui type="help">...</gui> > > <gui type="tooltip">...</gui> > > <gui type="alertBox">...</gui> > > <gui type="tooltip">...</gui> > > <gui type="help">...</gui> > > > > To simplify things... imagine transforming this document in such a way that we have something like : > > > > <alertBox/> > > <tooltip/> > > <help/> > > > > i.e. I would like the XSL to result in one output per gui type. > > > > So there is the problem... how on earth do I process the xml such that it results in an output per +type+ rather than for each instance (is that explained well enough?)... i.e. it's easy to match on the attributes but each match produces output so I would get : > > > > <alertBox/><alertBox/> > > <tooltip/><tooltip/><tooltip/> > > <help/><help/> > > > > Can anyone offer advice on the way in which I ought to approach this problem? > > > > Kindest regards, > > > > Ben
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to do an 'existence' , Wendell Piez | Thread | Re: Re: [xsl] How to do an 'existen, Dimtre Novatchev |
Re: [xsl] Again -- non MS transform, Emmanouil Batsis | Date | Re: Re: [xsl] How to do an 'existen, ben |
Month |