Subject: Re: [none] (Wendy's question) From: korolkm@xxxxxxxxxxxxxxxxxxxx Date: Fri, 26 Feb 1999 19:03:24 +0300 |
Wendy wrote: > Within an XSL Stylesheet how can we dynamically change the select attribute of > "for-each" xsl element. > Eg > <xsl:for-each select='Some Default'> > ... > </xsl:for-each> > Now I want to dynamically transform the above xsl to the following xsl > <xsl:for-each select='ElementName[@value="Contents of a Variable"]'> > ... > </xsl:for-each> I asked this question some days ago to Scott Boag (developer of LotusXSL processor) and his answer was NO, THIS IS NOT POSSIBLE with current XSL draft. In general this effect could be acheived the following way: 1) you put an Attribute Value Template (AVT) that references some constant into attribute: <xsl:for-each select="ElementName[@value='{constant(some-constant)}']"> 2) before running your XSL processor you programmatically set value to this constant processor.setConstant ("some-constant", "Contents of a variable"); 3) run your porcessor. During the run value of the constant will be substituted and effect in actual processing of <xsl:for-each select="ElementName[@value='Contents of a Variable']"> I do not know about other processors, but LotusXSL has this nice "setConstant" function. This sounds nice, but as Scott explaned, current draft allows AVT to be used everywhere with exception of "select" and "match" patterns. So, this elegant approach is not possible and does not have any reasonable replacement currently. I myself miss this approach very much. I tried it with an old version of LotusXSL that wrongly allowed this forbidden behaviour and found it very comfortable. The alternatives are: 1) Preprocess text of your XSL document and perform text substitution for "Some Default" string. Then parse preprocessed stylesheet and apply it to XML file. 2) Do similar thing with DOM tree of your XSL stylesheet: find a node that needs to be substituted, substitute it with actual value of template and then apply this preprocessed DOM tree to an XML document. This is more preferrable than first approach if you need to apply your stylesheet template many times - you do not need to reparse it every time. But to my taste these two alternative approaches are not as elegant as the forbidden one :-( Michael XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re:, BILLY-ACE . BAKER | Thread | RE: [none] (Wendy's question), Mike Dierken |
RE: entities in XML/XSL, Westerberg, Rolf | Date | Re: entities in XML/XSL, Chris Maden |
Month |