2017-12-15 11 views
0

私は以前、Eagle(PCB CAD)ファイルをSVGに変換するXSLT "プログラム"を作成しました。 FirefoxとInternet Explorerで動作します。Chromeのxsltプロセッサに問題がありますか?時にはブランク出力

ただし、現在のバージョンのChromeとChromiumでは、動作しないことがあります。

この1つは動作し、SVGなどの概略を示しています。

http://www.tu-chemnitz.de/~heha/enas/UDX5114N.zip/sm5.sch?as=SVG

どちらの例のURL:

http://www.tu-chemnitz.de/~heha/enas/STS%20Multiplex/MFC-Verteiler.zip/MFC4.sch?as=SVG

は非常に類似しており、さらに短いものの、この1つは空白の画面が表示されます本物のEagle XMLスケマティックファイルをダウンロードして、ブラウザにJavascriptなしでSVGへの変換をさせてください。

可能であれば、問題をどのように追跡できるか誰かが手掛かりを持っていますか? (ChromeのXSLTデバッガのようなものがありますか?)

重要な場合は、Windows 7 64ビットドイツ語を使用します。

+0

ChromeのXSLTプロセッサはlibxsltなので、xsltprocやlibxsltを組み込んだツールを使用して、ブラウザ外での変換をテストできます。 –

+0

いいえ、xsltprocのコメント: xsltApplyXSLTTemplate:潜在的な無限テンプレート再帰が検出されました。 maxTemplateVars(--maxvars)を調整して、変数/ params(現在は15000に設定)の最大数を増やすことができます。 – user2699548

+0

恩赦:Stackoverflowは、最後の答えの重要な部分を削除しました。 ...成功した "--maxvars 1000000"を試しました。そこで、次の質問です:どのように私はクロムのxsltprocの呼び出しにそのパラメータを注入できますか? – user2699548

答えて

1

Chromeで問題があるとは確信していませんが、スタイルシートが埋め込みSVGでHTMLを生成し、SVGドキュメントを出力しようとしますが、SVG名前空間をルート要素と一部のコンテナ要素コンテンツ要素は、名前空間なしで作成されます。最終的には<text font-size="2.1336" transform="translate(13.97,154.94)scale(1,-1)" text-anchor="end" fill="#088" xmlns="">black</text>となります。ですから、XSLTを使ってSVG要素を出力したい場合は、正しい名前空間で出力するようにしてください。 <text xmlns="http://www.w3.org/2000/svg">..</text>名前空間は、スタイルシートのリテラル結果要素の祖先に存在するか、または<xsl:element namespace="http://www.w3.org/2000/svg" name="text">...</xsl:element>を使用することもできます。この場合、ネームスペース宣言は、スタイルシートのxsl:elementの祖先要素にも存在できます。別のテンプレートで生成した結果ツリーの祖先要素に名前空間を置くと、名前空間のない要素が作成されます。

Firefoxの場合、スタイルシートの動作は異なっており、接頭辞がルート上の既存の名前空間宣言とともに接頭辞と一緒に正しい名前空間に配置されているSVG要素にプレフィックス(name="{$svgpre}g")を挿入します。なぜIEとEdgeがHTMLラッパーにすべてを入れ、HTML5の方法で名前空間を無視しているかのように、結果をレンダリングする理由は不明です。

0

は、私は私のXSLTを知っている:Internet ExplorerのFirefox用の生成SVG名前空間とない生成SVGの名前空間は、両方のブラウザ上で動作するようにそれを持って来るために唯一方法でした。さらに、最初の例がChrome(と私の回路図の大部分)でうまく動作するので、Chromeは名前空間の不足に問題はなく、IEと互換性があり、2番目の例がうまくいかない別の理由があると思います。

関連する問題