Subject: RE: [xsl] Union of StepPattern From: "Michael Kay" <mhkay@xxxxxxxxxxxx> Date: Fri, 16 Feb 2001 00:16:20 -0000 |
> I have a situation where I need to remove the DIVs from within an LI > element. We have decided that when we encounter a DIV within > an LI we are > going to replace it with a training BR if the next valid > sibling is another > DIV. Otherwise we'll do nothing. Can I do the following: > > <xsl:template match="DIV[parent::LI]"> That's fine, though most people write match="LI/DIV" which means the same. > <xsl:varible name="following-valid" > select="following-sibling::DIV|following-sibling::P|following- > sibling::OL|fo > llowing-sibling::UL" /> > <xsl:apply-templates select="*|comment()|pi()|text()"/> > <xsl:if test="$following-valid[1] = > following-sibling::DIV[1]"> > <br /> > </xsl:if> > </xsl:template> > > > Whether this works depends on whether the select in the > variable returns > > everything in document order Technically the value of the variable is a unordered node-set, and the filter expression $following-valid[1] selects the node in this node-set that comes first in document order. So in effect, yes, you're OK. But the "=" test is wrong: it compares the string-values of the nodes, not their identity. To compare identity, use generate-id(X)=generate-id(Y), or count(X|Y)=1. Except that in this case, I think you can simply say <xsl:if test="$following-valid[1][self::DIV]">. Mike Kay > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Union of StepPattern, Adam Van Den Hoven | Thread | RE: [xsl] Union of StepPattern, Adam Van Den Hoven |
Re: [xsl] "expected markup declarat, Peter Flynn | Date | Re: [xsl] "expected markup declarat, Dave Gomboc |
Month |