Subject: RE: [xsl] parameter use in XPath From: "Michael Kay" <mhk@xxxxxxxxx> Date: Thu, 23 Oct 2003 00:07:24 +0100 |
In XSLT 1.0, patterns must not contain variable references. In XSLT 2.0, you can write <xsl:template match="*[name()=$keyword]"> which I suspect is what you meant. Michael Kay > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Saverio Perugini > Sent: 22 October 2003 23:44 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] parameter use in XPath > > > Hello, > > Is it possible to use the parameter "keyword" (line 1) in > XPath expressions (lines 5, 13, and 27) in the following > stylesheet without the use of specific processor extensions? > > I know one may not use variables set by the stylesheet in > XPath expressions, but $keyword is passed from the command > line and thus not computed or set by the stylesheet. > > Many thanks in advance, > Saverio > > -- > > 1:<xsl:param name="keyword"/> > > 2:<xsl:template match="{$keyword}"> > 3: <xsl:apply-templates/> > 4:</xsl:template> > > <!-- matches all nodes which have a descendant-or-self, > which is an ancestor-or-self::d and a leaf, > and does nothing with them --> > 5:<xsl:template match="node()[not > (descendant-or-self::node()[ancestor-or-self::{$keyword} and > count (child::node()) = 0])]"> > > 6: <xsl:variable name="original-node" select="."/> > 7: <xsl:variable name="original-node-name" select="name()"/> > 8: <xsl:variable name="original-node-id" select="@id"/> > > <!-- match a node who has a descendant with a refid > attribute, e.g., e --> > 9: <xsl:if test="descendant::node()[@refid]"> > 10: <xsl:for-each select="descendant::node()[@refid]"> > 11: <xsl:variable name="target-id" select="@refid"/> > 12: <xsl:variable name="target-node" > select="//node()[@id=$target-id]"/> > 13: <xsl:if > test="$target-node[descendant-or-self::node()[ancestor-or-self > ::{$keyword} and count (child::node()) = 0]]"> > > 14: <xsl:element name="{$original-node-name}"> > 15: <xsl:attribute name="id"> > 16: <xsl:value-of select="$original-node-id"/> > 17: </xsl:attribute> > 18: <xsl:apply-templates select="$original-node/*"/> > 19: </xsl:element> > 20: </xsl:if> > 21: </xsl:for-each> > 22: </xsl:if> > 23:</xsl:template> > > <!-- matches all crosslinks and --> > 24:<xsl:template match="node()[@refid]" priority="0.7"> > 25: <xsl:variable name="target-id" select="@refid"/> > 26: <xsl:variable name="target-node" > select="//node()[@id=$target-id]"/> > > <!-- only copies those which have a descendant-or-self, > which has a reference to a node, > which is an ancestor-or-self::d and a leaf --> > 27: <xsl:if > test="$target-node[descendant-or-self::node()[ancestor-or-self > ::{$keyword} and count (child::node()) = 0]]"> > 28: <xsl:copy> > 29: <xsl:attribute name="refid"> > 30: <xsl:value-of select="$target-id"/> > 31: </xsl:attribute> > 32: </xsl:copy> > 33: </xsl:if> > 34:</xsl:template> > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] parameter use in XPath, Saverio Perugini | Thread | RE: [xsl] parameter use in XPath, Saverio Perugini |
[xsl] parameter use in XPath, Saverio Perugini | Date | Re: [xsl] parameter use in XPath, M. David Peterson |
Month |