|
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 |