- From: xmlplus custodians <xmlplus.custodians@gmail.com>
- Date: Fri, 18 Feb 2011 21:32:52 +0530
- To: Taranisen Mohanta <tmohanta@gmail.com>
- Cc: Michael Kay <mike@saxonica.com>
- Message-ID: <AANLkTik=WM_9vzd6oZ8nh-Z=EK2CiUr+VqF9GC=T5+W-@mail.gmail.com>
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
Attachments
Received on Friday, 18 February 2011 22:53:41 UTC