Dart Element.html преобразуется в нижний регистр (и не должен)

Я пытаюсь добавить <linearGradient> (с большой буквы G) к элементу SVG, используя Dart (dartlang.org). Результатом является элемент <lineargradient> (со строчной буквой g).
Браузеры (Firefox и Chromium) не отображают это правильно, им требуется заглавная буква G для правильной работы linearGradient.

Как использовать Dart для добавления фрагмента html без преобразования результата в нижний регистр?
Есть ли другая функция для добавления фрагментов (SVG), которую я упустил?

Мой код до сих пор:

SvgSvgElement svg = new SvgSvgElement();

SvgElement defsElement = new SvgElement.tag('defs');
svg.append(defsElement);

var str = '''
    <linearGradient id="def_2" x1="2557" y1="5281" x2="2603" y2="5253" gradientUnits="userSpaceOnUse" spreadMethod="repeat">
    <stop offset="0" stop-color="#f32b2b" />
    <stop offset="0.75993413" stop-color="#fcc0c0" />
    <stop offset="1" stop-color="#df2323" />
    </linearGradient>
    ''';

Element element = new Element.html(
    str,
    validator: new NodeValidatorBuilder()
      ..allowElement('linearGradient', attributes: ['id', 'x1', 'y1', 'x2', 'y2', 'gradientUnits', 'spreadMethod'])
      ..allowElement('stop', attributes: ['offset', 'stop-color', 'stop-opacity'])
);

defsElement.append(element);

Спасибо за любую помощь,
С уважением,
Хендрик Ян


person Hendrik Jan    schedule 22.07.2015    source источник
comment
Новичок в Dart, но я сомневаюсь, что вы можете использовать Element.html() для создания элементов SVG. Элементы будут созданы в неправильном пространстве имен. Вместо этого попробуйте использовать SvgElement.svg().   -  person Paul LeBeau    schedule 22.07.2015
comment
Спасибо. Вы, кажется, правы.   -  person Hendrik Jan    schedule 22.07.2015


Ответы (1)


После долгих проб и ошибок я, наконец, добился проб и успеха.

Похоже, что конструктор DocumentFragment.svg() специально создан для этой цели.
Вот фрагмент кода, который делает свое дело:

// make an element from the use string
DocumentFragment frag = new DocumentFragment.svg(str /*no validator here!*/);

// add to defs element
defsElement.append(frag);
person Hendrik Jan    schedule 22.07.2015