|
Subject: [xsl] parameter use in XPath From: Saverio Perugini <sperugin@xxxxxxxxxxxxxxxx> Date: Wed, 22 Oct 2003 18:43:45 -0400 (EDT) |
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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] following crosslinks, Saverio Perugini | Thread | RE: [xsl] parameter use in XPath, Michael Kay |
| [xsl] All relavent nodes not printe, jayanti | Date | RE: [xsl] parameter use in XPath, Michael Kay |
| Month |