RE: [xsl] Help in extracting namespace prefix of targetNamespace [SEC=UNCLASSIFIED]

Subject: RE: [xsl] Help in extracting namespace prefix of targetNamespace [SEC=UNCLASSIFIED]
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 2 Jun 2008 09:02:59 +0100
> I have this schema header below:
> 
> <xs:schema
> xmlns:xs="http://www.w3.org/2001/XMLSchema";
> xmlns:bbbcore="http://www.abcde.com/Namespace/bbb/Core/V1.0";
> xmlns:aaacore="http://www.abcde.com/Namespace/aaa/Core/V1.0";
> xmlns:aaa="http://www.abcde.com/Namespace/aaa/Service/V1.0";
> targetNamespace="http://www.abcde.com/Namespace/aaa/Service/V1.0";
> elementFormDefault="qualified"
> version="1.0"
> xml:lang="en">
> 
> I would like to extract the namespace prefix "aaa" from xmlns:aaa="
> http://www.abcde.com/Namespace/aaa/Service/V1.0"; or in short 
> I would like to be able to extract the namespace prefix of 
> the targetNamespace.  Thanks in advance!
> 

With XSLT 1.0 or a 2.0 system that supports the sadly-deprecated namespace
axis, and with the xs:schema element as the context node, you can use

name(namespace::*[. = current()/@targetNamespace])

Without the namespace axis it becomes

in-scope-prefixes(.)[namespace-uri-for-prefix(.) =
current()/@targetNamespace]

Michael Kay
http://www.saxonica.com/

Current Thread