xsl-list
[Top] [All Lists]

Re: [xsl] Use of xsl:apply-templates exception with an element

2009-09-25 23:09:07
Hi David, Wendell, Michael, Ken, and all,

I am surely missing something here as, assuming that $new is a different node from the current node, that their attributes can vary and be in different namespaces, and that I need to copy only the attributes of the current node that are not also in $new, in a namespace safe way, with XSLT 2, I do not see how I can do like
<xsl:copy-of select="@*[not(name() = ($new/@*/name()))]"/>
with attribute(), or even in any other way, namespace safe or not.

local-name() can be useful but, as we all know, two nodes with the same local-name and different namespaces, are two different things.

The good news are that known literal node names can be handled in a namespace safe way in XSLT2 and, for now, for the rest, including a number of usecases where namespace safe processing does not seem quite possible, as when selecting nodes based on variables (nodes or name-strings), including with saxon:evaluate parameters, and with function results (calculated nodes or name-strings), name() is working fine, as long as the parser does not mess things up (as in "...it can use any prefix at all, as determined by the parser") and that the prefixes and uris are maintained properly.

This is also why I started dreaming that maybe one day, we could use something like the curly brackets (or a function like QName()) to try to get around ...

I am ok with this now and any improvement help is very much appreciated.

Thank you.
ac



For example, how to make
<xsl:copy-of select="@*[not(name() = ($new/@*/name()))]"/>
namespace safe in XSLT 2 ?  as

as has been stated earlier, you can use the attribute() name test.
eg
@* except attribute(xlink:href)

<xsl:copy-of select="@* except ($new/@*)"/>
does not work, even if there are attributes that match in name (+ namespace) and value?

@* except ($new/@*) is a legal expression, but is the same as @* unless
the current node is $new in which case it is the same as ().
except works on node identity not node name or value.



David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. ________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--