I agree it would be nice to have a SQL-DDL standard but that isn't what I
was interested in. I actually wanted a W3C XML Schema that mirrored a
particular datbase. The JCA-RDBMS adapter I am using takes XML and maps the
data in the XML to a DML query. When setting this up, it asks you to
describe the input XML using XML Schema. Often that XML Schema maps fairly
for me.
Thanks fo your feedback. I will let you know if I find a way to use Middlgen
to help me out.
-----Original Message-----
Macpherson
Sent: Tuesday, February 04, 2003 8:34 PM
Subject: RE: [Middlegen-user] xml schema from middlegen?
Hal,
What we are missing is an industry standard SQL-DDL schema
specification. What XML Spy is doing does not even attempt to
address that problem. In this example they have defined a
FLIGHTS element and the constituent elements that comprise a
FLIGHTS record and so on. Where is the schema that defines
the database structure in general? What we need is a schema
that says a TABLE has FIELD elements and CONSTRAINT elements
and the FIELD element has a SQLTYPE element and it has
such-and-such attributes. Once you have a standard XML schema
that describes a SQL-99 compliant database, for example, you
can create instance of that schema. Let's call it the
SQL-99-XML-SCHEMA (in general you would use a guaranteed
unique name such as a registered URL but you get the
picture). Now what we can do is create an XML document that
uses the SQL-99-XML-SCHEMA. The TABLE element would have a
NAME attribute and in your case a TABLE element named FLIGHTS
would exist. HUGE difference here. There is no "FLIGHTS"
schema type, there is a "TABLE" schema type with a name attribute.
Anyway, the main point is that the schema being generated by
XML Spy is entirely useless for the purpose you initially
suggested. It's a specific schema that describes instances of
XML documents tied to a fixed database schema. Unless
everybody has a FLIGHTS database it's not really useful. It's
extremely useful for a java application using, say, castor to
map objects to XML and vice versa.
-----Original Message-----
Of Hal Deadman
Sent: Tuesday, February 04, 2003 4:44 PM
Subject: RE: [Middlegen-user] xml schema from middlegen?
I just tried XML Spy 5 (release 3) and it generated a W3C XML
Schema from a the database schema I picked. It doesn't appear
to be very flexible or configurable and it doesn't infer xml
schema constraints from the database constraints (although
you can add them manually). I don't think you can configure
datatype mappings or influence the structure of the schema
(Russian doll vs. flat dtd style with named types)
It also appears that the XML schema it generates captures the
structure of the database tables but XML instance documents
based on that schema would not be able to store multiple rows
of data for the elements defined in the schema. This is what
it came up with for the middlegen airline schema.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FLIGHTS">
<xs:complexType>
<xs:sequence>
<xs:element name="FLIGHT_ID"
type="xs:decimal"/>
<xs:element name="NAME">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element
name="DEPARTURE_UTC" type="xs:dateTime"/>
<xs:element name="ARRIVAL_UTC"
type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PERSONS">
<xs:complexType>
<xs:sequence>
<xs:element name="PERSON_ID"
type="xs:decimal"/>
<xs:element name="FIRST_NAME">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LAST_NAME">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RESERVATIONS">
<xs:complexType>
<xs:sequence>
<xs:element
name="RESERVATION_ID" type="xs:decimal"/>
<xs:element name="PERSON_ID"
type="xs:decimal"/>
<xs:element name="FLIGHT_ID"
type="xs:decimal"/>
<xs:element
name="REGISTRATION_UTC" type="xs:dateTime"/>
<xs:element name="COMMENTARY">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:maxLength value="200"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
-----Original Message-----
Macpherson
Sent: Tuesday, February 04, 2003 4:44 PM
Subject: RE: [Middlegen-user] xml schema from middlegen?
It does and I have used it and it works fine on a small
schema. Here's the question: what XML schema is it
generating? Answer: XML Spy's proprietary database schema. We
really do need a standard for this.
-----Original Message-----
Sent: Tuesday, February 04, 2003 1:34 PM
Subject: RE: [Middlegen-user] xml schema from middlegen?
It looks like XML Spy 5 has support for "Generation of
DTD/Schema from database". Haven't tried it and don't own
that version of the product yet, but at least someone must
have a use for it.
http://www.altova.com/matrix.html
Search for "Generation of DTD/Schema from database".
-----Original Message-----
Behalf Of Hal
Deadman
Sent: Tuesday, February 04, 2003 2:45 PM
Subject: RE: [Middlegen-user] xml schema from middlegen?
1) This page
(http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=6)
describes how to model relations, although I am not an expert. It
appears that you would use the <xsd:key/> and <xsd:keyref/>
to define
a pk type
constraint and an then refer to that constraint (fk-type
constraint). They refer to elements via xpath and keyref
refers to a
key via the key's name.
2) http://www.w3.org/XML/Schema is the standard. This is
the standard
that is replacing DTDs. It's not necessarily meant to
replace data
models but there are many similarities between XML schemas and a
database schema. You
can enforce things in XML schema such as uniqueness,
relationships, data
types, constrained datatypes, etc that you couldn't do in
DTDs. I believe
J2EE 1.4 describes all of it's XML files (ejb-jar deployment
descriptors)
using XML schema instead of DTDs.
3) The reasons I was interested were because I need to provide XML
schemas that map closely to a database table for use with a JCA
adapter to a database in an XML based workflow tool.
I also saw a proposal from BEA for XMLBeans that takes an
XML schema
and generates XML schema aware and constrained java
objects. Wasn't
planning to use that but I thought it might be another reason to
want to quickly generate an XML schema.
http://www.javaskyline.com/20030127_bea.html
http://workshop.bea.com/xmlbeans/XsdUpload.jsp
On the XML schema home page, there is a big list of tools
that work
with XML schemas, but I didn't notice any that help generate them
(from anything
other than DTDs). One example is Castor, which is described
as: "Castor
provides the only open-source Schema Object Model that loads
your XML Schema
in a Java representation. It also generates Java classes
given an XML Schema
and performs validation." Not being a Castor user, I don't
know if they
would benefit from having an XML schema generated for them or not.
I looked into Torque which is a sub-project of Turbine on Jakarta.
They generate an "XML schema" from a database but it's not the
standard XML schema, rather it is a representation of a
database the
schema in their own
XML format.
XML Schema is supposed to be a big part of Microsoft Office
11, maybe
being able to create schemas from existing data models would be
useful there, although maybe Microsoft supports that. I
don't know.
http://www.microsoft.com/presspass/features/2002/nov02/11-12XM
LOffice.asp
I don't really know how useful this would be for people and
it may not
make sense. I am about to start a project where I will get some
exposure to XML schema. As I learn more about XML schema, I will
keep Middlegen in mind and
see if I think it would be useful.
Hal
-----Original Message-----
Behalf Of Aslak
Hellesøy
Sent: Tuesday, February 04, 2003 1:47 PM
Subject: RE: [Middlegen-user] xml schema from middlegen?
1) How would you model relations? Using ids?
2) Is there any kind of standard for this kind of schemas?
3) Who else than you would need this?
Aslak
-----Original Message-----
Behalf Of Hal
Deadman
Sent: 4. februar 2003 19:40
Subject: [Middlegen-user] xml schema from middlegen?
I have run across a couple cases where it would be nice to
have a W3C XML
Schema that mirrors an existing database schema. Are there
any tools out
there that do that? Would that make sense as a
middlegen plug-in
or at all? It wouldn't make use of Xdoclet but the information
that
Middlegen has
regarding the tables, columns, and relationships
would be used.
One thing that wouldn't be typical of a Middlgen
plug-in is that
there would be one velocity template to generate the
entire XML
schema for the set of DB
tables rather than one template that gets executed for
each table.
I suppose there would have to be some mappings established
between XML
datatypes and JDBC datatypes and this information would
need to be
available in the template.
I haven't worked much with XML Schema so most of what I
know is based on
http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=1
The article
talks about unique indexes and pk/fk type xml schema
equivalents
on page 6.
Below is an example of what a schema might look like for a
single table.
CREATE TABLE COMPANY (
COMPANY_ID NUMBER,
COMPANY_NAME VARCHAR2 (100),
TICKER VARCHAR2 (20),
MODIFIED_DATE DATE,
CREATED_DATE DATE)
You could create a velocity template that generated a
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:simpleType name="companyNameType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="tickerType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="companyType">
<xsd:sequence>
<xsd:element name="company_id" type="xsd:integer"/>
<xsd:element name="company_name"
type="companyNameType"/>
<xsd:element name="ticker" type="tickerType"/>
<xsd:element name="modified_date" type="xsd:date"/>
<xsd:element name="created_date" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="companyListType">
<xsd:sequence>
<xsd:element name="company" type="companyType"
minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="companies" type="companyListType"/>
</xsd:schema>
-------------------------------------------------------
SourceForge Enterprise Edition + IBM + LinuxWorld =
Something 2 See!
http://www.vasoftware.com
_______________________________________________
middlegen-user mailing list
https://lists.sourceforge.net/lists/listinfo/middlegen-user
-------------------------------------------------------
SourceForge Enterprise Edition + IBM + LinuxWorld =
Something 2 See!
http://www.vasoftware.com
_______________________________________________
https://lists.sourceforge.net/lists/listinfo/middlegen-user
-------------------------------------------------------
SourceForge Enterprise Edition + IBM + LinuxWorld
=omething 2 See!
http://www.vasoftware.com
_______________________________________________
https://lists.sourceforge.net/lists/listinfo/middlegen-user
-------------------------------------------------------
SourceForge Enterprise Edition + IBM + LinuxWorld =omething 2 See!
http://www.vasoftware.com
_______________________________________________
https://lists.sourceforge.net/lists/listinfo/middlegen-user
-------------------------------------------------------
SourceForge Enterprise Edition + IBM + LinuxWorld =omething 2 See!
http://www.vasoftware.com
_______________________________________________
https://lists.sourceforge.net/lists/listinfo/middlegen-user
-------------------------------------------------------
SourceForge Enterprise Edition + IBM + LinuxWorld =omething 2 See!
http://www.vasoftware.com
_______________________________________________
middlegen-user mailing list
https://lists.sourceforge.net/lists/listinfo/middlegen-user