Subject: Re: [xsl] Exception tests in XPath From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Sat, 17 Feb 2001 10:23:22 +0000 |
Hi James, > <xsl:copy-of select="@*" /> > will copy all the attributes of a tag. > > <xsl:copy-of select="@type|@language" /> > will copy only the 'type' and 'language' attributes. > > How do I get a statement that will select ALL the attributes except a > specific one? If the attribute that you want to weed out is unprefixed (i.e. it's in the null namespace) then you can use: <xsl:copy-of select="@*[local-name() != 'type']" /> to copy all but the 'type' attribute. It selects all attributes (@*) and then filters out all those whose local name equals 'type'. If the attribute has a prefix (i.e. it's in a namespace) then you should use: <xsl:copy-of select="@*[count(.|../@xml:lang) != count(../@xml:lang)]" /> to copy all but the 'xml:lang' attribute. Alternatively, you can use: <xsl:copy-of select="@*[generate-id() != generate-id(../@xml:lang)]" /> which does exactly the same thing. It selects all attributes and then filters out those that *are* the xml:lang attribute. Or, if you want to, you can use: <xsl:copy-of select="@*[not(local-name() = 'lang' and namespace-uri() = 'http://www.w3.org/XML/1998/namespace')]" /> This selects all attributes and filters out those whose local name is lang in the XML namespace. I hope that helps, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] -1072896760, An invalid chara, Gavin Landon | Thread | RE: [xsl] Exception tests in XPath, Michael Kay |
[xsl] Re: Reliance on import preced, Dimitre Novatchev | Date | RE: [xsl] "expected markup declarat, Michael Kay |
Month |