Subject: Re: 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: 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>
> --~--
|