[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Use of xsl:apply-templates exception with an eleme

Subject: Re: Use of xsl:apply-templates exception with an element
From: ac <ac@xxxxxxxxxxxxx>
Date: Fri, 25 Sep 2009 23:08:38 -0400
Re:  Use of xsl:apply-templates exception with an eleme
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. ________________________________________________________________________

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.