> and some it totally fails to match; this may be a difference in Ah, found it: this bit of xslt: <xsl:template match="entry"> <xsl:if test="@state[.!='obsolete']"> given this XML structure: <category> <entry state="obsolete"> and in the DTD: <!ATTLIST entry state (current|obsolete) "current"> with or without the state tag, the test fails and the enclosed block is suppressed. I wonder which bit isn't working...