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

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   [xml-dev] XSD substitution groups, subtypes, nillable .. the wholesmack

[ Lists Home | Date Index | Thread Index ]
  • To: xml dev <xml-dev@lists.xml.org>
  • Subject: [xml-dev] XSD substitution groups, subtypes, nillable .. the wholesmack
  • From: Soren Kuula <dongfang@dongfang.dk>
  • Date: Fri, 24 Feb 2006 17:51:00 +0000
  • User-agent: Mozilla Thunderbird (X11/20050322)

Hi,

OK; here are the syntactically correct XSD definitions and declaratins, 
XSD namespace ignored, and target namespace is empty.

The notation of the translations just *are* ad hoc; they cannot be 
expressed in XSD directly, and I know no other schema language that 
supports substitution groups etc. that I could have expressed them in.

>
>> Hi, I'm trying to make a simpler structure for XML Schema -- by 
>> making implicit stuff explicit.
>>
<complexType name="a">
  <!--- some model --->
</complexType>

<complexType name="b">
  <extension base="a">
     <!--- some model -->
  </extension>
</complexType>

<complexType name="c">
  <extension base="b">
     <!--- some model -->
  </extension>
</complexType>

Assume that the types are OK; no UPA / EDC issues.

>> --- scenario 1 ---
>>
>> For a declaration:
>
>
<element name="x" type="a"/>

>> I take that to mean:
>>
>> There are three declaration of an element named x:
>>
>> There is a declared element with name x, type a, and an optional 
>> attribute xsi:type with values in {a} and an optional attribute 
>> xsi:nil with values in{false}
>>
>> There is a declared element with name x, with type b, and a required 
>> attribute xsi:type with values in {b} and an optional attribute 
>> xsi:nil with values in{false}
>>
>> There is a declared element with name x, with type c, and a required 
>> attribute xsi:type with values in{c} and an optional attribute 
>> xsi:nil with values in{false}
>>
>> Any big conceptual mistakes there? Hope not :)
>>
>> Now if I add
>
>
<element name="y" type="b"/>

>>
>> that will then be
>>
>> There exist two declaration of an element named y:
>>
>> One with type b, and an OPTIONAL attribute xsi:type with values in 
>> {b} and an optional attribute xsi:nil with values in {false}
>> One with type c, and a required attribute xsi:type with values in {c} 
>> and an optional attribute xsi:nil with values in {false}
>>
>> right?
>>
>> --- scenario 2 ---
>>
>> If I do
>>
<element name="x" type="a" substitutionGroup="y"/>

<element name="y" type="b"/>

>>
>> (with the same implications for implied declarations as above)
>>
>> can the (first) implied-declaration
>>
>> There exists a declared element named x with type a, and an optional 
>> attribute xsi:type with values in {a} and an optional attribute 
>> xsi:nil with values in {false}
>>
>> ever substitute an y element? As far as I understand no, but I'd be 
>> happy to have a confirmation.
>>
>> --- scenario 3 ---
>>
>> I take a declaration
>>
<element name="y" type = "b" nillable="false"/>

>> to mean
>>
>> There exists a declared element named y with type b, and an optional 
>> attribute xsi:type with values in {b} and an optional attribute 
>> xsi:nil with  values in {false}
>>
>> and
>
>
<element name="y" type="b" nillable="true"/>

>>
>> to mean
>>
>> There exists a declared element named y with type b, and an optional 
>> attribute xsi:type with values in {b}, and an optional attribute 
>> named xsi:nil with values in {false}
>>
>> There exists a declared element named y with type #EMPTY, and an 
>> optional attribute xsi:type with values in {b}, and a required 
>> attribute named xsi:nil with values in {true}
>>
>> i) How are the other implied declarations; are there 1 or 2 of them? 
>> One of these must be true:
>>
>> (R)
>> There exists a declared element named y with type c, and a required 
>> attribute xsi:type with values in {c}, and an optional attribute 
>> named xsi:nil with values in {false}
>>
>> OR
>>
>> (S)
>> (
>> There exists a declared element named y with type c, and a required 
>> attribute xsi:type with values in {c}, and an optional attribute 
>> named xsi:nil with values in {false}
>>
>> and
>>
>> There exists a declared element named y with type #EMPTY, and a 
>> required attribute xsi:type with value s in {c}, and an required 
>> attribute named xsi:nil with values in {true}
>> )
>>
>> Which one is it ? :)
>>
>> --- Scenario 4 ---
>>
>> if I have
>
>
<element name="x" type="b" nillable="true" substitutionGroup="y"/>

<element name="y" type="b" nillable="false"/>

>> is is true or false, or absurd to even talk about that elements of 
>> the implicit declaration
>>
>> There exists a declared element named x with type #EMPTY, and an 
>> optional attribute xsi:type with values in {b}, and a required 
>> attribute named xsi:nil with values in {true}
>>
>> can substitute elements declared by
>>
>> There exists a declared element named y with type b, and an optional 
>> attribute xsi:type with values in {b}, and an optional attribute 
>> named xsi:nil with values in {false}
>>
>> (I sure as XML Schema hope it's false)
>>
>> --- Scenario 5, final one ---
>>
>> if I have
>
>
<element name="x" type="b" nillable="true" substitutionGroup = "y"/>

<element name="y" type="b" nillable="true"/>

>>
>> is is true or false that elements of the implicit declaration
>>
>> There exists a declared element named x with type #EMPTY, and an 
>> optional attribute xsi:type with values in {b}, and a required 
>> attribute named xsi:nil with values in {true}
>>
>> can substitute elements declared by
>>
>> There exists a declared element named y with type #EMPTY, and an 
>> optional attribute xsi:type with value in {b}, and a required 
>> attribute named xsi:nil with values in {true}
>>
>> my bold guess is that it's true, but maybe....
>>
>>
>>
>> All right, I could go looking for the answers in the spec, but 
>> honestly, I don't have the courage for that; I'm still in R&R after 
>> my last encounter with it. My hope with this is that someone really 
>> knowledgeable about XML Schema can fill me / us in on it, and 
>> together we have then contributed a really simple way to tell how the 
>> whole subtyping / subst grp / nillable thing works.
>>
>> Soren
>
>
>
> Soren
>
Soren





 

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

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