2012-02-10 13 views
5

私はSVG画像の束にマーカを統一しようとしています。私の問題は、マーカー定義で外部参照を行うことができないということです。それは質問How to reference external svg file in svg correctly?に接続されているかもしれませんが、リンクはまだありません。 (b.svgを参照しようとしている)外部定義されたマーカーはSVGには表示されません

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> 
    <defs> 
     <circle id="b" r="6" stroke="black" fill="green" /> 
     <marker id="b_end" 
      orient="auto" 
      style="overflow:visible"> 
      <use xlink:href="#b" /> 
     </marker> 
    </defs> 
</svg> 

a.svg:

b.svg(参照されている):

は、私は私の問題を示すために、少し例を作っ

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> 
    <defs> 
     <circle id="a" r="6" stroke="black" fill="yellow" /> 
     <marker id="a_end" 
      orient="auto" 
      style="overflow:visible"> 
      <use xlink:href="#a" /> 
     </marker> 
     <marker id="b_end" 
      orient="auto" 
      style="overflow:visible"> 
      <use xlink:href="b.svg#b" /> 
     </marker> 
    </defs> 
    <path d="m 10,10 20,20" style="marker-end:url(#a_end)" stroke="black" /> 
    <path d="m 40,10 20,20" style="marker-end:url(#b_end)" stroke="black" /> 
    <path d="m 70,10 20,20" style="marker-end:url(b.svg#b_end)" stroke="black" /> 
</svg> 

ご覧のとおり、最初の行のマーカーは内部ID(実際にはマーカーに参照があるので2つ)を使って参照しました。これは正常に動作します。

2行目の外部パスに内部マーカー定義を使用しました。それは動作しません。 (行が表示され、マーカーは表示されません)

3行目に外部マーカーを使用しました。どちらもうまくいきません。

少なくとも、スタイル内の参照が解決されていないときに外部コンテンツがホストDOMにないことが問題です。

いいですが、どうすればいいですか? SVGのマーカーの外部要素をどのように参照できますか?

+0

SafariまたはChromeでサポートしていない外部参照はまだありません。しかしこれはFirefoxとOperaでもうまくいくはずです。 –

+0

申し訳ありませんが、この詳細が欠落しています。私の最終目標はDocBookから正しいPDFを生成することです:)しかし、これはIEとFirefoxでも運が無ければ試しました。 –

+0

あなたは正しいです、私が掲載した正確なコードはOperaでうまく動作します!私は前にそれを試していない。私はまだ結論を欠いている。私のSVNコードは正しいですか?それは現在のレンダラからのサポートが遅れていますか? –

答えて

0

私の元の質問に私の実験とロバートによって残されたコメントに基づいて答えることができると思います。

私はSVGでべき作品を書いたコードとそれはオペラやFirefoxで作業を行います。さらに、Apache FOPを使用してPDFを生成する際にも役立ちます。

唯一の問題は、IE、Chrome、Safariでは外部参照が機能しないことです。私はスタイル定義からの外部参照がFirefoxで実装されているかどうか分かりません:7.0では動作しませんが、11で動作します。

関連する問題