[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] reg XSD generation using XSL


Subject: Re: [xsl] reg XSD generation using XSL
From: Silent lights <silentlights@xxxxxxxxxxx>
Date: Mon, 6 Dec 2010 16:42:10 +0000 (GMT)

Hi Geert,
The platform where I am working is based on X* and I have very
limited options 
to use Java or any other language...except XSLT. 

I did look
at Trang, looks promising.. but that could an option if nothing else 
works
out.
thank you
Densil



----- Original Message ----
From: Geert Bormans
<geert@xxxxxxxxxxxxxxxxxxx>
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Sent: Mon, 6
December, 2010 17:01:22
Subject: Re: [xsl] reg XSD generation using XSL

why
would you want to do that with XSLT?

use trang for a first stab at it
http://www.thaiopensource.com/relaxng/trang.html
you can develop some XSLT
logic to twiddle the output of that to your 
convenience
be prepared to do
some manual stuff as well


At 16:57 6/12/2010, you wrote:
> Hi all, My
previous posts didnt get thru the list..as I was not yet on the 
>mailing
list.. hence I am posting it here. I am wondering if anyone had 
>attempted to
generate an schema from an input XML document. I am kind of stuck 
>up in this
and I am wondering if could get some help here. The Schemas has to be 
>ver
1.0 and generation code has to be written using XSL. I worked out a basic
>idea.. like 1) Open schema tag and check for name spaces 2) Check if current
>context is root,     2.1) is context root:- Print the element name.
>2.1.1) if children and attributes are present, the context is complex...else
>print context (single tag) as simple             2.1.2) If complex, print
child 
>element names based on their types                   2.1.2.1) check if
the 
>children are complex in a for each loop and then goto 2.1.1
2.2.1) 
>close the complex tag..and check for attributes. 3) close the doc
with /schema I 
>came up with a basic code and it is working for xml with one
root element and 
>first children. If it goes towards grand children, I am
kind of printing out 
>same element types twice or more as they are visible in
previous siblings. I am 
>wondering what could be a generic solution here.
e.g. inbound xml <?xml 
>version='1.0' encoding="UTF-8"?> <catalog
cat="music">     <cd country="RSA">    
>     <title>Empire Burlesque</title>
<artist>Bob Dylan</artist>         
><price>10.90</price>     </cd>     <dd
county="UK">         <title1>Hide your 
>heart 4</title1>
<artist1>Bonnie Tyler</artist1>         
><price2>9.90</price2>     </dd>
<dc county="UK">         <title2>Hide your 
>heart 4</title2>
<artist2>Bonnie Tyler</artist2>         
><price2>9.90</price2>     </dc>
</catalog> The schema results in <xs:schema
>xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
>attributeFormDefault="unqualified">     <xs:element name="catalog">
><xs:complexType>             <xs:sequence>               <xs:element
name="cd" 
>type="cdType"/>                 <xs:element name="dd"
type="ddType"/>            
>     <xs:element name="dc" type="dcType"/>
</xs:sequence>         
></xs:complexType>     </xs:element>
<xs:complexType name="cdType">         
><xs:sequence>             <xs:element
name="title" type="titleType"/>             
><xs:element name="artist"
type="artistType"/>             <xs:element 
>name="price" type="priceType"/>
</xs:sequence>         <xs:attribute 
>name="country" type="xs:string"/>
</xs:complexType>     <xs:simpleType 
>name="titleType">
<xs:restriction base="xs:string"/>     
></xs:simpleType>     <xs:simpleType
name="artistType">         <xs:restriction 
>base="xs:string"/>
</xs:simpleType>     <xs:simpleType name="priceType">    
>
<xs:restriction base="xs:integer"/>     </xs:simpleType>     
><xs:complexType
name="ddType">         <xs:sequence>             <xs:element 
>name="title1"
type="title1Type"/>             <xs:element name="artist1"
>type="artist1Type"/>             <xs:element name="price2"
type="price2Type"/>  
>       </xs:sequence>         <xs:attribute
name="county" type="xs:string"/>     
></xs:complexType>     <xs:simpleType
name="title1Type">         <xs:restriction 
>base="xs:string"/>
</xs:simpleType>     <xs:simpleType name="artist1Type">  
>
<xs:restriction base="xs:string"/>     </xs:simpleType>     
><xs:simpleType
name="price2Type">         <xs:restriction base="xs:integer"/>
></xs:simpleType>     <xs:complexType name="dcType">         <xs:sequence>
>     <xs:element name="title2" type="title2Type"/>             <xs:element
>name="artist2" type="artist2Type"/>             <xs:element name="price2"
>type="price2Type"/>         </xs:sequence>         <xs:attribute
name="county" 
>type="xs:string"/>     </xs:complexType>     <xs:simpleType
name="title2Type">  
>       <xs:restriction base="xs:string"/>
</xs:simpleType>     
><xs:simpleType name="artist2Type">
<xs:restriction base="xs:string"/>     
></xs:simpleType>     <xs:simpleType
name="price2Type">         <xs:restriction 
>base="xs:integer"/>
</xs:simpleType> </xs:schema> where the simple type 
>price2Type is repeated
twice once processing dd and then dc. as I am processing 
>only the children
of that node context.  I am wondering what could be a generic 
>solution here
to avoid duplicates at this context node. thankyou Densil
> 
>
--~------------------------------------------------------------------
>
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> To
unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> or e-mail:
<mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx>
> --~--


Current Thread
Keywords