Re: Trouble extending line element

Hi, Ben-

What Wade said.

http://www.w3.org/TR/SVG11/extend.html#PrivateElementsAndAttribute

Regards-
-Doug Schepers
W3C Team Contact, SVG and WebApps WGs


G. Wade Johnson wrote (on 4/14/09 7:57 AM):
> Instead of going the DTD route, you might want to try using a separate
> namespace. That's supported by all of the viewers I'm aware of (and I'm
> sure I'll be corrected if I forgot any<grin/>).
>
> For example, see the changes I've made below.
>
>
> On Tue, 14 Apr 2009 10:11:13 +0100
> "Ben Temperton"<benmpe@pml.ac.uk>  wrote:
>
>>  Hi there,
>>  I'm currently trying to extend the SVG DTD to allow me to have a new
>>  element in the<line>  element like this:
>>  <?xml version="1.0" encoding="UTF-8"?>
>>  <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN'
>>  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
>>  <!ENTITY % SVG.line.extra.content "| hit">
>>  <!ELEMENT hit (queryId, queryString)>
>>  <!ELEMENT queryId (#PCDATA)>
>>  <!ELEMENT queryString (#PCDATA)>  ]>
>>  <svg xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>       xmlns:xalan="http://xml.apache.org/xalan"
>>       xmlns:xlink="http://www.w3.org/1999/xlink"
>>       xmlns="http://www.w3.org/2000/svg"
>         xmlns:bt="http://pml.ac.uk/bens_extensions"
>>       style="fill-opacity:1; color-rendering:auto;
>>  color-interpolation:auto; stroke:black; text-rendering:auto;
>>  stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1;
>>  shape-rendering:auto; fill:black; stroke-dasharray:none;
>>  font-weight:normal; stroke-width:1; font-family:'Dialog';
>>  font-style:normal; stroke-linejoin:miter; font-size:12;
>>  stroke-dashoffset:0; image-rendering:auto;"
>>       xsi:schemaLocation="http://www.w3.org/1999/xlink "
>>       width="200"
>>       height="100">
>>      <text x="5" y="15" style="font-size:10; font-family:serif;
>>  stroke:none;" xml:space="preserve">Test matrix</text>
>>      <rect x="0" y="30" width="10000" height="70" fill="black"
>>  stroke="black" stroke-width="1"/>
>>      <g stroke="white">
>>          <line y2="50" style="fill:none;" x1="100" x2="400" y1="50">
>                <bt:hit>
>                    <bt:queryId>123123131232132</bt:queryId>
>                    <bt:queryString>AAAATGACGAGAGAGAGAGAGAGAG"></bt:queryString>
>                </bt:hit>
>>          </line>
>>      </g>
>>  </svg>
>>
>>  but it's failing to accept the XML as a valid SVG when using Batik's
>>  Java JSVGCanvas object. However, Mozilla firefox can view the image
>>  fine.
>>
>>  Can someone let me know what I'm doing wrong?
>
> The big problem is that with the DTD method you are adding new elements
> to the SVG namespace. When the viewer hits one, it has no idea how to
> render the new element.
>
> On the other hand, if the elements are in a different namespace, the
> viewer can safely ignore them. It can assume that those elements are
> meant for someone else to deal with.
>
> I've used this tactic before with some success. In fact, you can even
> access these elements through scripting, so they can contain
> information you use to modify the SVG further later.
>
> G. Wade

Received on Tuesday, 14 April 2009 12:18:18 UTC