[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [office-comment] Ambiguity problems caused by ID/IDREF
Hi Murata-san,
Alex Brown suggested the following:
"In fact I think that (ideally) the schema should be re-written so that
its dependency on DTD-compatibility features is removed, and the
standard can then remove the reference to this troublesome spec."
and
"Personally, I would remove all the XSD datatyping from the ODF schema
too so that the schema became "pure" 19757-2"
Do you agree with his assessment?
-Rob
"MURATA Makoto (FAMILY Given)" <eb2m-mrt@asahi-net.or.jp> wrote on
05/11/2008 10:29:03 AM:
> Dear colleagues,
>
> The RNG schema for ODF 1.0 is "correct" (as defined in ISO/IEC
> 197575-2), but is it not compatible (as defined in "RELAX NG DTD
> Compatibility"), as Alex correctly pointed out.
>
> For example, consider the form:id attribute. It is defined as
> ID. After schema normalization (as defined in ISO/IEC 197575-2), this
> attribute will occur in the define element for <form:text>. That
> define element competes with the definition of anyElements. However,
> the definition of anyElements does not specify the attribute form:id
> as an ID. Therefore, the condition in the last bullet of the first
> itemized list of Section 3 of "RELAX NG DTD Compatibility" is not
> satisfied.
>
> One way to solve this problem is to replace
>
> mathMarkup =
> (attribute * { text }
> | text
> | element * { mathMarkup })*
>
>
> by
>
> mathMarkup =
> (attribute * - (anim:id
> | draw:control
> | draw:end-shape
> | draw:id
> | draw:shape-id
> | draw:start-shape
> | form:id
> | presentation:master-element
> | smil:targetElement
> | text:change-id
> | text:id) { text }
> | attribute anim:id { ID }
> | attribute draw:control { IDREF }
> | attribute draw:end-shape { IDREF }
> | attribute draw:id { ID }
> | attribute draw:shape-id { IDREF }
> | attribute draw:start-shape { IDREF }
> | attribute form:id { ID }
> | attribute presentation:master-element { IDREF }
> | attribute smil:targetElement { IDREF }
> | attribute text:change-id { IDREF }
> | attribute text:id { ID }
> | text
> | element * { mathMarkup })*
>
> and replace
>
> anyAttListOrElements =
> attribute * { text }*,
> anyElements
>
> by
>
> anyAttListOrElements =
> attribute * - (anim:id
> | draw:control
> | draw:end-shape
> | draw:id
> | draw:shape-id
> | draw:start-shape
> | form:id
> | presentation:master-element
> | smil:targetElement
> | text:change-id
> | text:id) { text }*,
> (attribute anim:id { ID }
> | attribute draw:control { IDREF }
> | attribute draw:end-shape { IDREF }
> | attribute draw:id { ID }
> | attribute draw:shape-id { IDREF }
> | attribute draw:start-shape { IDREF }
> | attribute form:id { ID }
> | attribute presentation:master-element { IDREF }
> | attribute smil:targetElement { IDREF }
> | attribute text:change-id { IDREF }
> | attribute text:id { ID })*,
> anyElements
>
> After this change, jing does not complain. (But remember that jing
> does not check a:defaultValue.)
>
> You might want to be more specific. For example, the definition of
> mathMarkup can be:
>
> mathMarkup =
> attribute local:* { text }
> | attribute xlink:href { text }
> | attribute xlink:type { text }
> | text
> | element mml:* { mathMarkup })*
>
> where
>
> namespace local = ""
> namespace mml = "http://www.w3.org/1998/Math/MathML"
>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]