I think possibly the wildcard double slash is confusing it...the double slash tells it to find scopecontent anywhere in the document; even when you put it in the middle of a string as you have it here, it's still an anywhere-in-the-document match (see "Navigating nodes" at http://builder.com.com/5100-6371-1044797-2.html ). If you take out the double slash, it works fine. Given that a scopecontent can only appear in a c0# or in another scopecontent, you may not need that double slash. Michele -=--=--=--=--=--=--=--=--=--=--=--=--=--=- Michele R. Combs [log in to unmask] Manuscripts Processor Special Collections Research Center Syracuse University Library 222 Waverly Avenue Syracuse, NY 13244 (315) 443-2697 -=--=--=--=--=--=--=--=--=--=--=--=--=--=- >>> [log in to unmask] 2/6/2007 1:01 PM >>> I keep getting an ambiguous rule match error here and I am not understanding how these two statements are not opposites: <xsl:template match='* [@level="series" or @level="subseries"]//scopecontent'> <p> <xsl:apply-templates/> </p> </xsl:template> <xsl:template match='* [not (@level="series" or @level="subseries")]//scopecontent'> <font size="-1" color="gray"> <xsl:apply-templates/> </font> </xsl:template> Thank you, Lynn