Uploaded image for project: 'OASIS Open Document Format for Office Applications (OpenDocument) TC'
  1. OASIS Open Document Format for Office Applications (OpenDocument) TC
  2. OFFICE-3995

Allow native SVG instead of <office:binary-data> for images

    XMLWordPrintable

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: ODF-Next
    • Component/s: None
    • Labels:
      None
    • Proposal:
      Hide

      Add to Table 4 "XML Namespaces used by the OpenDocument schema" the row

      W3Csvg | SVG as defined in [SVG] or in a W3C Recommendation successor to it | http://www.w3.org/2000/svg

       

      ??? <W3Csvg:svg> ToDo: Decide about chapter. Can be in "10.4 Frames" similar to <office:binary-data> or in "14 Common Content" similar to <math:math>

      An <W3Csvg:svg> element is a Conforming XML-Compatible SVG Markup Fragment as described in section 2.4.3 in https://www.w3.org/TR/2016/CR-SVG2-20160915/conform.html
      In the context of an OpenDocument document the <W3Csvg:svg> element should have the default xmlns attribute xmlns="http://www.w3.org/2000/svg".
      If a <W3Csvg:svg> element is present, an xlink:href attribute in its parent element shall be ignored.

      generated content:

      The <W3Csvg:svg> element is usable within the following elements: <draw:fill-image> 16.42.6, <draw:image> 10.4.4, <style:background-image> 17.3 and <text:list-level-style-image> 16.35.

       

      16.42.6 <draw:fill-image>
      The <draw:fill-image> element specifies either a link to an image resource or contains an image in either a <office:binary-data> or a <W3Csvg:svg> child element. Producers shall neither write the <office:binary-data> nor the <W3Csvg:svg> child element if the document is represented as a package.

       

      10.4.4 <draw:image>
      generated content:
      The <draw:image> element has the following child elements: <office:binary-data> 10.4.5, <text:list> 5.3.1, <text> 5.1.3 and <W3Csvg:svg> ???.

       

      17.3 <style:background-image>
      The <style:background-image> element specifies an image as a background. It specifies either a link to an image resource or contains an image in either a <office:binary-data> or a <W3Csvg:svg> child element. Producers shall neither write the <office:binary-data> nor the <W3Csvg:svg> child element in case the document is represented as a package.

       

      16.35 <text:list-level-style-image>
      A <text:list-level-style-image> specifies a list style where list items are preceded by images. This element can only be contained in list style elements. It specifies either a link to an image resource or contains an image in either a <office:binary-data> or a <W3Csvg:svg> child element. Producers shall neither write the <office:binary-data> nor the <W3Csvg:svg> child element in case the document is represented as a package.

       

      --- OpenDocument-v1.3-schema.rng	2020-11-17 21:06:14.598948800 +0100
      +++ OpenDocument-v1.3-schema_with_svg_proposal.rng	2020-11-19 13:56:58.573137900 +0100
      @@ -11,13 +11,13 @@
               Open Document Format for Office Applications (OpenDocument) Version 1.3
               Relax-NG Schema
               OpenDocument-v1.3-schema.rng
       -->
       <!-- https://issues.oasis-open.org/browse/OFFICE-2153 -->
       
      -<rng:grammar xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"> xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"> xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"> xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0"> xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"> xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"> xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"> xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"> xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"> xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"> xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"> xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"> xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"> xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"> xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"> xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"> xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"> xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"> xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
      +<rng:grammar xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"> xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"> xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"> xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0"> xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"> xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"> xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"> xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"> xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"> xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"> xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"> xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"> xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"> xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"> xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"> xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"> xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"> xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"> xmlns:W3Csvg="http://www.w3.org/2000/svg" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
         <rng:start>
           <rng:choice>
             <rng:ref name="office-document"/>
             <rng:ref name="office-document-content"/>
             <rng:ref name="office-document-styles"/>
             <rng:ref name="office-document-meta"/>
      @@ -4973,12 +4973,13 @@
             <rng:choice>
               <rng:group>
                 <rng:ref name="common-draw-data-attlist"/>
                 <rng:empty/>
               </rng:group>
               <rng:ref name="office-binary-data"/>
      +        <rng:ref name="W3Csvg-svg"/>
             </rng:choice>
             <!-- https://issues.oasis-open.org/browse/OFFICE-3933 -->
           </rng:element>
         </rng:define>
         <rng:define name="draw-fill-image-attlist">
           <rng:interleave>
      @@ -5290,12 +5291,13 @@
         <rng:define name="draw-image">
           <rng:element name="draw:image">
             <rng:ref name="draw-image-attlist"/>
             <rng:choice>
               <rng:ref name="common-draw-data-attlist"/>
               <rng:ref name="office-binary-data"/>
      +        <rng:ref name="W3Csvg-svg"/>
             </rng:choice>
             <rng:ref name="draw-text"/>
           </rng:element>
         </rng:define>
         <rng:define name="draw-image-attlist">
           <rng:interleave>
      @@ -9620,12 +9622,13 @@
           <rng:optional>
             <rng:element name="style:background-image">
               <rng:ref name="style-background-image-attlist"/>
               <rng:choice>
                 <rng:ref name="common-draw-data-attlist"/>
                 <rng:ref name="office-binary-data"/>
      +          <rng:ref name="W3Csvg-svg"/>
                 <rng:empty/>
               </rng:choice>
             </rng:element>
           </rng:optional>
         </rng:define>
         <rng:define name="style-background-image-attlist">
      @@ -13819,12 +13822,27 @@
         </rng:define>
         <rng:define name="svg-title">
           <rng:element name="svg:title">
             <rng:text/>
           </rng:element>
         </rng:define>
      +  <rng:define name="svgMarkup">
      +    <dc:description>To avoid inclusion of complete SVG schemas and make successors of SVG 1.0 possible, anything is allowed in the schema within a W3Csvg:svg top-level element. Restrictions are contained in the specification text.</dc:description>
      +    <rng:zeroOrMore>
      +      <rng:choice>
      +        <rng:attribute>
      +          <rng:anyName/>
      +        </rng:attribute>
      +        <rng:text/>
      +        <rng:element>
      +          <rng:anyName/>
      +          <rng:ref name="svgMarkup"/>
      +        </rng:element>
      +      </rng:choice>
      +    </rng:zeroOrMore>
      +  </rng:define>
         <rng:define name="tab-cycles">
           <rng:choice>
             <rng:value>records</rng:value>
             <rng:value>current</rng:value>
             <rng:value>page</rng:value>
           </rng:choice>
      @@ -17339,12 +17357,13 @@
           </rng:interleave>
         </rng:define>
         <rng:define name="text-list-level-style-image-attr">
           <rng:choice>
             <rng:ref name="common-draw-data-attlist"/>
             <rng:ref name="office-binary-data"/>
      +      <rng:ref name="W3Csvg-svg"/>
           </rng:choice>
         </rng:define>
         <rng:define name="text-list-level-style-number-attr">
           <rng:interleave>
             <rng:optional>
               <rng:attribute name="text:style-name">
      @@ -18265,12 +18284,17 @@
           <rng:choice>
             <rng:value>top</rng:value>
             <rng:value>center</rng:value>
             <rng:value>bottom</rng:value>
           </rng:choice>
         </rng:define>
      +  <rng:define name="W3Csvg-svg">
      +    <rng:element name="W3Csvg:svg">
      +      <rng:ref name="svgMarkup"/>
      +    </rng:element>
      +  </rng:define>
         <rng:define name="xforms-bind-attlist">
           <rng:optional>
             <rng:attribute name="xforms:bind">
               <rng:ref name="string"/>
             </rng:attribute>
           </rng:optional>
      

       

      Show
      Add to Table 4 "XML Namespaces used by the OpenDocument schema" the row W3Csvg | SVG as defined in [SVG] or in a W3C Recommendation successor to it | http://www.w3.org/2000/svg   ??? <W3Csvg:svg> ToDo: Decide about chapter. Can be in "10.4 Frames" similar to <office:binary-data> or in "14 Common Content" similar to <math:math> An <W3Csvg:svg> element is a Conforming XML-Compatible SVG Markup Fragment as described in section 2.4.3 in https://www.w3.org/TR/2016/CR-SVG2-20160915/conform.html In the context of an OpenDocument document the <W3Csvg:svg> element should have the default xmlns attribute xmlns="http://www.w3.org/2000/svg" . If a <W3Csvg:svg> element is present, an xlink:href attribute in its parent element shall be ignored. generated content: The <W3Csvg:svg> element is usable within the following elements: <draw:fill-image> 16.42.6, <draw:image> 10.4.4, <style:background-image> 17.3 and <text:list-level-style-image> 16.35.   16.42.6 <draw:fill-image> The <draw:fill-image> element specifies either a link to an image resource or contains an image in either a <office:binary-data> or a <W3Csvg:svg> child element. Producers shall neither write the <office:binary-data> nor the <W3Csvg:svg> child element if the document is represented as a package.   10.4.4 <draw:image> generated content: The <draw:image> element has the following child elements: <office:binary-data> 10.4.5, <text:list> 5.3.1, <text > 5.1.3 and <W3Csvg:svg> ??? .   17.3 <style:background-image> The <style:background-image> element specifies an image as a background. It specifies either a link to an image resource or contains an image in either a <office:binary-data> or a <W3Csvg:svg> child element. Producers shall neither write the <office:binary-data> nor the <W3Csvg:svg> child element in case the document is represented as a package.   16.35 <text:list-level-style-image> A <text:list-level-style-image> specifies a list style where list items are preceded by images. This element can only be contained in list style elements. It specifies either a link to an image resource or contains an image in either a <office:binary-data> or a <W3Csvg:svg> child element. Producers shall neither write the <office:binary-data> nor the <W3Csvg:svg> child element in case the document is represented as a package.   --- OpenDocument-v1.3-schema.rng 2020-11-17 21:06:14.598948800 +0100 +++ OpenDocument-v1.3-schema_with_svg_proposal.rng 2020-11-19 13:56:58.573137900 +0100 @@ -11,13 +11,13 @@ Open Document Format for Office Applications (OpenDocument) Version 1.3 Relax-NG Schema OpenDocument-v1.3-schema.rng --> <!-- https://issues.oasis-open.org/browse/OFFICE-2153 --> - <rng:grammar xmlns:anim = "urn:oasis:names:tc:opendocument: xmlns:animation:1.0" > xmlns:chart = "urn:oasis:names:tc:opendocument: xmlns:chart:1.0" > xmlns:config = "urn:oasis:names:tc:opendocument: xmlns:config:1.0" > xmlns:db = "urn:oasis:names:tc:opendocument: xmlns:database:1.0" > xmlns:dc = "http://purl.org/dc/elements/1.1/" xmlns:dr3d = "urn:oasis:names:tc:opendocument: xmlns:dr3d:1.0" > xmlns:draw = "urn:oasis:names:tc:opendocument: xmlns:drawing:1.0" > xmlns:fo = "urn:oasis:names:tc:opendocument: xmlns:xsl-fo-compatible:1.0" > xmlns:form = "urn:oasis:names:tc:opendocument: xmlns:form:1.0" > xmlns:grddl = "http://www.w3.org/2003/g/data-view#" xmlns:math = "http://www.w3.org/1998/Math/MathML" xmlns:meta = "urn:oasis:names:tc:opendocument: xmlns:meta:1.0" > xmlns:number = "urn:oasis:names:tc:opendocument: xmlns:datastyle:1.0" > xmlns:office = "urn:oasis:names:tc:opendocument: xmlns:office:1.0" > xmlns:presentation = "urn:oasis:names:tc:opendocument: xmlns:presentation:1.0" > xmlns:rng = "http://relaxng.org/ns/structure/1.0" xmlns:script = "urn:oasis:names:tc:opendocument: xmlns:script:1.0" > xmlns:smil = "urn:oasis:names:tc:opendocument: xmlns:smil-compatible:1.0" > xmlns:style = "urn:oasis:names:tc:opendocument: xmlns:style:1.0" > xmlns:svg = "urn:oasis:names:tc:opendocument: xmlns:svg-compatible:1.0" > xmlns:table = "urn:oasis:names:tc:opendocument: xmlns:table:1.0" > xmlns:text = "urn:oasis:names:tc:opendocument: xmlns:text:1.0" > xmlns:xforms = "http://www.w3.org/2002/xforms" xmlns:xhtml = "http://www.w3.org/1999/xhtml" xmlns:xlink = "http://www.w3.org/1999/xlink" datatypeLibrary= "http://www.w3.org/2001/XMLSchema-datatypes" > + <rng:grammar xmlns:anim = "urn:oasis:names:tc:opendocument: xmlns:animation:1.0" > xmlns:chart = "urn:oasis:names:tc:opendocument: xmlns:chart:1.0" > xmlns:config = "urn:oasis:names:tc:opendocument: xmlns:config:1.0" > xmlns:db = "urn:oasis:names:tc:opendocument: xmlns:database:1.0" > xmlns:dc = "http://purl.org/dc/elements/1.1/" xmlns:dr3d = "urn:oasis:names:tc:opendocument: xmlns:dr3d:1.0" > xmlns:draw = "urn:oasis:names:tc:opendocument: xmlns:drawing:1.0" > xmlns:fo = "urn:oasis:names:tc:opendocument: xmlns:xsl-fo-compatible:1.0" > xmlns:form = "urn:oasis:names:tc:opendocument: xmlns:form:1.0" > xmlns:grddl = "http://www.w3.org/2003/g/data-view#" xmlns:math = "http://www.w3.org/1998/Math/MathML" xmlns:meta = "urn:oasis:names:tc:opendocument: xmlns:meta:1.0" > xmlns:number = "urn:oasis:names:tc:opendocument: xmlns:datastyle:1.0" > xmlns:office = "urn:oasis:names:tc:opendocument: xmlns:office:1.0" > xmlns:presentation = "urn:oasis:names:tc:opendocument: xmlns:presentation:1.0" > xmlns:rng = "http://relaxng.org/ns/structure/1.0" xmlns:script = "urn:oasis:names:tc:opendocument: xmlns:script:1.0" > xmlns:smil = "urn:oasis:names:tc:opendocument: xmlns:smil-compatible:1.0" > xmlns:style = "urn:oasis:names:tc:opendocument: xmlns:style:1.0" > xmlns:svg = "urn:oasis:names:tc:opendocument: xmlns:svg-compatible:1.0" > xmlns:table = "urn:oasis:names:tc:opendocument: xmlns:table:1.0" > xmlns:text = "urn:oasis:names:tc:opendocument: xmlns:text:1.0" > xmlns:W3Csvg = "http://www.w3.org/2000/svg" xmlns:xforms = "http://www.w3.org/2002/xforms" xmlns:xhtml = "http://www.w3.org/1999/xhtml" xmlns:xlink = "http://www.w3.org/1999/xlink" datatypeLibrary= "http://www.w3.org/2001/XMLSchema-datatypes" > <rng:start> <rng:choice> <rng:ref name= "office-document" /> <rng:ref name= "office-document-content" /> <rng:ref name= "office-document-styles" /> <rng:ref name= "office-document-meta" /> @@ -4973,12 +4973,13 @@ <rng:choice> <rng:group> <rng:ref name= "common-draw-data-attlist" /> <rng:empty/> </rng:group> <rng:ref name= "office-binary-data" /> + <rng:ref name= "W3Csvg-svg" /> </rng:choice> <!-- https://issues.oasis-open.org/browse/OFFICE-3933 --> </rng:element> </rng:define> <rng:define name= "draw-fill-image-attlist" > <rng:interleave> @@ -5290,12 +5291,13 @@ <rng:define name= "draw-image" > <rng:element name= "draw:image" > <rng:ref name= "draw-image-attlist" /> <rng:choice> <rng:ref name= "common-draw-data-attlist" /> <rng:ref name= "office-binary-data" /> + <rng:ref name= "W3Csvg-svg" /> </rng:choice> <rng:ref name= "draw-text" /> </rng:element> </rng:define> <rng:define name= "draw-image-attlist" > <rng:interleave> @@ -9620,12 +9622,13 @@ <rng:optional> <rng:element name= "style:background-image" > <rng:ref name= "style-background-image-attlist" /> <rng:choice> <rng:ref name= "common-draw-data-attlist" /> <rng:ref name= "office-binary-data" /> + <rng:ref name= "W3Csvg-svg" /> <rng:empty/> </rng:choice> </rng:element> </rng:optional> </rng:define> <rng:define name= "style-background-image-attlist" > @@ -13819,12 +13822,27 @@ </rng:define> <rng:define name= "svg-title" > <rng:element name= "svg:title" > <rng:text/> </rng:element> </rng:define> + <rng:define name= "svgMarkup" > + <dc:description> To avoid inclusion of complete SVG schemas and make successors of SVG 1.0 possible, anything is allowed in the schema within a W3Csvg:svg top-level element. Restrictions are contained in the specification text. </dc:description> + <rng:zeroOrMore> + <rng:choice> + <rng:attribute> + <rng:anyName/> + </rng:attribute> + <rng:text/> + <rng:element> + <rng:anyName/> + <rng:ref name= "svgMarkup" /> + </rng:element> + </rng:choice> + </rng:zeroOrMore> + </rng:define> <rng:define name= "tab-cycles" > <rng:choice> <rng:value> records </rng:value> <rng:value> current </rng:value> <rng:value> page </rng:value> </rng:choice> @@ -17339,12 +17357,13 @@ </rng:interleave> </rng:define> <rng:define name= "text-list-level-style-image-attr" > <rng:choice> <rng:ref name= "common-draw-data-attlist" /> <rng:ref name= "office-binary-data" /> + <rng:ref name= "W3Csvg-svg" /> </rng:choice> </rng:define> <rng:define name= "text-list-level-style-number-attr" > <rng:interleave> <rng:optional> <rng:attribute name= "text:style-name" > @@ -18265,12 +18284,17 @@ <rng:choice> <rng:value> top </rng:value> <rng:value> center </rng:value> <rng:value> bottom </rng:value> </rng:choice> </rng:define> + <rng:define name= "W3Csvg-svg" > + <rng:element name= "W3Csvg:svg" > + <rng:ref name= "svgMarkup" /> + </rng:element> + </rng:define> <rng:define name= "xforms-bind-attlist" > <rng:optional> <rng:attribute name= "xforms:bind" > <rng:ref name= "string" /> </rng:attribute> </rng:optional>  

      Description

      Currently applications need to use the <office:binary-data> element to store an embedded SVG-image, in case they will save to a single XML file (flat ODF). That means that the SVG-image has to be encoded to BASE64. But an SVG-image is an XML-document and therefore it would be possible to use it directly, similar as done with MathML objects. The proposal has the changes that allow use of native SVG for images where now <office:binary-data> is needed.

      Remarks to the proposal:
      The namespace attribute in element <svg:svg> is needed, because OpenDocument producer bind the prefix "svg" to the namespace "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0".

      The referenced document is a Candidate Recommendation. In case it will be released until the release of ODF 1.4, the URL has to be adapted.

      I'm not sure, whether the restriction "at most one" is correctly described by the schema.

      My proposal is not, to use <svg:svg> instead of the <draw:image>, because then the useful attributes draw:mime-type and draw:filter-name, and using <text> element for e.g. a caption would not be possible. And the proposal is not about adding an <svg:svg> element as drawing object on same level as e.g. <draw:rect>.

      Defining svg-svg follows the way it is done for math-math.

      I'm not sure, whether to force xlink in case of package format. That needs discussion.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              regina.henschel Regina Henschel
            • Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated: