[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Can't Obtain Results
Fascinating. Jeni and I both tried to guess your requirements from your example output, and we guessed quite different. Just shows the dangers. Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of > Jeni Tennison > Sent: 03 May 2002 09:20 > To: Lindy Quick > Cc: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: Can't Obtain Results > > > Hi Lindy, > > > This is a repost to my previous messages. I have had to replace the > > greater than sign with the # sign so it can be sent through this > > mail client. > > You could try using < in your mail client -- it sounds as though > it's expecting you to use HTML, in which case < should be passed > through as a less-than sign. > > > I am passing in a parameter called outlet > > > > If the outlet parameter is "cb" - after transformation I want it to > > look like this: > > > > #root> > > #keyset> > > #f1>some text#/f1> > > #f2>SOMETEXT#/f2> > > #f3>SOMETEXT#/f3> > > #f4> SOMETEXT#/f4> > > #f5> SOMETEXT#/f5> > > #f6>some text#/f6> > > #/keyset> > > #/root> > > > > If the outlet parameter is "default" - after transformation I want > > it to look like this: > > > > #root > > > #keyset > > > #f1>some text#/f1> > > #f2>some text#/f2> > > #f3>some text#/f3> > > #f6>some text#/f6> > > #/keyset> > > #/root> > > It appears to me that the rule is that you want f1 to f6 elements to > appear, containing the value from the keyset with the correct outlet > if there is one, the value from the keyset without an outlet attribute > if there isn't one, or not appearing at all if neither keyset contains > a value. > > In which case, you should have a template that will do the right thing > for a given element name, something like: > > <xsl:param name="outlet" select="'cb'" /> > > <xsl:template name="showElement"> > <xsl:param name="elementName" /> > <xsl:variable name="value" select="/root/keyset[@outlet = $outlet] > /*[name() = $elementName]" /> > <xsl:choose> > <xsl:when test="$value"> > <xsl:copy-of select="$value" /> > </xsl:when> > <xsl:otherwise> > <xsl:variable name="defaultValue" > select="/root/keyset[not(@outlet)]/*[name() = > $elementName]" /> > <xsl:if test="$defaultValue"> > <xsl:copy-of select="$defaultValue" /> > </xsl:if> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > Then you need to call this template to create the elements f1 to f6: > > <xsl:template match="/"> > <xsl:call-template name="showElement"> > <xsl:with-param name="elementName" select="'f1'" /> > </xsl:call-template> > <xsl:call-template name="showElement"> > <xsl:with-param name="elementName" select="'f2'" /> > </xsl:call-template> > ... > <xsl:call-template name="showElement"> > <xsl:with-param name="elementName" select="'f6'" /> > </xsl:call-template> > </xsl:template> > > If you don't want to hard-code the element names like this, then you > need to come up with an algorithm that you can use to get hold of the > names of the elements in the order that you want them. This is quite > difficult with your XML design; it really requires a grouping > solution, as far as I can see. Let us know if you need to do that, > particularly if your elements aren't really called 'f1' to 'f6'... > > Cheers, > > Jeni > > --- > Jeni Tennison > http://www.jenitennison.com/ > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|