Hi António,
See my intermissions,
Cheers,
Abel Braaksma
http://www.nuntia.nl
António Mota wrote:
Are you sure of that? Are you sayng that the target, not the prefix,
is cheked by the processor?
But nevertheless i lied about my actual problem, (gee, i'm watching
too much "House") cause i was afraid that the moderator will come by
saying this is not a XSL question... But i'll risk it anyway...
My problem is that i'm using Sarissa to get some Schema nodes using
XPath, like this
var nodes = xmlSchema.selectNodes("//xs:element");
This should be right, yes.
after declaring
Sarissa.setXpathNamespaces(xmlSchema,
'xmlns:xs="http://www.w3.org/2001/XMLSchema"');
This should be right too. But I'm afraid it will work with TransformIIX
(Gecko based browsers use it) and not with MSXML. I had about the same
problem a while, but I wasn't using Sarissa (but I am planning on using it).
It seems that this is about the same situation you've pointed in your
answer, but that is not working, afaict it only works if the Schema
has
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
but not if it's
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
It should work for both with any "normal" processor. But since you are
using Sarissa, I expect you to use the XSLT as a client-side
transformation in JavaScript. This changes the original question a bit,
because there are a lot of incompatibilities between client side XSLT
processors. Here's a copy of my function that does what you want. Put in
a DOM element and a tagname. The tagname can be of the form "xs:element"
or otherwise. It will replace the prefix for Gecko based browsers. There
are other ways to do this, but this is a working version (and your post
reminds me of adding some error handling in the function below). .
getElementsByTagName = function(dom, tagname) {
if(typeof dom.selectNodes != 'undefined') {
return dom.selectNodes("//" + tagname);
} else {
tagname = tagname.replace(/[^:]+:(.*)/, "$1");
return dom.getElementsByTagName(tagname);
}
}
Please note that, if your DOM object is obtained using AJAX technology
outside the domain, you may need to request UniversalBrowserRead
privileges for Gecko. In that case add the following to the "else" part
(for IE, you must add the site to the trusted domains):
try{typeof netscape!='undefined' &&
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {alert("Not allowed by user!" + e.message); return }
Afaik, this should do the trick. Hmm, thinking. You should try this with
a DOM object that is not expanded by Sarissa. Try it without Sarissa
first.Then add this code in a way to Sarissa, so that it works for the
Sarissa method "selectNodes".
Anyhow i'm going to try this in a XSLT "per se", not in Sarissa, to
see if it works (the moderator...) and if it works i'll check with the
guys at Sarissa (if Manos don´t answer to this post first).
Thanks for your answer, it didn't solve my problem but it pointed me
to right direction, i think...
Good luck with it, hth,
Abel Braaksma
http://www.nuntia.nl
--~------------------------------------------------------------------
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>
--~--