|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Exception tests in XPath
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








