OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: Convertor wanted: C struct to XML schema

[ Lists Home | Date Index | Thread Index ]
  • From: Tan Yiping <tanyp@mail.conuco.cn.net>
  • To: xml-dev@ic.ac.uk
  • Date: Tue, 27 Jul 1999 13:11:01 +0800

Thanks a lot to Steve, Mike, and John. Your information is very helpful.

However, none of tools you mentioned sovle exactly my problem. My last
message was too short, it seems. OK. Let me post a long one this time.
Hope you are still interested in this topic.

What I want to do basically is to exchange data in XML format between
two
applications over the network. Because XML docs are self-descriptive, it
should be intelligent enough to tolerate some independent interface
upgrading/extension in each of the communication partners. Quite a new
XML application, isn't it?

My current approach is to first define the data to be exchanged in XML
Schema. Then I can parse the XML Schema in (because it's a well-formed
XML doc) and generate XML doc against this schema in DOM objects,
filling
with the data from the a C struct. The point is, when the XML Schema is
parsed in, I have the XML doc structure and variable names in memory.

Let's say I have in memory an instance of data "tNewspaper" of type 
T_Newspaper, defined as following:

typedef int T_BundleParam[6];

typedef struct {
	float	fUSD;		//Price in United States
	float	fDM;		//Price in Germany
}T_Price;

typedef struct {
	char		szName[8];		//Newspaper name
	long		nSubscription;		//Number of Subscription
	T_BundleParam	tBundleParam;		//6 Bundling parameters
	T_Price		tPrice;			//Price
}T_Newspaper;

The XML counterpart of the above definition can be, in IE5-compatible
XML Schema language:

<?xml version="1.0"?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
	<ElementType name="BundleParam" dt:type="int"/>
	<ElementType name="USD" dt:type="real"/>
	<ElementType name="DM" dt:type="real"/>
	<ElementType name="Name" dt:type="string"/>
	<ElementType name="Subscription" dt:type="int"/>
	<ElementType name="Price" content="eltOnly">
		<element type="USD"/>
		<element type="DM"/>
	</ElementType>
	<ElementType name="Newspaper" content="eltOnly">
		<element type="Name"/>
		<element type="Subscription"/>
		<element type="BundleParam" minOccurs="1"
maxOccurs="*"/>
		<element type="Price"/>
	</ElementType>
</Schema>

(It will be perfect if I can define BundleParam as minOccurs="6"
maxOccurs="6". However, the MSXML parser in IE5 doesn't support so.)

Now I have made the above XML Schema manually. But I have hundreds
of such kind of C structs to be converted. It would be very helpful if
there is
a tool to do the conversion, even if the tool can only translate 80% of
the
syntax correctly!

Is such a tool exist?

Yiping
(Chinese has their given names at last position. There isn't an
international 
standard on name format yet, sorry.)


xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo@ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS