Altova Mailing List Archives>Archive Index >xsl-list Archive Home >Recent entries >Thread Prev - [xsl] How to use the same expression in a match and a select test >Thread Next - Re: [xsl] How to use the same expression in a match and a select test Re: [xsl] How to use the same expression in a match and a select testTo: Date: 12/3/2007 1:35:00 PM I would say, this is not possible with standard XSLT. Probably some extension exists for this; but I don't know about such extensions ... I think, in your case, it's only a lexical redundancy. It should not affect the performance of your stylesheet. On Dec 3, 2007 6:51 PM, Sascha Mantscheff <922492@xxxxxx> wrote: > I have a stylesheet with a template and a for-each statement. > Both select their elements by an expression which differs only in one > part from each other. > > The template is: > > <xsl:template match="*[not(self::blockquote|self::center|self::BODY| > self::body|self::div|self::dl|self::dt|self::HEAD|self::head|self::HTML| > self::img|self::h1|self::h2|self::h3|self::h4|self::h5|self::h6| > self::hr|self::html|self::idx:*|self::form| > self::mbp:*[not(self::mbp:nu)]|self::mmc:*|self::ol|self::p|self::table| > self::td|self::th|self::tr| > self::ul)][preceding-sibling::node()[1][name()=name(current()) and > string-join(@*,'xx') = string-join(current()/@*,'xx')]]" > /> > > The for-each select is: > > <xsl:for-each select="following-sibling::node()[1][not(self::blockquote| > self::center|self::BODY|self::body|self::div|self::dl|self::dt| > self::HEAD|self::head|self::HTML|self::img|self::h1|self::h2|self::h3| > self::h4|self::h5|self::h6|self::hr|self::html|self::idx:*|self::form| > self::mbp:*[not(self::mbp:nu)]|self::mmc:*|self::ol|self::p|self::table| > self::td|self::th|self::tr|self::ul)] [name()=name(current()) and > string-join(@*,'xx') = string-join(current()/@*,'xx')]"> > > How can I reduce the redundancy and use the same expression in both > statements, like in this pseudo code: > > <xsl:template > match="*[$NO_BLOCK_ELEMENTS][preceding-sibling::node()[1][name()=name(current()) and $SAME_ATTRIBUTES]]" > /> > > <xsl:for-each select="following-sibling::node()[1][$NO_BLOCK_ELEMENTS] > [name()=name(current()) and $SAME_ATTRIBUTES]"> -- Regards, Mukul Gandhi | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
