- - PR -
xerces-c で already used in element のメッセージが出てエラーとなる。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-14 16:47
お世話になっております。
滝野と申します。 質問がありますのでご回答よろしくお願いいたします。 Microsoft Visual Stadio C++6,0で Xerces-c2_4_0を使用し、XMLをParseするプログラムを作成しています。 しかし、あるxmlを読み込むと以下のメッセージが出力し エラーとなります。 =============================================================== Fatal Error at file map.svg, line 14, char 72 Message: The attribute 'stroke-width' is already used in element 'use' map.svg Created =============================================================== use要素には、stroke-width属性が既に定義されている(二重に定義) というメッセージであると思うのですが、 どのuse要素にもstroke-widthは1つしか定義していませんでした。 svgファイルのuse要素は <use xlink:href="1129074510" stroke-width="2.13" stroke="16777215" fill="2147483648"></use> という内容になっています。 stroke-width属性の前のxlink:href属性を削除すると、このエラーは発生しません。 どのように対応すれば、このエラーをなくすことが出来るでしょうか。 ご回答よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-01-15 00:45
エラーメッセージどおりに, xlink:href="1129074510" の要素中の属性とだぶっているのでは。[ メッセージ編集済み 編集者: MMX 編集日時 2004-01-15 00:51 ] | ||||||||
|
投稿日時: 2004-01-15 11:10
回答ありがとうございます。 滝野です。 要素中の属性とだぶっているとは、どうゆう状態のことでしょうか? svgファイルを見ると、use要素内にはstroke-width属性も、xlink:href属性も1つづつしかありませんでした。 また、use要素を一つにしたsvgファイルでも同じ現象になりました。 他の何かと重複しているのが原因なのでしょうか? このエラーを無くするためのxercesのパラメタの設定又は、svgの記述方式など なんでも良いので教えてください。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-01-15 15:09
こんにちは。
VC++6.0 で XML4C 5.2(Xerces-c 2.2のIBM版)を使っています。 SVGの文法には詳しくないので、SVGのサンプルに、湯豆腐さんがエラーの発生するという use 要素を単純に追加した下記のXMLドキュメントを、Xercesのサンプル DOMPrintを使って 解析してみましたが、特にエラーは発生しませんでした。 C:\>DOMPrint -v=always -n svg.xml
Xercesのサンプル DOMPrint でParseしたらどうなりますか? また、もう少し詳細なXMLドキュメントを提示して頂ければ、何か分かるかもしれません。 | ||||||||
|
投稿日時: 2004-01-15 15:40
chack様MMX様ご回答ありがとうございます。
本当に助かります。 DOMPrintで確認して見ましたが、同じ結果でした。 以下がそのSVGファイルです。 ちなみにuse要素から、xlink:href属性を削除すると正常に動作しました。 ================================================================================ <?xml version="1.0" encoding="UTF-8"?> <svg width="200.0" height="200.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" cx="0.0" cy="0.0" scale="4000" unit="D/Tokyo" layername="abc"> <g id="100"><use xlink:href="112912345" stroke-width="2.13" stroke="16777215" fill="2147483648"></use></g> </svg> ================================================================================ ご回答よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-01-15 15:40
chack様MMX様ご回答ありがとうございます。
本当に助かります。 DOMPrintで確認して見ましたが、同じ結果でした。 以下がそのSVGファイルです。 ちなみにuse要素から、xlink:href属性を削除すると正常に動作しました。 ================================================================================ <?xml version="1.0" encoding="UTF-8"?> <svg width="200.0" height="200.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" cx="0.0" cy="0.0" scale="4000" unit="D/Tokyo" layername="abc"> <g id="100"><use xlink:href="112912345" stroke-width="2.13" stroke="16777215" fill="2147483648"></use></g> </svg> ================================================================================ ご回答よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-01-15 15:52
こんにちは。米山@クロノスです。
SVGについて詳しくはないのですが、
xlink:href="1129074510" の「1129074510」っていうのはどこかで定義している要素のIDか何かでしょうか? そうであれば、その中で「stroke-width」が定義されているのでは? | ||||||||
|
投稿日時: 2004-01-15 17:32
こんにちは。
湯豆腐さんの提示されたエラーとなるXMLドキュメントを私の環境でDOMPrintを使って Parseしてみましたが、エラーなく整形式なXMLドキュメントとして解析されました。 ちなみに、このXMLドキュメントではDTDもSchemaも指定されていませんので、 DOMPrintのコマンドラインオプションは、 C:\>DOMPrint -n map.svg となりますが、大丈夫でしょうか? -v=always を指定してしまうと妥当性検証も行ってしまうので、たくさんエラーが出ます。 と言っても、xlink:href属性を削除すると問題なくなるのは変ですね・・・ Xerces-c が XLink拡張されていて、xlink:hrefの属性値をURIとして参照解決しようと しているのなら、その参照先("112912345"で示す要素)が怪しいのですが・・・ お使いになっているXerces-cパーサは xml.apache.org で配布されているオリジナルのものですか? 何か独自に拡張などしていませんか? |