Subject: RE: [xsl] problem - generating XML schema via XSLT From: "Michael Kay" <mhk@xxxxxxxxx> Date: Fri, 3 Oct 2003 18:08:57 +0100 |
Namespace declarations in the source document are translated by the XML parser into namespace nodes, they are not treated by XSLT as attribute nodes. Therefore, a namespace declaration can never contain an attribute value template (because it isn't an attribute). You need to produce in the result tree a namespace node whose name (=prefix) is "" and whose string value (=namespace URI) is "test". (It's very confusing that you chose to use the name "prefix" to refer to the namespace URI! In XSLT 2.0 you can do this with <xsl:namespace name=""><xsl:value-of select="@prefix"/></xsl:namespace> In 1.0 there is no direct way of doing this. The nearest equivalent is: <xsl:variable name="dummy"> <xsl:element name="e" namespace="{@prefix}"/> </xsl:variable> <xsl:copy select="xx:node-set($dummy)/*/namespace::*[.=@prefix]"/> This creates a dummy element in the required namespace, and then copies the required namespace node to the result tree. Michael Kay > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Christian Sell > Sent: 03 October 2003 15:28 > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] problem - generating XML schema via XSLT > > > Hello all, > > I am trying to generate an XML schema file from an XML input > document, > and encounter a somewhat esoteric problem. I am using Xalan > 2.5.1. The > input document is in essence a simplified version of the > schema. Heres > an example: > > the input: > > <library prefix="test"> > <element name="dosome"/> > </library> > > should become: > > <xs:schema xmlns:xs="..." xmlns="test" targetNamespace="test"> > <xs:element name=dosome type="ElementType"/> > > <... type declaration ..> > </xs:schema> > > So far all goes well, with the exception of the "xmlns" > attribute in the > output "xs:schema" element, which should hold the value of > the "prefix" > attribute from the "library" input element. I am trying to > achieve this > with the following literal result element inside the template that > matches the library element: > > <xs:schema xmlns="{@prefix}" targetNamespace="{@prefix}"> > ... > </xs:schema> > > (XML schema requires both the xmlns and the targetNamespace > attributes > to hold the same value). However, the result I get is: > > <xs:schema xmlns="{@prefix}" targetNamespace="test"> > > Note that the value expression was resolved for the targetNamespace > attribute, but not for the xmlns attribute. > > Is this an error with Xalan, or am I missing something? Does > anyone have > a suggestion how to achieve the desired result? > > TIA, > Christian > > > > 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] problem - generating XML sche, Christian Sell | Thread | Re: [xsl] problem - generating XML , Christian Sell |
RE: [xsl] In-browser XML editor, Webber, Andrew | Date | RE: [xsl] In-browser XML editor, Robert Koberg |
Month |