[osis-core] New milestone use of elements

Patrick Durusau osis-core@bibletechnologieswg.org
Wed, 28 May 2003 17:23:11 -0400


Troy,

Troy A. Griffitts wrote:

> Patrick,
>     :)  OK, one more time....  I'M NOT suggesting we actually can get 
> the schema rules correct about milestones...

What??? We wouldn't get it right!!! ;-)

Agree that either mechanism you propose isolates the mechanism more 
transparently than simply adding mID to each element. See the payoff in 
terms of documentation, but is that enough? Maybe, I don't have any 
strong reason to oppose the second option in particular. Might make it 
easier for the tech side folks to take note of the milestoneable ("Let 
he who has never used a container cast the first milestone." Sorry, 
could not resist. Have been here since 4 AM so attribute it to fatigue 
and not just poor judgment.)

Patrick

>
>     I'm only _trivially_ suggesting that we don't hand code all 
> elements with a 'mID', but instead specify something less specific but 
> more exempliary on each element.
>
> Schema syntax follows:
>
> // stole regex from osisWorkType
> <xs:simpleType name="mIDType">
>   <xs:restriction base="xs:string">
>     <xs:pattern value="((\p{L}|\p{N}|_)+)((\.(\p{L}|\p{N}|_)+)*)?"/>
>   </xs:restriction>
> </xs:simpleType>
>
>
> // all documentation about Milestonable behaviour here
> <xs:attributeGroup name="milestoneable">
>   <xs:attribute name="mID" type="mIDType" use="optional"/>
> </xs:attributeGroup>
>
>
> // example element
> <xs:element name="verse">
>   <xs:complexType mixed="true">
> ...
>     <xs:attributeGroup ref="milestoneable"/>
>   </xs:complexType>
> </xs:element>
>
> __________________________________________
>
> OR AS AN ALTERNATIVE, I WOULD RATHER MILESTONEABLE NOT BE LIMITED TO 
> AN ATTRIBUTEGROUP, SO SOMETHING _LIKE_:
>
>
> // all documentation about Milestoneable behaviour here
> <xs:complexType name="milestoneable">
>   <xs:attribute name="mID" type="mIDType" use="optional"/>
> </xs:complexType>
>
>
> // example element
> <xs:element name="verse">
>   <xs:complexType mixed="true">
>     <xs:complexContent>
>       <xs:extension base="milestoneable"/>
> ...
>     </xs:complexContent>
>   </xs:complexType>
> </xs:element>
>
>
> This is my feable 1 hour old knowledge of XML Schema, so please be kind.
> Remember, this was meant to be a nit-pickey comment and has evolved 
> into me learning Schema syntax.  I realize just adding 'mID' to every 
> element accomplishes the same thing, but it doesn't CONCEPTUALLY 
> isolate this behaviour to some Schema THING like either of the above 
> alternatives do.
>
>     -Troy.
>
>
>
>
>
> Patrick Durusau wrote:
>
>> Troy,
>>
>> Troy A. Griffitts wrote:
>>
>>> Patrick,
>>>     It was simpler than what you thought, I think....
>>>
>>> You said that you had "...add[ed] the 'mID' attribute to all the 
>>> elements that can be listed in the milestoneSE type attribute." (see 
>>> below for quote :) )
>>>
>>>     I was just suggesting that INSTEAD of adding 'mID' to all 
>>> elements that should have it, we normalize this 'mID' attribute out 
>>> into some schema 'form', I guess like whatever milestoneSE was.  And 
>>> then let each element 'get' this 'thing'...
>>
>>
>>
>> One possible method would be for me to replace the "mID" on all those 
>> elements with a call to an attribute by reference, which would have 
>> the documentation you are seeking.
>>
>> Not sure it is possible to create a class of element that requires 
>> two empty elements and the "mID" and then to extend it with each of 
>> the other elements. Will have to think about that one.
>>
>> Patrick
>>
>>>
>>> I guess I should learn schema syntax and state my suggestion 
>>> appropriately.
>>>
>>> trying one more attempt at non-schema syntax:
>>>
>>> class Milestoneable {
>>>     // all docs here, including the fact that there must
>>>     // be exactly 2 elements containing this mID value and
>>>     // that this semantic logically has identical OSIS meaning
>>>     // as the XML container semantic.
>>>
>>>     allow attribute 'mID';
>>>
>>> };
>>>
>>> class <q> extends Milestoneable {...};
>>> class <verse> extends Milestoneable {...};
>>> ...
>>>
>>>
>>>
>>>
>>>
>>> Patrick Durusau wrote:
>>>
>>>> Troy,
>>>>
>>>> Troy A. Griffitts wrote:
>>>>
>>>>>> What I did was to add the mID attribute to all the elements that 
>>>>>> can be listed in the milestoneSE type attribute.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> I know this is silly nit-picking... but...
>>>>>
>>>>> Is there a way to have a schema 'form' (speaking Platonic, for 
>>>>> lack of my schema knowledge) that declares the attribute mID as 
>>>>> valid.  We could call the form, 'milestoneable' or 
>>>>> something-or-other, then the elements that are milestoneable could 
>>>>> 'be of|inherit|get' this form.  This way we could have all the 
>>>>> docs regarding the 'milestoneable' semantic at this point, 
>>>>> including all the OSIS rules regarding such.  I realize they will 
>>>>> just be pros, but at least they will be where someone would expect 
>>>>> to find them.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Not sure what you mean by "declares the attribute mID as valid." 
>>>> What I think you want is to have the semantic of having an 
>>>> attribute value for that attribute defined. In other words, if I am 
>>>> using this as a container, then no mID attribute value should be 
>>>> declared. If used as a milestone, then declare the mID attribute.
>>>>
>>>> BTW, I think this container semantic with mID goes beyond most of 
>>>> the other milestone work I have seen. Maybe we should work up an 
>>>> article for xml.com or somewhere about it.
>>>>
>>>> Patrick
>>>>
>>>>
>>>>>
>>>>>     -Troy.
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> osis-core mailing list
>>>>> osis-core@bibletechnologieswg.org
>>>>> http://www.bibletechnologieswg.org/mailman/listinfo/osis-core
>>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> osis-core mailing list
>>> osis-core@bibletechnologieswg.org
>>> http://www.bibletechnologieswg.org/mailman/listinfo/osis-core
>>>
>>
>
>
> _______________________________________________
> osis-core mailing list
> osis-core@bibletechnologieswg.org
> http://www.bibletechnologieswg.org/mailman/listinfo/osis-core
>

-- 
Patrick Durusau
Director of Research and Development
Society of Biblical Literature
Patrick.Durusau@sbl-site.org
Co-Editor, ISO 13250, Topic Maps -- Reference Model