SVGってどうなの?

このエントリーをはてなブックマークに追加
122Name_Not_Found
svg 要素に xmlns:xlink 属性って書いていいんですか?

仕様書にそういう例があるんだけど、DTD 的には駄目なはず。
でも何か「書いても valid なんだYO!」って言う人もいるし。
さっぱり訳が分かりません。ヘルプミー。
123Name_Not_Found:02/02/22 12:47 ID:pf18ptAl
>>122
なぜ駄目なの?
書けるようなDTDになってるはず。
124122:02/02/22 13:01 ID:Uc7jatHG
>>123
http://www.w3.org/TR/SVG/DTD/svg10.dtd では

<!ATTLIST svg
xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
%stdAttrs;
%testAttrs;
%langSpaceAttrs;
externalResourcesRequired %Boolean; #IMPLIED
class %ClassList; #IMPLIED
style %StyleSheet; #IMPLIED
%PresentationAttributes-All;
viewBox %ViewBoxSpec; #IMPLIED
preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
zoomAndPan (disable | magnify | zoom) 'magnify'
%graphicsElementEvents;
%documentEvents;
x %Coordinate; #IMPLIED
y %Coordinate; #IMPLIED
width %Length; #IMPLIED
height %Length; #IMPLIED
contentScriptType %ContentType; "text/ecmascript"
contentStyleType %ContentType; "text/css" >

書けません。

参考:http://validator.w3.org/check?uri=http://www.w3.org/TR/SVG/images/linking/link01.svg
125権兵衛:02/02/23 20:50 ID:OLpbgzbL
>>122
xmlns:xlinkは書けるようだ。たしか、ネームスペースで定義されているので、全てのXML文書で使えると思う(邦訳はhttp://www.doraneko.org/xml/namespace/namespace.html)。もし、間違っていたらごめん。
具体例にも書いてあった。(w3cの邦訳)
http://macosx2.ncs.gr.jp/~svg/20010904/addenglish/linking.html

ちなみに、「SVG仕様書勧告の日本語化計画」チームが翻訳しているもの。
まだ翻訳中。
http://macosx2.ncs.gr.jp/~svg/20010904/addenglish/index.html
126122:02/02/23 22:31 ID:2Zoo0RKF
>>123
勿論、整形式にはなる(= XML としては一応正しい)んですけど、
xmlns:xlink 属性であろうと、DTD 中で宣言されていなければ「妥当」ではないんですよね。
HTML でいうところの独自拡張のような状態です。

>具体例にも書いてあった。(w3cの邦訳)
その「具体例」を実際に W3C の validator にかけたのが >>124 の「参考」です。
<svg xmlns:xlink...> という記述を正当化するためには、文書型宣言を

<!DOCTYPE svg
PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/SVG/DTD/svg10.dtd" [
<!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink" >
]>

とか記述するしかないんですが。
少なくともその意味では、この DTD で svg 要素に xmlns:xlink 属性を書くのは誤りです。
「svg 要素に xmlns:xlink 属性を記述できるようにすべきだ」みたいな意見は見付けですが、
エラッタ扱いにはなっていないみたいです…。

いずれにせよ、現状での「正しい」書き方は a 要素に xmlns:xlink を記述する、
ということになります…。
127権兵衛:02/02/23 23:19 ID:QiXTGC2N
125の補足。
仕様書にソースがあったので、示しておくよ。
http://www.w3.org/TR/2001/REC-SVG-20010904/struct.html(5.3.3章の寸前にある文章。)

One simple way to provide such an XLink namespace declaration is to include an xmlns attribute for the XLink namespace on the outermost 'svg' element for content that uses XLink attributes. For example:

<svg xmlns:xlink="http://www.w3.org/1999/xlink"...>
<image xlink:href="foo.png" .../>
</svg>
128122:02/02/23 23:54 ID:2Zoo0RKF
>>127
うん、それも invalid です。

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd">
<svg xmlns:xlink="http://www.w3.org/1999/xlink"...>
<image xlink:href="foo.png" .../>
</svg>

は invalid 。

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd">
<svg ...>
<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="foo.png" .../>
</svg>

は valid 。

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" [
<!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink" >
]>
<svg xmlns:xlink="http://www.w3.org/1999/xlink"...>
<image xlink:href="foo.png" .../>
</svg>

も一応 XML としては valid だけど、SVG 1.0 という規格は満たさない(∵ DTD を変更しているから)。
129権兵衛:02/02/24 00:21 ID:H034Tvpt
>>128
http://validator.w3.org/はsvgに対応していなさそうから無視することにして
一体どんなものを用いてxmlを検証したの?
なんだか、xml関連の話題っぽいから、「xml使いの板」で質問してみて。
私はxmlをかじった程度だから。
たしかネームスペース空間(xmlns)ってDTDが必要ではなかったような。
130122:02/02/24 15:51 ID:Xc1EPu92
>>129
うい。そちらで訊いてみます。
どうもありがとうございました。