Print

Print


Hi George,

This is not equivalent. The combined schema that you suggested allows 
you to construct documents that are not valid TEI.

For example, it allows this as body content:

     <body>
       <when></when>
       <div absolute="s" type="chapter"></div>
     </body>

which is invalid wrt the TEI schema. The combined schema seems to allow 
the union of what any of the two schemas would allow at a given point.

However, the purpose of the extra schema is to further constrain what 
the basis schema allows, not to extend it.

I’d like to know whether there is another way to specify these extra 
constraints in an adornment schema that may be combined with the 
original schema.

Gerrit

On 24.06.2016 11:21, George Bina wrote:
> What about using a schema that combines the two schemas, like
>
> <grammar
>     xmlns="http://relaxng.org/ns/structure/1.0"
>     xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
>     datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
>     <start>
>         <choice>
>          <externalRef
> href="http://www.tei-c.org/Vault/P5/1.7.0/xml/tei/custom/schema/relaxng/tei_all.rng"/>
>
>          <externalRef
> href="https://subversion.le-tex.de/common/schema/tei-cssa/docbook-like-divs.rng"/>
>
>         </choice>
>     </start>
> </grammar>
>
> Note that you need to disable the ID/IDREF checking from
> Options->Preferences -- XML / XML Parser / RELAX NG because there are
> conflicting IDs defined.
>
> Best Regards,
> George
> --
> George Cristian Bina
> <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
> http://www.oxygenxml.com
>
> On 24/06/16 02:30, Imsieke, Gerrit, le-tex wrote:
>> Hi Gioele,
>>
>> Neither an ODD nor a Schematron approach: You can use a second RNG
>> schema. Here is a sample schema (that also serves as a blog post about
>> this approach):
>> https://subversion.le-tex.de/common/schema/tei-cssa/docbook-like-divs.rng
>>
>> I tried to prescribe div/@type attributes in such a way that the types
>> correspond to DocBook element names, and the grammar is (roughly) the
>> same as in DocBook. So you have parts or chapters in the body, prefaces
>> and dedications in the frontmatter, etc.
>>
>> The nice thing is that you superimpose a bespoke grammar on an
>> off-the-shelf TEI schema. An actual grammar refining an unaltered base
>> schema, if that doesn’t sound compelling. You can’t do this with
>> Schematron so handily.
>>
>> A sample document is here:
>> https://gist.github.com/gimsieke/44748c504783590ef906c7dc0c2e268b
>> If you open it in oXygen and add a type attribute to body/div, you will
>> be presented with a choice of part and chapter.
>> This is the good news.
>> The bad news is that there will be no other completion hints than those
>> from the epischema – unless you swap the xml-model PIs at the top, but
>> then you’ll only have the default TEI vocabulary as suggestions.
>> Maybe we can convince the oXygen people to restrict the autocomplete
>> options to the intersection of the choices that all referenced schemas
>> offer at a given location.
>>
>> Gerrit
>>
>> On 22.06.2016 18:14, Gioele Barabucci wrote:
>>> Hello,
>>>
>>> in ODD, how can I change the constraints of the <div> elements that
>>> appear in a certain position (e.g., /TEI/text/body) while using the
>>> default definition for all the other elements?
>>>
>>> I could specify those constraints as a set of Schematron assertions, but
>>> those would not be picked up by, for example, oXygen for the automatic
>>> completion of element names and attribute values.
>>>
>>> In RelaxNG one can give two different definitions of <div>: one for
>>> those elements appearing in a certain production, and another for all
>>> the others contexts. Can the same thing be done in ODD?
>>>
>>> The use case for this request is that I would like <div>s in
>>> /TEI/text/body to contain only few whitelisted elements, while allowing
>>> <div> in other places (mainly the header) to be unconstrained.
>>>
>>> Note: Element names and element definitions are separate entities in
>>> RelaxNG; in ODD it looks like element names and their definitions cannot
>>> be separated (I suppose this has to do with DTD support). Probably this
>>> means that what I am looking for cannot be done, but I think it is worth
>>> asking anyway.
>>>
>>> Regards,
>>>
>>

-- 
Gerrit Imsieke
Geschäftsführer / Managing Director
le-tex publishing services GmbH
Weissenfelser Str. 84, 04229 Leipzig, Germany
Phone +49 341 355356 110, Fax +49 341 355356 510
[log in to unmask], http://www.le-tex.de

Registergericht / Commercial Register: Amtsgericht Leipzig
Registernummer / Registration Number: HRB 24930

Geschäftsführer: Gerrit Imsieke, Svea Jelonek,
Thomas Schmidt, Dr. Reinhard Vöckler