Re: Need help on xml-schema

One option, as Mike suggested,  is to keep common elements/attributes in a
type and derive types from there as needed to add additional
elements/attributes in derived types. Then "xsi:type" can be used in
instance document to specify the actual type.

Another option, IMO, is to use model-group eg. sequence with minOccurs="0"
at appropriate place in operation's type and add all optional elements
there.
A sample pair of xsd and xml  files, is attached.
The xsd is simplfied to use xsd:string in most places, however it should be
modified to use simpleTypes constrained by facets like enumerations,
patterns etc for several types like manf_date, comp_name, storage_type,
api_type etc.

HTH,
Satya

On Fri, Feb 18, 2011 at 8:33 PM, Michael Kay <mike@saxonica.com> wrote:

> On 18/02/2011 07:37, Taranisen Mohanta wrote:
>
>> Hi,
>>  I need a help on the following xml to have a schema.
>>
>>  If you're prepared to change the "type" attribute to "xsi:type" this
> becomes straightforward; you can define different subtypes of some common
> type, and choose which one the instance should be validated against using
> the xsi:type attribute. (But then, if you can do that, you're probably
> better changing the element name so <operation type="list_products"> becomes
> <operation_list_products>).
>
> If you're prepared to use XSD 1.1, you can do the same using any attribute,
> using the new feature of Conditional Type Assignment.
>
> Otherwise, it can't be done in XSD 1.0 alone.
>
> Michael Kay
> Saxonica
>
>
>
>  <?xml version="1.0" encoding="UTF-8"?>
>> <overall_operation>
>> <operation type="list_products">
>> <ops_description>Listing all the products of a company</ops_description>
>> <module>powesystem</module>
>> <comp_name>APC</comp_name>
>> <prod_price>50K$</prod_pric>
>> <manf_date>2001</manf_date>
>> <pool_name>Electrical</pool_name>
>> <fail_retry>2</fail_retry>
>> <storage_type>avialble</storage_type>
>> <storage_check>false</storage_check>
>> <api_type>sync</api_type>
>> <product_name>transformer</product_name>
>> </operation>
>> <operation type="search_product">
>> <ops_description>Search the products of a company from the
>> repository</ops_description>
>> <module>high-voltage</module>
>> <module>powesystem</module>
>> <comp_name>APC</comp_name>
>> <pool_name>Electrical</pool_name>
>> <fail_retry>2</fail_retry>
>> <storage_type>avialble</storage_type>
>> <storage_check>false</storage_check>
>> <api_type>sync</api_type>
>> <product_name>setup-transformer</product_name>
>> </operation>
>> <oeration>
>>   .
>> .
>> .
>> .
>> </operation>
>> </overall_operation>
>> Here different elements with operation like list_products,search_products
>> and so on.
>> Each elements will have some comman attributes such as
>> ops_description,module and so on.
>> Also some of the uniquie attributes for each elements such as
>> prod_price,manf_date etc.
>> I want to have a xml schema to validate. Some of the attributes also
>> optional.
>> I tried using abstract and derived but could not make it work.
>> Thanks in advance.
>>
>
>
>


-- 
Best Regards,
Satya Prakash Tripathi

Received on Friday, 18 February 2011 22:53:41 UTC