RE: [xsl] How to generate <schema> element

Subject: RE: [xsl] How to generate <schema> element
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 13 May 2005 16:23:45 +0100
Your code looks fine to me. Perhaps you should post a complete (simplified)
stylesheet and we can see if other processors give the same problem.

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

 

> -----Original Message-----
> From: Michael.Giroux@xxxxxxxx [mailto:Michael.Giroux@xxxxxxxx] 
> Sent: 13 May 2005 15:30
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] How to generate <schema> element 
> 
> 
> 
> 
> 
> I have a tool that parses a non-java program source and emits an XML
> document containing a description of the public data types.  
> The XML is
> then used with XSL to generate program documentation, Java 
> data mappers to
> the non-java program data types, etc.
> 
> I'm attempting to generate WSDL <types> and <message> 
> elements for use in
> web service descriptions.  My template is nearly complete but 
> I have one
> final problem.  I'm not able to get the schema generated with 
> the proper
> namespace.
> 
> XSL snippet follows:
> <?xml version="1.0"?>
> <xsl:stylesheet version = '1.0'
>   xmlns="http://schemas.xmlsoap.org/wsdl/";
>   xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
>   xmlns:tns="urn:bpel:jiap"
>   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>   xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/";
>   xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/";
>   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>   xmlns:xalan="http://xml.apache.org/xslt";
> >
> <xsl:output method="xml" indent="yes" xalan:indent-amount="2"/>
> 
> <xsl:template match="component">
>     <definitions targetNamespace="urn:bpel:jiap">
>       <xsl:element name="types">
>          <xsl:element name="schema" namespace="
> http://www.w3.org/2001/XMLSchema";>
>             <xsl:attribute name="targetNamespace">urn:bpel:jiap
> </xsl:attribute>
>             <xsl:apply-templates select="cobolrecord"/>
>          </xsl:element>  <!--  </schema> -->
>       </xsl:element> <!-- </types> -->
>       <!-- code removed -->
>     </definitions>
> </xsl:template>
> ...
> 
> 
> The generated code does not have the correct namespace for 
> the generated
> schema element and as a result, none of the types are found 
> when WSDL2JAVA
> processes the outer WSDL which includes these type declarations.
> 
> The namespace for the <schema> element is coming from the containing
> <definitions> element, and not from the namespace attribute of the
> <element> instruction.
> 
> Can someone tell me the correct way to define the xsl so that 
> I get the
> desired generation?
> 
> Thanks
> Michael Giroux
> 
> Example of generated code follows:
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions
>   xmlns="http://schemas.xmlsoap.org/wsdl/";
>   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>   xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/";
>   xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/";
>   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>   xmlns:tns="urn:bpel:jiap"
>   targetNamespace="urn:bpel:jiap"
> >
>   <types>
>     <schema xmlns="http://schemas.xmlsoap.org/wsdl/"; targetNamespace=
> "urn:bpel:jiap">

Current Thread