[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Creating namespace declarations solely for QName
Are you using XSLT 2.0? The xsl:namespace instruction was invented to make this kind of job easier. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Jeff Greif [mailto:jeff.greif@xxxxxxxxx] > Sent: 16 October 2008 22:45 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Creating namespace declarations solely for > QName attribute values > > We are trying to replace namespaces consistently in the > namespace declarations of a document, thus preserving the > prefixes so the QName attribute values remain valid. > > That is, given a source document like this: > > <schema targetNamespace="urn:target" xmlns:t="urn:target" > xmlns:i="urn:imported"> > <import namespace="urn:imported"/> > <element name="something" type="i:ImportedType"/> </schema> > > The key feature of this document is that no element or > attribute in the document is in either of the explicitly > declared namespaces. > These namespaces are only referenced explicitly in attribute > values and implicitly in the QName-valued attribute 'type'. > > The idea is to change urn:target to urn:target1 and urn:imported to > urn:imported1 (based on a map of these conversions read into > the XSLT using the document() function). None of the > namespaces involved in this conversion can be declared in the > stylesheet, but are determined from the map. > > We know how to change the value of any attribute, the > namespace of any element or attribute using this map, but we > don't see yet how to change the association of a prefix with > a namespace, so that the prefix 'i' will be associated with > the namespace "urn:imported1" in the result document, > effectively changing the namespace implied by the value of > the 'type' attribute in the result document, *when there is > no element or attribute in the source document that has the > namespace corresponding to that prefix*. > > We are trying to avoid having to know which are attributes > with QName values and having to transform their values to > somehow conform to prefixes used in the result doc. > > Is there a way to do this in XSLT, given that matching on > namespace nodes is not possible, and we have been unable to > find a way to create namespace nodes in a template except by > naming an element or attribute using the prefix in question? > Would a solution involve creating an attribute with the given > prefix and namespace, to change the namespace nodes of the > containing element, while avoiding having the attribute > appearing in the result document? > > Jeff
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|