Как я могу встроить SVG в JSF 2 Facelets (XHTML)? - PullRequest
1 голос
/ 23 октября 2011

У меня есть приложение JSF 2, которое создает контент SVG.Как я могу встроить его в выходной HTML?

Сгенерированный SVG выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg xmlns:xlink="http://www.w3.org/1999/xlink" 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:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg">
  <!--Generated by the Batik Graphics2D SVG Generator-->
  <defs id="genericDefs"/>
  <g/>
</svg>

Я хочу этот вывод прямо на визуализированной HTML-странице.Я не хочу использовать тег <object>, потому что я хочу иметь возможность манипулировать содержимым svg на клиенте с помощью javascript.

Результат должен выглядеть следующим образом:

<div id="svgcontent">
  <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 50" id="myDIVBG">
    <defs>
    [...]
  </svg>
</div>

Выше правильно отображается в моем браузере, я просто не могу получить XML в HTML без экранирования строки XML.

Ответы [ 2 ]

4 голосов
/ 23 октября 2011

Я всегда редактировал SVG-файлы с помощью такого инструмента, как inkscape, и включал их в нужное место с помощью тега ui: include . Как это:

<ui:include src="images/somedrawing.svg" />

Включенный файл начинается с тега xml , за которым следует тег svg и остальная часть чертежа. Размер блока на странице будет отображаться в соответствии с атрибутами viewPort тега svg.

Это работает только с HTML 5, поэтому убедитесь, что ваш файл начинается с

<!DOCTYPE html>
0 голосов
/ 24 октября 2011

Я никогда не использовал JSF, но поиск "JSF disable escaping" показал следующее:

<h:outputText value="???" escape="false" /> 
...