RE: FW: [xml] libxml2 support for xml schema data types



Hi, 

-----Original Message-----
From: Milan Andric [mailto:andricm cs pdx edu] 

Kasimier,

Many thanks for the reply - this is info I've been looking for.
I'm a beginner in X Schema, trying to find a way to describe 
a function
parameters in a way that would be satisfying for both Win/Linux.

Suppose there is a function foo(int i, char *j)

And call to function is like:

Foo(1, "hello")

I've thought of something like:

<Function Name=foo>
      <Param ### cross platform type info comes  here ###>1</Param>
      <Param Type="string">hello</Param>
</Function >

I'm trying to find a way to describe all my function params 
in a way that
is cross portable, and that would be understood by XML parsers on both
Windows and Linux.

Then, when above XML is programmatically (via DOM) parsed by 
XML parser,
it needs to be able to figure out actual param type, such 
that first param
is of type int, and assign such to int variable in program, that the
second param is of type string and make assigment to a 
variable in code,
etc.

So far I've been able to acomplish above with MSXML, but, as 
you've noted,
these are proprietary MS XML data types, and they wouldn't 
work for cross
platform purposes.

I'm wondering if there is a way to describe above params in such way -
what do you think?

[...]

The xsi:type attribute is intended for such purposes (e.g. used heavily
by
SOAP).

A schema could look like:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
  targetNamespace="urn:test:milan"
  xmlns:m="urn:test:milan">  

  <xs:simpleType name="myIntType">
    <xs:restriction base="xs:int">
      <xs:maxInclusive value="10"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="param" type="xs:anySimpleType"/>      

  <xs:element name="function">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="m:param"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

And the corresponding instance:

<?xml version="1.0"?>
<m:function xmlns:m="urn:test:milan"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:schemaLocation="urn:test:milan milan-functions.xsd"
  xmlns:xs="http://www.w3.org/2001/XMLSchema";>

  <m:param xsi:type="xs:string">value-1</m:param>
  <m:param xsi:type="m:myIntType">10</m:param>

</m:function>

I recommend using the following mailing lists for general W3C XML Schema
questions (i.e., non Libxml2 related):

xml-dev lists xml org or xmlschema-dev w3 org 

... or reading some tutorials:

http://www.w3schools.com/schema/default.asp

... or reading book about W3C XML Schema.

Regards,

Kasimier 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]