Subject: RE: [xsl] how to reflect on the namexpaces URIs and prefixes in XSLT? From: "Aaron Skonnard" <aarons@xxxxxxxxxxx> Date: Mon, 11 Feb 2002 10:21:29 -0700 |
You need to use the XPath namespace axis, which contains a namespace node for each in-scope namespace binding. For example, the following expression finds all element declarations that are of types from the 'urn::hl7.org/v3dt' namespace: //*[local-name()='element'][namespace::*[.='urn::hl7.org/v3dt'][local-na me()=substring-before(../@type,':')]] Notice, that this works regardless of the prefix used in the type attribute, even with default namespaces. .................................................. Aaron Skonnard, DevelopMentor (aarons@xxxxxxxxxxx) http://www.develop.com http://www.develop.com/xml ............. http://skonnard.com ................ > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl- > list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Gunther Schadow > Sent: Monday, February 11, 2002 9:44 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] how to reflect on the namexpaces URIs and prefixes in XSLT? > > Hi, > > I am working on a XSLT dealing with XML Schemas. I generate > certain Schema thingies, like complexType and simpleType > and other elements. Within those, I need to deal properly > with the XML Schema "targetNamespace". For instance, if > the ancestor schema node of the input document has this > > <xsd:schema > xmlns:xsd='http://www.w3.org/2001/XMLSchema' > xmlns:v3dt='urn::hl7.org/v3dt' > targetNamespace='urn::hl7.org/v3dt'> > > now if I generate a xsd:complexType definition for a type > called 'foo' I will generate: > > <xsd:complexType name='foo'/> > > if I refer to such types defined in the schema, I have to > do something like this: > > <xsd:element name='thing' type='v3dt:foo' /> > > Now the questions: > > - how do I query for the active namespace prefix declarations > in the input document? > > Apparently (in saxon at least) the document that I can see > with <copy-of select='$root'/> where <xsl:variable name='root' > select='/'/> doesn't contain any xmlns:... attributes, at least > not at the point of my XSLT execution where I need them. > > - even if I find those xmlns:... attributes (which I do, sort of, > in the root template of the XSLT), how do I query those? I can see > the xslns attributes show up when I do > > <xsl:copy-of select='$root//xsd:schema'/> > > but as soon as I'm trying to grab them specifically, e.g., > using: > > <xsl:for-each select='$root//xsd:schema/@*'/> > > I'm not seeing any of the xmlns ones. They only show up if > anything is actually using the namespace in the output, but > how do I know what namespace prefix the xsd:schema/@targetNamespace > is bound to? > > It sounds like XSLT is making namespace prefix declarations a > special thing (which is O.K.) but it doesn't provide any special > mechanisms by which one could dynamically work with the namespaces > used by an input document. Are there any workarounds? > > thanks, > -Gunther > > -- > Gunther Schadow, M.D., Ph.D. gschadow@xxxxxxxxxxxxxxx > Medical Information Scientist Regenstrief Institute for Health Care > Adjunct Assistant Professor Indiana University School of Medicine > tel:1(317)630-7960 http://aurora.regenstrief.org > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] how to reflect on the namexpa, Gunther Schadow | Thread | [xsl] How to assign a value and reu, Khalid |
Re: [xsl] regd: XML schema, Wendell Piez | Date | [xsl] How to assign a value and reu, Khalid |
Month |