Re: Extended ODF schema

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07.02.23 23:39, Regina Henschel wrote:
Hi Laurent,

This is all without warranty, I am not an expert on rng.

Laurent Balland schrieb am 07.02.2023 um 21:50:
Hello,

I'm trying to modify schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng to add a new attribute to number:text

I added:

   <rng:define name="number-text" combine="interleave">
     <rng:ref name="number-text-attlist"/>
   </rng:define>

   <rng:define name="number-text-attlist">
     <rng:interleave>
       <rng:optional>
         <rng:attribute name="loext:blank-width-char">
           <rng:ref name="string"/>
         </rng:attribute>
       </rng:optional>
     </rng:interleave>
   </rng:define>

But I got the following error: .../schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng[7078,43]: Fatal: <attribute> is grouped and that group is repeated

The line number corresponds to nothing, and if I move the upper code on a different place in the file, the error is always at this unknown 7078th line. >
Any idea about what I could try?

The line 7078 belongs to <rng:element name="number:date-style">
That can have several <rng:ref name="number-text-with-fillchar"/>.
Such is in line 7427. It can have several <rng:ref name="number-text"/>.
Currently all together resolves to several <rng:element name="number:text"> and  <rng:element name="number:fill-character">. So currently <number:date-style> element can have several child elements <number:text>. That is no problem, because several child elements with the same name are possible.

Now you introduce an attribute into <rng:ref name="number-text"/>. That means, that when resolving it for <number:date-style> element this would get several attributes with the same name. And that is not possible.

You need to look, to which element your new attribute belongs.

if it should go on the numer:text element, it needs to be a child of its rng:element - currently it's not extensible (via "combine" feature):

  <rng:define name="number-text">
    <rng:element name="number:text">
      <rng:text/>
    </rng:element>
  </rng:define>

so you have to override it - at the start of the libreoffice schema there is an rng:include, paste the above into this include element and adapt it - this will override what is in the included file.




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux