- PR -

xerces-c で already used in element のメッセージが出てエラーとなる。

投稿者投稿内容
湯豆腐
会議室デビュー日: 2004/01/14
投稿数: 5
投稿日時: 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属性を削除すると、このエラーは発生しません。

どのように対応すれば、このエラーをなくすことが出来るでしょうか。
ご回答よろしくお願いいたします。


MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-01-15 00:45
エラーメッセージどおりに, xlink:href="1129074510" の要素中の属性とだぶっているのでは。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-01-15 00:51 ]
湯豆腐
会議室デビュー日: 2004/01/14
投稿数: 5
投稿日時: 2004-01-15 11:10
引用:

MMXさんの書き込み (2004-01-15 00:45) より:
エラーメッセージどおりに, xlink:href="1129074510" の要素中の属性とだぶっているのでは。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-01-15 00:51 ]



回答ありがとうございます。
滝野です。

要素中の属性とだぶっているとは、どうゆう状態のことでしょうか?
svgファイルを見ると、use要素内にはstroke-width属性も、xlink:href属性も1つづつしかありませんでした。
また、use要素を一つにしたsvgファイルでも同じ現象になりました。

他の何かと重複しているのが原因なのでしょうか?
このエラーを無くするためのxercesのパラメタの設定又は、svgの記述方式など
なんでも良いので教えてください。

よろしくお願いいたします。
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 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

コード:
<?xml version="1.0" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="10cm" height="3cm" viewBox="0 0 100 30" version="1.1"
     xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

  <defs>
    <rect id="MyRect" width="60" height="10" />
  </defs>

  <use x="20" y="10" xlink:href="#MyRect" />

  <use xlink:href="1129074510" stroke-width="2.13" stroke="16777215" fill="2147483648" />

</svg>



Xercesのサンプル DOMPrint でParseしたらどうなりますか?

また、もう少し詳細なXMLドキュメントを提示して頂ければ、何か分かるかもしれません。
湯豆腐
会議室デビュー日: 2004/01/14
投稿数: 5
投稿日時: 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/14
投稿数: 5
投稿日時: 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>
================================================================================
ご回答よろしくお願いいたします。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-01-15 15:52
こんにちは。米山@クロノスです。

SVGについて詳しくはないのですが、

引用:

湯豆腐さんの書き込み (2004-01-15 11:10) より:
引用:

MMXさんの書き込み (2004-01-15 00:45) より:
エラーメッセージどおりに, xlink:href="1129074510" の要素中の属性とだぶっているのでは。

[ メッセージ編集済み 編集者: MMX 編集日時 2004-01-15 00:51 ]



回答ありがとうございます。
滝野です。

要素中の属性とだぶっているとは、どうゆう状態のことでしょうか?



xlink:href="1129074510" の「1129074510」っていうのはどこかで定義している要素のIDか何かでしょうか?
そうであれば、その中で「stroke-width」が定義されているのでは?
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 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 で配布されているオリジナルのものですか?
何か独自に拡張などしていませんか?

スキルアップ/キャリアアップ(JOB@IT)