<svgref>

Use the <svgref> element to reference a non-DITA XML document that contains scalable vector graphic (SVG) markup. This element enables you to use the markup by reference.

The reference must be to a SVG <svg> element. The reference can be one of the following:

  • A URI that addresses an XML document; the XML document has a SVG <svg> element as the root element
  • A URI that addresses an XML document and contains a fragment identifier that is the XML ID of a <svg> element within the document

Processors SHOULD process the SVG as though the <svg> element had occurred directly in the content of the containing <svg-container> element.

The reference can be direct, using the @href attribute, or indirect, using the @keyref attribute. For indirect referencing, only the key name should be specified. The ID of the <svg> element must be specified as part of the value for the @href attribute on the key definition.

For example, to refer to the <svg> element with the @id of "svg-fragment-02" within a larger document using a key reference, you would define the key in the following way:

<keydef 
  keys="svg-fragment-0002" 
  href="svg/svg-library.xml#svg-fragment-02"
/>
You would refer to this key using just the key name:
<svg-container>
  <svgref keyref="svg-fragment-0002"/>
</svg-container>

Content models

See appendix for information about this element in OASIS document type shells.

Inheritance

+ topic/xref svg-d/svgref

Example

Here is a reference to an <svg> element that is the root element of its containing document:

<fig>
  <title>Figure With SVG Container</title>
  <svg-container>
    <svgref 
       href="media/svg/svg-graphic-01.xml" 
       format="svg"
    />
  </svg-container>
</fig>

The svg-graphic-01.xml file contains the following content. Note that the <svg> element sets the SVG namespace as the default namespace, so there are no namespace prefixes on the SVG markup:

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
  width="100"
  height="100">
  <defs>
    <filter
      id="f1"
      x="0"
      y="0">
      <feGaussianBlur
        in="SourceGraphic"
        stdDeviation="15"/>
    </filter>
  </defs>
  <rect
    width="90"
    height="90"
    stroke="green"
    stroke-width="3"
    fill="yellow"
    filter="url(#f1)"/>
</svg>

Here is a reference to a specific <svg> element in a containing XML file:

<fig>
  <title>Figure with SVG Container</title>
  <svg-container>
    <svgref 
      href="media/svg/svg-library.xml#frag-0001" 
    />
  </svg-container>
</fig>

The svg-library.xml file contains the following content:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <part>
   <svg id="frag-0001"
     xmlns="http://www.w3.org/2000/svg"
     width="100"
     height="100">
     <defs>
        <filter
          id="f1"
          x="0"
          y="0">
          <feGaussianBlur
            in="SourceGraphic"
            stdDeviation="15"/>
        </filter>
      </defs>
      <rect
        width="90"
        height="90"
        stroke="green"
        stroke-width="3"
        fill="yellow"
        filter="url(#f1)"/>
    </svg>
    <svg id="frag-0002"
       width="4in" height="6in" version="1.1"
          >
          <circle cx="150" cy="200" r="100" fill="url(#grad_blue)" >
            <animate attributeName="r" begin="Go.click" end="Stop.click" dur="4s"  
              values="100; 0; 100" repeatCount="indefinite"/>
          </circle>
          <radialGradient id="grad_blue" cx="20%" cy="20%" r="100%" fx="30%" fy="30%">
            <stop stop-color="white" offset="0"/>
            <stop stop-color="blue" offset="25%"/>
            <stop stop-color="rgb(0,0,192)" offset="50%"/>
            <stop stop-color="rgb(0,0,127)" offset="70%"/>
            <stop stop-color="rgb(0,0,64)" offset="85%"/>
            <stop stop-color="rgb(0,0,0)" offset="100%"/>
          </radialGradient>
          <g id="Go">
            <rect x="70" y="320" height="40" width="80" fill="aqua"/>
            <text x="90" y="350" font-size="30" fill="green">Go </text>
          </g>
          <g id="Stop">
            <rect x="160" y="320" height="40" width="80" fill="aqua"/>
            <text x="170" y="350" font-size="30" fill="red">Stop</text>
          </g>
        </svg>
  </part>
</root>

Attributes

The following attributes are available on this element: Universal attribute group, @outputclass, and @keyref. This element also uses Link relationship attribute group, with narrowed definitions of @href and @format (given below).

@href
Reference to the <svg> element to be used. If the <svg> element is the root element of the referenced resource, then no fragment identifier is required, otherwise, a fragment identifier must be specified, where the fragment identifier is the XML ID of the <svg> element to be used. This attribute is not required, but must be specified if @keyref is not specified. See The @href attribute for detailed information on supported values and processing implications.
@format
The data format of the resource.. For SVG the format should be "svg", which is the default value for @format on this element.

Was this helpful?