<div dir="ltr"><div style="font-family:comic sans ms,sans-serif" class="gmail_default"></div><div dir="ltr"><chart:chart svg:width="16.001cm" svg:height="8.986cm" xlink:href=".."><br>  <chart:title><br>    <text:p>Histogram Chart</text:p><br>  </chart:title><br>  <chart:plot-area><br>    <chart:series chart:label-cell-address="'Sheet1'.$A$1" chart:values-cell-range-address="'Sheet1'.$A$2:$A$101"><br>      <chart:data-point chart:repeated="100"/><br>      <loext:histogram-configuration loext:histogram-frequency-type="2" loext:histogram-bin-count="10"><br>        <loext:histogram-overflow-bin><span class="gmail_default" style="font-family:comic sans ms,sans-serif">6</span>0</loext:histogram-overflow-bin><br>        <loext:histogram-underflow-bin>0</loext:histogram-underflow-bin><br>        <loext:histogram-interval-closed>true</loext:histogram-interval-closed><br>      </loext:histogram-configuration><br>    </chart:series><br>    <chart:axis chart:dimension="x"><br>      <chart:title><br>        <text:p>Values (units)</text:p><br>      </chart:title><br>    </chart:axis><br>    <chart:axis chart:dimension="y"><br>      <chart:title><br>        <text:p>Frequency</text:p><br>      </chart:title><br>    </chart:axis><br>  </chart:plot-area><br></chart:chart></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 2 Jan 2025 at 18:31, Regina Henschel <<a href="mailto:rb.henschel@t-online.de" target="_blank">rb.henschel@t-online.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Devansh,<br>
<br>
Devansh Varshney schrieb am 02.01.2025 um 09:14:<br>
> <chart:chart svg:width="16.001cm" svg:height="8.986cm" xlink:href=".."><br>
>    <chart:title><br>
>      <text:p>Histogram Chart</text:p><br>
>    </chart:title><br>
>    <chart:plot-area><br>
<br>
>      <!-- Series with label from A1 --><br>
The generated XML does not contain any comments.<br>
<br>
>      <chart:series chart:label="Results"><br>
A 'chart:label' attribute does not exist for the <chart:series> element. <br>
Instead it has the attribute 'chart:label-cell-address'.<br>
<br>
<br>
>        <!-- Data points from A2:A101 --><br>
The data values are not inside <chart:data-point> elements. The data <br>
values are given by the attribute 'chart:values-cell-range-address' of <br>
the <chart:series> element.<br>
<br>
The purpose of a <chart:data-point> element is, to specify the style of <br>
a data point. As the columns in the histogram do not directly reflect <br>
data points, a <chart:data-point> element is useless for an histogram. <br>
But it does not harm to keep the default, which would be<br>
        <chart:data-point chart:repeated="100"/><br>
in the example. That means, that the style given in the <br>
'chart:style-name' attribute of the <chart:series> element is used for <br>
all 100 data points. You can keep it although it will actually be the <br>
style of the rendered bins (at least I think you will use the <br>
'chart:style-name' attribute of the <chart:series> element for this <br>
purpose).<br>
<br>
An element <chart:data-points> does not exist. If <chart:data-point> <br>
elements are needed, they are simply written one after the other. The <br>
RELAX NG has the element <rng:zeroOrMore> for this.<br>
<br>
>        <chart:data-points><br>
>          <chart:data-point chart:value="5.3"/>   <!-- A2 --><br>
>          <chart:data-point chart:value="12.7"/>  <!-- A3 --><br>
>          <chart:data-point chart:value="8.4"/>   <!-- A4 --><br>
>          <chart:data-point chart:value="15.2"/>  <!-- A5 --><br>
>          <chart:data-point chart:value="22.6"/>  <!-- A6 --><br>
>          <chart:data-point chart:value="30.1"/>  <!-- A7 --><br>
>          <chart:data-point chart:value="45.7"/>  <!-- A8 --><br>
>          <chart:data-point chart:value="60.3"/>  <!-- A9 --><br>
>          <chart:data-point chart:value="75.9"/>  <!-- A10 --><br>
>          <chart:data-point chart:value="95.1"/>  <!-- A11 --><br>
>          <!-- Add more data points up to A101 --><br>
>        </chart:data-points><br>
<br>
>        <!-- Histogram-specific configuration --><br>
>        <loext:histogram><br>
<br>
I would use element name<br>
          loext:histogram-configuration<br>
to be more specific. Remember, there are no comments written, thus a <br>
meaningful name helps.<br>
<br>
>          <attribute name="loext:histogram-frequency-type"><br>
>            <value>2</value><br>
>          </attribute><br>
>          <attribute name="loext:histogram-bin-count"><br>
>            <data type="integer">10</data><br>
>          </attribute><br>
>          <optional><br>
>            <attribute name="loext:histogram-overflow-bin"><br>
>              <data type="double">100</data><br>
>            </attribute><br>
>          </optional><br>
>          <optional><br>
>            <attribute name="loext:histogram-underflow-bin"><br>
>              <data type="double">0</data><br>
>            </attribute><br>
>          </optional><br>
>          <optional><br>
>            <attribute name="loext:histogram-interval-closed"><br>
>              <data type="boolean">true</data><br>
>            </attribute><br>
>          </optional><br>
>        </loext:histogram><br>
<br>
Here you have mixed up the content in the schema with the written out <br>
XML of the document. In the written out XML, it would be<br>
       <loext:histogram-configuration loext:histogram-frequency-type="2"<br>
          loext:histogram-bin-count="10" /><br>
<br>
The attributes underflow-bin and overflow-bin are only written out, when <br>
the user sets them explicitly. Otherwise a default is used. And default <br>
values need not be written out.<br>
<br>
The attribute interval-closed too should only be written out, if it is <br>
not the default.<br>
<br>
<br>
<br>
>      </chart:series><br>
>      <!-- Define the X-axis --><br>
>      <chart:axis chart:dimension="x"><br>
>        <chart:title><br>
>          <text:p>Values</text:p><br>
        It is more likely, that the user writes the unit of the data <br>
values into the axis title.<br>
<br>
>        </chart:title><br>
>      </chart:axis><br>
>      <!-- Define the Y-axis --><br>
>      <chart:axis chart:dimension="y"><br>
>        <chart:title><br>
>          <text:p>Frequency</text:p><br>
>        </chart:title><br>
>      </chart:axis><br>
>    </chart:plot-area><br>
> </chart:chart><br>
<br>
<br>
So you want a structure were element <loext:histogram-configuration> is <br>
sub-element of the <chart:series> element. That is OK.<br>
<br>
You need to decide about the order. Where in the sequence of possible <br>
sub-elements of the <chart:series> element you want the <br>
<loext:histogram-configuration> sub-element to be written?<br>
<br>
<br>
Now about the schema. A useful source to learn more about RELAX NG is <br>
<a href="https://relaxng.org/tutorial-20011203.html" rel="noreferrer" target="_blank">https://relaxng.org/tutorial-20011203.html</a>.<br>
<br>
The <chart:series> element has no <rng:choice> for its sub-elements. <br>
Therefore a solution with combine="choice" is not possible. And as it is <br>
an element, a solution with combine="interleave" does neither work. You <br>
need to replace the existing <chart:series> element with an extended <br>
one. (See chapter 9.4 in the mentioned tutorial)<br>
<br>
For replacing, you need to copy the existing <rng:define> element, that <br>
specifies the <chart:series> element, from the file <br>
schema/odf1.4/OpenDocument-v1.4-schema.rng and add it as a new <br>
sub-element of the <rng:inlcude> element in <br>
schema/libreoffice/OpenDocument-v1.4+libreoffice-schema.rng. Then you <br>
extend it.<br>
<br>
You do not add the <loext:histogram-configuration> element directly, but <br>
add a reference to its definition. ODF uses for the name a pattern <br>
"prefix-elementname'. So in your case it would be a<br>
    <rng:ref name="loext-histogram-configuration" /><br>
Don't forget to mark it as optional.<br>
<br>
There exist no proposal to the ODF TC to integrate a chart type <br>
'histogram' in ODF and if such existed, it would last several years to <br>
integrate it. Thus you add a comment with a pointer to that bug report, <br>
where the histogram chart was initially implemented in LO.<br>
<br>
Then go to the end of the OpenDocument-v1.4+libreoffice-schema.rng file <br>
and add the definition for histogram-configuration after the last <br>
</rng:element>. Again add a comment.<br>
<br>
<br>
In regard to loext:histogram-configuration itself:<br>
1. <optional> is not here, but in <chart:series><br>
2. Your current version in Gerrit has two blocks about frequency-type. <br>
There must be only one. Please re-read the answer from Michael Stahl how <br>
to do it.<br>
<br>
Looking forward to your next version.<br>
<br>
Kind regards,<br>
Regina<br>
<br>
<br>
</blockquote></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-family:monospace"><b>Regards,</b></span></div><div><span style="font-family:monospace;color:rgb(153,0,255)"><b>Devansh</b></span><br></div></div></div>
</div>