On Mon, Jul 21 2008 13:24:45 +0100, christoph.naber@xxxxxxxxxxx wrote:
...
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <xs:attribute name="id" type="xs:ID" />
...
> The XSLT I came up with so far:
>
> <xsl:template match="xs:element[@ref]" >
> <xsl:apply-templates select="/xs:schema/xs:element[@name =
> current()/@ref]" />
> </xsl:template>
>
> <xsl:template match="/xs:schema/xs:element[@name]" >
> <xsl:element name="{@name}">
> <xsl:apply-templates />
> </xsl:element>
> </xsl:template>
>
> <xsl:template match="xs:complexType" >
> <xsl:apply-templates select="xs:attribute" />
> <xsl:apply-templates select="*[not(self::xs:attribute)]" />
> </xsl:template>
>
> <xsl:template match="xs:attribute[@ref]" >
> <xsl:apply-templates select="/xs:schema/xs:attribute[@name =
> current()/@ref]" />
> </xsl:template>
>
> <xsl:template match="/xs:schema/xs:attribute[@name]" >
> <xsl:attribute name="{@name}">
> <xsl:value-of select="@type" />
> </xsl:attribute>
> </xsl:template>
>
> Saxon sais: "Cannot write an attribute node when no element start tag is
> open"
You know what you want to happen, but the XSLT processor is rather more
literal minded and is processing the xs:attribute element before it gets
to any of your other elements because the xs:attribute comes before the
other elements.
You should add a template for xs:schema that applies templates to just
the first xs:element, if that's what you want as the document element of
your created sample XML file.
(And watch out for whitespace being created between the xsl:element and
the xsl:attribute as Florent noted. <xsl:strip-space elements="*"/>
will take care of that.)
Regards,
Tony Graham Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx
Director W3C XSL FO SG Invited Expert
Menteith Consulting Ltd
XML, XSL and XSLT consulting, programming and training
Registered Office: 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland
Registered in Ireland - No. 428599 http://www.menteithconsulting.com
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
xmlroff XSL Formatter http://xmlroff.org
xslide Emacs mode http://www.menteith.com/wiki/xslide
Unicode: A Primer urn:isbn:0-7645-4625-2
|