Re: Need help on xml-schema

xmlplus custodians <[email protected]>
Newsgroups gmane.text.xml.schema.devel
Message-ID <[email protected]>
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 <[email protected]> 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
ops.xsd (application/octet-stream, 1.1 KB) - not displayed
ops.xml (text/xml, 999 B)
<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_price>
    <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>

</overall_operation>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.