目次詳細目次前章次章要素属性プロパティ

付録 B: SVG DOM (文書オブジェクトモデル)

目次

この付録は規定である。

B.1 SVG DOM 概観

この付録は、 SVG DOM についての概要, および SVG DOM と 文書オブジェクトモデル (DOM) レベル 2 Core 仕様 [DOM2] との関係について述べる。 SVG 仕様の特定のセクションに固有の SVG DOM インタフェースは、次に挙げる,この仕様の対応する章の末尾に定義されている: This appendix provides an introduction to the SVG DOM and discusses the relationship of the SVG DOM with the Document Object Model (DOM) Level 2 Core Specification [DOM2]. The specific SVG DOM interfaces that correspond to particular sections of the SVG specification are defined at the end of corresponding chapters in this specification, as follows:

SVG DOM は DOM Level 2 と互換性を保つように構築されている。 The SVG DOM builds upon and is compatible with DOM Level 2. In particular:

DOM アプリケーションは、 DOMImplementation インタフェースの hasFeature メソッドを利用してこの節で挙げたインタフェースのサポートの有無を確かめられる。 可用なインタフェースの一覧は hasFeature メソッドに渡す特能文字列 に与えられている。 A DOM application can use the hasFeature method of the DOMImplementation interface to verify that the interfaces listed in this section are supported. The list of available interfaces is provided in section Feature strings for the hasFeature method call.

例えば SVGRectElementSVGAnimatedLength ry など、属性に直接対応するすべての SVG DOM オブジェクトは live である。 この事は、属性における変化が,直ちに対応する SVG DOM オブジェクトに反映することを意味する。 All SVG DOM objects that directly correspond to an attribute, e.g. the SVGAnimatedLength ry in an SVGRectElement, are live. This means that any changes made to the attribute are immediately reflected in the corresponding SVG DOM object.

B.1.1 SVG DOM オブジェクトの初期化

SVG DOM では、文書マークアップにおいて明示的に指定されていない属性に対するアクセスも許容される。 これが生じた際には、適切なオブジェクトが作成され,初期化される。 この新たに構築されたオブジェクトは、変更が加えられない限り,描画には影響しない。 最初の変更が生じた時点で、オブジェクトは対応する属性に対する変更が直ちにオブジェクトに反映されるように live になる。 The SVG DOM allows attributes to be accessed even though they haven't been specified explicitly in the document markup. When this happens an appropriate object is created, initialized and returned. This newly constructed object does not affect rendering until it is modified for the first time. After the first modification the object becomes live, such that any modifications made to the corresponding attribute are immediately reflected in the object.

例えば,文書において指定されていなかった x 属性に対応する rectElement.x.baseVal がアクセスされた場合、返される SVG DOM オブジェクトは,値 0 利用単位 を表現する。 For example, if rectElement.x.baseVal is accessed and the ‘x’ attribute was not specified in the document, the returned SVG DOM object would represent the value 0 user units.

属性が既定値を持つ場合、返される SVG DOM オブジェクトにはその値が反映されていなければならない。 他のすべての場合、オブジェクトは下に述べるように初期化される。 下に挙げられていない SVG DOM インタフェースについては、オブジェクトの初期化はそれぞれのインタフェースが含むオブジェクトのための値を用いて行われるものとする。 例えば SVGAnimatedString であれば DOMString, SVGRect であれば4個の float 等々。 For cases where an attribute has a default value the returned SVG DOM object that must reflect that value, and for all other cases the object is initialized as described below. If a particular SVG DOM interface is not listed below that means that the object initialization shall be done using the values for the objects that the interface contains, e.g DOMString in the case of SVGAnimatedString, or four floats in the case of SVGRect.

SVGTextContentElement.textLength
同じ要素の getComputedTextLength の返り値で初期化される。 Initialized with the return-value of getComputedTextLength on the same element.
DOMString
空文字列( "" )に初期化される。 Initialized as the empty string ("").
float
long
short
0 に初期化される。 Initialized as 0.
boolean
false に初期化される。 Initialized as false.
SVGLength
0 利用単位 に初期化される( SVG_LENGTHTYPE_NUMBER )。 Initialized as 0 user units (SVG_LENGTHTYPE_NUMBER).
SVGLengthList
SVGNumberList
SVGPointList
SVGStringList
SVGTransformList
空リストに初期化される。 Initialized as the empty list.
SVGAngle
単位無しの 0 に初期化される( SVG_ANGLETYPE_UNSPECIFIED )。 Initialized as 0 in unspecified units (SVG_ANGLETYPE_UNSPECIFIED).
SVGZoomAndPan
0 に初期化される( SVG_ZOOMANDPAN_UNKNOWN )。 Initialized as 0 (SVG_ZOOMANDPAN_UNKNOWN).
SVGPreserveAspectRatio
'xMidYMid meet' に初期化される。 Initialized as 'xMidYMid meet'.

B.2 SVG DOM における要素

SVG 要素に対応するどの Element オブジェクトも(すなわち,名前空間が "http://www.w3.org/2000/svg" で, 局所名がこの仕様で定義される要素のもの)、要素定義にて特定される DOM インタフェースを実装しなければならない。 例えば rect 要素に対しては SVGRectElement インタフェースが特定される。 すなわち、名前空間 URI が "http://www.w3.org/2000/svg" で, 局所名が "rect" になる,どの Element オブジェクトにも SVGRectElement が実装されていなければならない。 Every Element object that corresponds to an SVG element (that is, an element with namespace URI "http://www.w3.org/2000/svg" and a local name that is one of the elements defined in this specification) must also implement the DOM interface identified in element definition. For example, in The ‘rect’ element, the SVGRectElement interface is identified. This means that every Element object whose namespace URI is "http://www.w3.org/2000/svg" and whose local name is "rect" must also implement SVGRectElement.

B.3 命名慣行

SVG DOM における命名慣行は Document Object Model HTML ([DOM1], 2 章) に類似させてある。 The SVG DOM follows similar naming conventions to the Document Object Model HTML ([DOM1], chapter 2).

すべての名前は、一つ以上の英単語を連ねた(空白の無い)単一の文字列として定義される。 プロパティ名またはメソッド名における最初の単語は小文字で始まり,後続の単語は大文字で始まる。 例えば,ファイルが作成された日付などの文書のメタ情報を返すプロパティは、 "fileDateCreated" のような名前を持つことになる。 ECMAScript 言語束縛においては、プロパティは与えられたオブジェクトのプロパティとして公開される。 Java においては、プロパティは get および set メソッドにより公開される。 All names are defined as one or more English words concatenated together to form a single string. Property or method names start with the initial keyword in lowercase, and each subsequent word starts with a capital letter. For example, a property that returns document meta information such as the date the file was created might be named "fileDateCreated". In the ECMAScript binding, properties are exposed as properties of a given object. In Java, properties are exposed with get and set methods.

CDATA データ型の属性に対し、返り値の文字の大小はソース文書で与えられたものそのままである。 For attributes with the CDATA data type, the case of the return value is that given in the source document.

B.4 例外 SVGException

この例外は特定の SVG の処理が実行不能なとき投出される。 This exception is raised when a specific SVG operation is impossible to perform.

exception SVGException {
  unsigned short code;
};

// SVGException code
const unsigned short SVG_WRONG_TYPE_ERR = 0;
const unsigned short SVG_INVALID_VALUE_ERR = 1;
const unsigned short SVG_MATRIX_NOT_INVERTABLE = 2;
“SVGException code” グループの定数
SVG_WRONG_TYPE_ERR (unsigned short)

誤った型のオブジェクトが操作に渡されたときに投出される。 Raised when an object of the wrong type is passed to an operation.

SVG 1.1 第2版にはこのコードの SVGException を生じさせる操作は定義されていないことに注意。 この定数は SVG 1.1 第1版との整合性を保つために残されている。 Note that no operation is defined to raise an SVGException with this code in SVG 1.1 Second Edition. The constant remains defined here for consistency with SVG 1.1 First Edition.

SVG_INVALID_VALUE_ERR (unsigned short)

無効な値が操作に渡されるか属性にあてがわれたときに投出される。 Raised when an invalid value is passed to an operation or assigned to an attribute.

SVG_MATRIX_NOT_INVERTABLE (unsigned short)

逆行列が存在しない行列に対し逆行列をとったときに投出される。 Raised when an attempt is made to invert a matrix that is not invertible.

この定数は既存の内容との互換性を保つ必要から綴りが特殊なままにされていることに注意。 Note the unusual spelling of this constant, which is necessary for compatibility with existing content.

例外メンバ:
code (unsigned short)

要求された操作が実行できなかった理由を特定するコード。 値は SVGException code グループの定数のいずれかになる。 A code identifying the reason why the requested operation could not be performed. The value of this member will be one of the constants in the SVGException code group.

B.5 hasFeature メソッドに渡す特能文字列

SVG DOM がサポートする DOM Level 2 Core [DOM2] が定める DOMImplementation インタフェースの hasFeature メソッド呼び出しで可用な特能文字列は、多くの SVG 要素で利用できる requiredFeatures 属性で利用できる特能文字列と同じである。 The feature strings that are available for the hasFeature method call that is part of the SVG DOM's support for the DOMImplementation interface defined in DOM Level 2 Core [DOM2] are the same features strings available for the ‘requiredFeatures’ attribute that is available for many SVG elements.

この仕様に述べられている SVG 言語の特能すべて( SVG 言語の特能の一覧は付録 特能文字列 を見よ)に対し、hasFeature メソッド呼び出しに渡す version 番号は "1.1" である。 他の言語に対応する特能のバージョン番号については、関連する他の仕様を参照のこと。 For all features that correspond to the SVG language and are documented in this specification (see appendix Feature Strings for a list of features in the SVG language), the version number for the hasFeature method call is "1.1". For features that correspond to other languages, refer to the relevant other specifications to determine the appropriate version number for the given feature.

B.6 DOM Level 2 イベントとの関係

SVG DOM は DOM Level 2 イベント [DOM2EVENTS] で定義されるすべてのインタフェースと以下に挙げるイベント型をサポートする: The SVG DOM supports all of the interfaces defined in, and the following event types from, DOM Level 2 Events [DOM2EVENTS]:

イベントリスナは addEventListener 呼び出しにより DOM の任意の要素に登録できるが、要素における イベント属性 はそれらの属性が許容されていない所で利用された場合、関連するイベントが要素に配送されても誘発されない。 例えば onclick 属性が title 要素に指定されても、その内容が click イベントに対する反応として実行されることはない: While event listeners can be registered using an addEventListener call on any element in the DOM, the use of event attributes on elements where those attributes are disallowed will not result in their being invoked if the relevant event is dispatched to the element. For example, if the ‘onclick’ attribute were specified on a ‘title’ element, its contents would never be run in response to a click event:

<svg xmlns="http://www.w3.org/2000/svg">
  <title onclick="alert('Hello')">無効なイベント属性</title>
  <script>
    // 'title' 要素を取得
    var title = document.getElementsByTagNameNS("http://www.w3.org/2000/svg", "title")[0];

    // 'click' イベントの作成と初期化
    var event = document.createEvent("MouseEvent");
    event.initMouseEvent("click", true, false, this, 1, 0, 0, 0, 0, false,
                         false, false, false, 0, null);

    // 'title' 要素へイベントを配送。 onclick="" は
    // 'title' に許容されないのでアラートは表示されない。
    title.dispatchEvent(event);
  </script>
</svg>

与えられたイベント属性がどの要素に許容されるかについては 属性索引 を見よ。 See the Attribute Index for details on which elements a given event attribute is allowed to be specified on.

実装においては、イベント属性の設定を EventTarget に対する EventListener の生成と登録とみなすことができる。 それらのイベントリスナは、あたかも addEventListener に渡す useCapture 引数を false にしたかのように、「浮上」および「標的上」過程に対してのみ呼び出される。 この EventListenerEventTarget に登録された他のそれと同じようにふるまう。 Implementors may view the setting of event attributes as the creation and registration of an EventListener on the EventTarget. Such event listeners are invoked only for the "bubbling" and "at target" phases, as if false were specified for the useCapture argument to addEventListener. This EventListener behaves in the same manner as any other which may be registered on the EventTarget.

イベントリスナを表現している属性の変化は、以前に登録された EventListener の削除と新たなリスナの登録とみなすことができる。 このとき、同じ EventTargetに登録されている他の EventListener との間で,イベントの受け取り順序が影響されることはない。 If the attribute representing the event listener is changed, this may be viewed as the removal of the previously registered EventListener and the registration of a new one. Futhermore, no specification is made as to the order in which event attributes will receive the event with regards to the other EventListeners on the EventTarget.

Java においては、次の様に EventListener インタフェースを実装するクラスを定義して,イベントリスナを確立できる: In Java, one way that event listeners can be established is to define a class which implements the EventListener interface, such as:

class MyAction1 implements EventListener {
  public void handleEvent(Event evt) {
    // イベントの処理
  }
}
// ... later ...
MyAction1 mc1 = new MyAction1();
myElement.addEventListener("DOMActivate", mc1, false);

ECMAScript においては、関数を定義してその名前を addEventListener メソッドに渡すことでイベントリスナを確立できる: In ECMAScript, one way to establish an event listener is to define a function and pass that function to the addEventListener method:

function myAction1(evt) {
    // イベントの処理
}
// ... later ...
myElement.addEventListener("DOMActivate", myAction1, false)

ECMAScript においては、 イベント属性 の文字データ内容がイベントに反応する ECMAScript 関数を定義する。 この関数は名前が evtEvent オブジェクトをパラメタとして受け取る。 このことは登録されている他のどの ECMAScript イベントリスナ関数にも同様にあてはまる。 例えば次のように書ける: In ECMAScript, the character data content of an event attribute becomes the definition of the ECMAScript function which gets invoked in response to the event. As with all registered ECMAScript event listener functions, this function receives an Event object as a parameter, and the name of the Event object is evt. For example, it is possible to write:

<rect onactivate="MyActivateHandler(evt)" .../>

これは Event オブジェクト evt を関数 MyActivateHandler に渡すことを指示する。 which will pass the Event object evt into function MyActivateHandler.

B.7 DOM Level 2 CSS との関係

B.7.1 概要

この節では SVG DOM の一部である DOM Level 2 CSS ([DOM2STYLE], 2 章) に備わる機能について述べる。 The section describes the facilities from DOM Level 2 CSS ([DOM2STYLE], chapter 2) that are part of the SVG DOM.

B.7.2 CSS によるスタイル付けをサポートしない UA

CSS によるスタイル付け をサポートしない UA には、 DOM Level 2 CSS ([DOM2STYLE], 2 章) に備わる次のインタフェースのサポートが、 CSSPrimitiveValueCSSValueList など,それらのインタフェースの実装に必要なインタフェースに加えて、要求される。 これらのインタフェースは SVGStylable インタフェース の getPresentationAttribute メソッド呼び出しと伴に利用される。 このメソッドはすべての SVG DOM 実装においてサポートされなければならない: User agents that do not support styling with CSS are only required to support the following interfaces from DOM Level 2 CSS ([DOM2STYLE], chapter 2), along with any interfaces necessary to implement the interfaces, such as CSSPrimitiveValue and CSSValueList. These interfaces are used in conjunction with the getPresentationAttribute method call on interface SVGStylable, which must be supported on all implementations of the SVG DOM.

B.7.3 CSS によるスタイル付けをサポートする UA

CSS によるスタイル付け, SVG DOM, 聴覚スタイル付け ([CSS2], 19 章) をサポートする UA は、 DOM Level 2 CSS ([DOM2STYLE], 2 章) が定める聴覚プロパティに適用されるインタフェースすべてをサポートしなければならない。 User agents that support Styling with CSS, the SVG DOM, and aural styling ([CSS2], chapter 19) must support all of the interfaces defined in DOM Level 2 CSS ([DOM2STYLE], chapter 2) which apply to aural properties.

視覚メディア ([CSS2], 7.3.1 節) に対しては、 UA は DOM Level 2 CSS が要件として定めているすべてのインタフェースをサポートしなければならない。 DOM Level 2 CSS においてオプションのインタフェースはすべて、 SVG DOM においてもオプションである。 For visual media ([CSS2], section 7.3.1), user agents must support all of the required interfaces defined in DOM Level 2 CSS. All of the interfaces that are optional for DOM Level 2 CSS are also optional for user agents implementing the SVG DOM.

B.7.4 拡張インタフェース

注記: getPresentationAttribute メソッドおよび CSSValue を拡張するインタフェースは廃止予定であり、将来版の SVG 仕様からは削除される可能性がある。 Note: the getPresentationAttribute method and the interfaces that extend CSSValue are deprecated, and may be dropped from future versions of the SVG specification.

UA による CSS によるスタイル付け のサポートの有無に関らず、 UA は SVGStylable インタフェースの getPresentationAttribute メソッド呼び出しの返り値型である CSSValue インタフェースをサポートしなければならない。 Whether or not a user agent supports styling with CSS, a user agent still must support interface CSSValue, as this is the type that is returned from the getPresentationAttribute method call on interface SVGStylable.

DOM Level 2 CSS は CSSValue インタフェースと関連して利用するための 拡張インタフェース ([DOM2STYLE], 2.3 節) のセットを定める。 視覚メディア ([CSS2], 7.3.1 節) に適用される各 SVG プロパティの表現に用いられる CSSValue の型は下の表から指定される。 ただし例外として、 CSSStyleDeclaration インタフェースの getPropertyCSSValue メソッドまたは SVGStylable インタフェースの getPresentationAttribute メソッドによる返り値の CSSValue は,言語束縛 固有の型強制により特定の派生インタフェースに型強制され得る。 DOM Level 2 CSS defines a set of extended interfaces ([DOM2STYLE], section 2.3) for use in conjunction with interface CSSValue. The table below specifies the type of CSSValue used to represent each SVG property that applies to visual media ([CSS2], section 7.3.1). The expectation is that the CSSValue returned from the getPropertyCSSValue method on the CSSStyleDeclaration interface or the getPresentationAttribute method on the SVGStylable interface can be cast down, using binding-specific casting methods, to the specific derived interface.

カスタムインタフェース( CSSValue の cssValueType が CSS_CUSTOM )により表現されるプロパティに対しては、派生インタフェースの名前を下の一覧表に示す。 これらのプロパティに対し、どの拡張インタフェースが義務的で、どれがそうでないかも一覧表に示す。 For properties that are represented by a custom interface (the cssValueType of the CSSValue is CSS_CUSTOM), the name of the derived interface is specified in the table. For these properties, the table below indicates which extended interfaces are mandatory and which are not.

値のリストからなるプロパティ( CSSValuecssValueType が CSS_VALUE_LIST )に対する派生インタフェースは CSSValueList である。 他のすべてのプロパティ( CSSValuecssValueType が CSS_PRIMITIVE_VALUE )に対する派生インタフェースは CSSPrimitiveValue である。 For properties that consist of lists of values (the cssValueType of the CSSValue is CSS_VALUE_LIST), the derived interface is CSSValueList. For all other properties (the cssValueType of the CSSValue is CSS_PRIMITIVE_VALUE), the derived interface is CSSPrimitiveValue.

省略形式のプロパティに対しては、 CSSValue は常に値 null をとる。 省略形式のプロパティの値は文字列としてのみアクセス/変更が可能である。 For shorthand properties, a CSSValue always will have a value of null. Shorthand property values can only be accessed and modified as strings.

SVG DOM は次の SVG 固有のプロパティインタフェースを定義する。 これらすべてのサポートは SVG-UA の義務になる: The SVG DOM defines the following SVG-specific custom property interfaces, all of which are mandatory for SVG user agents:

プロパティ名表現義務?(拡張インタフェースのみ)
alignment-baselineident 
baseline-shiftident, length, percentage 
cliprect, ident 
clip-pathuri, ident 
clip-ruleident 
colorrgbcolor, ident 
color-interpolationident 
color-profilestring, uri, ident のリスト 
color-renderingident 
cursoruri, identオプション
directionident 
displayident 
dominant-baselineident 
enable-backgroundident, number のリスト 
fillSVGPaint義務
fill-opacitynumber 
fill-ruleident 
filteruri, ident 
flood-colorSVGColor義務
flood-opacitynumber 
fontnull 
font-familystring, ident のリスト 
font-sizeident, length, percentage 
font-size-adjustnumber, ident 
font-stretchident 
font-styleident 
font-variantident 
font-weightident 
glyph-orientation-horizontalident 
glyph-orientation-verticalident 
image-renderingident 
kerningident, length 
letter-spacingident, length 
lighting-colorSVGColor義務
markernull 
marker-enduri, ident 
marker-miduri, ident 
marker-starturi, ident 
maskuri, ident 
opacitynumber 
overflowident 
pointer-eventsident 
shape-renderingident 
stop-colorSVGColor義務
stop-opacitynumber 
strokeSVGPaint義務
stroke-dasharraylength のリストまたは ident 
stroke-dashoffsetlength 
stroke-linecapident 
stroke-linejoinident 
stroke-miterlimitlength 
stroke-opacitynumber 
stroke-widthlength 
text-anchorident 
text-decorationident のリスト 
text-renderingident 
unicode-bidiident 
visibilityident 
word-spacinglength, ident 
writing-modeident 

B.8 DOM における読み取り専用ノード

SVG DOM の一部の操作と属性は、 DOM の読み取り専用のノードに対する変更を試みた際に,例外が投出されるように定義されている。 それらの読み取り専用のノードは IDL において宣言される readonly キーワードとは関係が無い。 それらは DOM Level 2 Core ([DOM2], 用語索引) により 読み取り専用ノード として定義されているために変更不可にされているノードを指す。 特に EntityEntityReference ノードおよびそれらの子孫は読み取り専用である。 ([DOM2], 1.3 節) 。 Some operations and attributes in the SVG DOM are defined to raise an exception when an attempt is made to modify a node in the DOM that is read only. Such read only nodes are not related to attributes declared in IDL with the readonly keyword. Rather, they are nodes that cannot be modified by virtue of being defined as readonly nodes by DOM Level 2 Core ([DOM2], Glossary appendix). Specifically, Entity and EntityReference nodes and their descendants are read only ([DOM2], section 1.3).

B.9 無効な値

スクリプトが DOM 属性に無効な値を設定した場合(例えば非負数を要求する属性に対する負数や, 列挙値の範囲外の値など)、この仕様で特に指示されていない限り,例外は投出されないものとするが、文書片は形式の上では エラー処理 で述べる エラー状態 ということになる。 If a script sets a DOM attribute to an invalid value (e.g., a negative number for an attribute that requires a non-negative number or an out-of-range value for an enumeration), unless this specification indicates otherwise, no exception shall be raised on setting, but the given document fragment shall become technically in error as described in Error processing.

目次詳細目次前章次章要素属性プロパティ