Subject: Re: [xsl] ancestor From: "M. David Peterson" <m.david@xxxxxxxxxx> Date: Mon, 18 Oct 2004 10:23:47 -0700 |
<xsl:if test="$inlineequation/@id=./@id"><xsl:value-of select="position()" /></xsl:if>
<xsl:if test=". = @id"> <xsl:value-of select="position()" /> </xsl:if>
<xsl:if test="$inlineequation/@id = current()/@id"> <xsl:value-of select="position()" /> </xsl:if>
<xsl:for-each select="//inlineequation[not(ancestor::table) and not(ancestor::figure)]"> <xsl:number/> </xsl:for-each>
<xsl:template match="inlineequation"> <xsl:number/> <xsl:value-of select="put desired output element here"/> </xsl:template>
Thanks, everyone!
I picked up "inlineequation[not(ancestor::table)]" because it looks neat and
it works!!!
Testing for ancestor does not seem to slow down my application. The // part
probaly is the critical "PATH" as Jeni said. My "inlineequation" is all over
the document nesting with different depths and I'll use "//" for now.
The pain part is this (though my XSLT is not too slow as measured on my
computer): I'm trying to output the position of each selected inlineequation (using
inlineequation[not(ancestor::table)]). The numbering is sequential in the
selected inlineequations. What I'm doing is when each inlineequation is
matched, I call a template that will get the position in the selected list.
"inlineequation[not(ancestor::table)]" is evaluated over and over again.
template: <xsl:template name="inlineequation_position"> <xsl:param name="inlineequation"></xsl:param> <xsl:for-each select="//inlineequation[not(ancestor::table) and not(ancestor::figure)]"> <xsl:if test="$inlineequation/@id=./@id"><xsl:value-of select="position()" /></xsl:if> </xsl:for-each> </xsl:template>
simplified calling template:
<xsl:template match="inlineequation">
<img alt="">
<xsl:attribute name="src">ImgServer?<xsl:call-template
name="inlineequation_position"><xsl:with-param
name="inlineequation" select="."/></xsl:call-template>h.gif</xsl:attribute>
</img> </xsl:template>
Is there a way to cache the result of "//inlineequation[not(ancestor::table)]" in a variable and pass it to the template? There seems to be two problems with this approach: a global variable may not have access to the document and can we pass two parameters to a template?
Thanks.
Peiyun Jiang
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] ancestor, Jiang, Peiyun | Thread | Re: [xsl] ancestor, David Carlisle |
RE: [xsl] ancestor, Michael Kay | Date | [xsl] Identity Transform Grouping Q, ethan.kalfus |
Month |