どら猫本舗が翻訳したものです。正式なノートはW3Cサイトにある英語版です。この日本語版は参考にすぎません。Submission(和訳)をご覧ください。この文書には翻訳上の誤りがあるかもしれません。どら猫本舗は翻訳の正確性を保証しません。ご自身の責任でご利用ください。お気付きの点がありましたらどら猫本舗までお知らせください。Corporationこの文書の位置づけこの文書は、W3Cへの提議である。これはVMLの仕様書の初期ドラフト(草稿)である。これはW3C会員による検討およびコメントのためのものであって、変更に服する。この提議に関してはW3Cスタッフのコメントがある。この文書は、もっぱら議論のためにW3Cが利用可能にしているノート(覚え書き)である。これはその内容の保証を示すものではなく、またノートによって扱われている問題に対してW3Cが何らかのリソースを既に、または現在ないし将来において割り当てることを示すものでもない。応用であり、ベクトル情報のエンコーディングのためのフォーマットを、その情報がどのように表示または編集されてよいかを記述するための追加的マークアップとともに定義するものである。より定義されるHTMLの双方とどのように相互作用するかについての概観を与える。これに続いて、VMLエレメントごとの挙動、およびすべてのアプリケーションについて許容され、また推奨される挙動の詳細な技術的定義がある。この文書の序論は、VMLの概観を得たいと思う者が読むのに適するようにしたつもりである。技術的仕様は、VMLを使うようなアプリケーションソフトウェアの制作者や、特定のアプリケーションについてVMLの適性を検証したいと思っている人々向けである。VMLコンテンツを手で編集する必要のある人々によっても使われるかもしれない。ほとんどのそうしたオーサリングが既存のVMLの切り貼りにより進行するであろうと思われる。VMLは、このような方法で扱われることが意図されている。参考的な参照資料VML序論ベクトルマークアップ言語(VML)は、HTMLがテキスト的情報をサポートするのと同じ方法でベクトルグラフィック情報をサポートする。VMLの内部では、コンテントは連結された直線や曲線を使って記述されるパスからなる。マークアップは、パスの意味論情報および表現情報を与える。文法を使って書かれるのと同じように、VMLはXMLの文法を使って書かれる。XMLはSGMLの制約を受けた形式である。VMLのレンダリングに関わるワークフローは、以下の図に示されたHTMLのレンダリングに関わるワークフローと比較できる。HTMLの場合は、ワークフローがキャラクタ列の位置およびその他の情報を生成し、それがネイティブのオペレーションシステム機能を使ってレンダリングされる。VMLの場合は、ワークフローがベクトルパスや(ビットマップといったような)関連するオブジェクトの位置その他の情報を生成し、それがネイティブのオペレーションシステム機能を使ってレンダリングされるのである。共通のワークフローはVMLの本質的部分である。VMLを既存のHTMLと統合することと、既存のHTML機能またはCSS機能の異なる表現または実装を使うことにより、ユーザエージェントにホイールを再開発を要求することを避けることとは、2つの設計上の要望事項である。HTMLのように、VMLはさらに編集されることの多いオブジェクトを記述する。HTMLの場合は、これらのオブジェクトは段落やフォーム、テーブルである。VMLは、編集に対する特定のアプローチを要求しない。広範な種類のエディタを受け入れるのである。非常に広い範囲のグラフィックデータは、VML記述に関連する意味論情報をエディタがどのように記録するかに対してVMLが注意を支払うことを要求する。VMLは、異なるエディタがお互いのデータを(普通には理解しないとしても)認識して正しく扱えることを確保する。下記の単純な図例には、単純なグラフィックとテキストとの両方が含まれている。使われているビットマップ圧縮は画像をきわめて小さいものにする(8キロバイトほどしか必要としない)けれども、ビットマップは、図例をさらに変更するために必要な情報を全く有していない。変更する必要のあるユーザは、出発点からビットマップを作成し直さなければならないのである。これに対応するVMLは、2.5キロバイトほどの中に必要な編集情報をすべて有している。</v:shape></v:group>このVMLには、図の編集および表示の双方のために要求される情報の全てが含まれている。このVMLは以下の通りに色分けされている。VMLは、XMLの規則に従ってフォーマットされている。いうプレフィックスは、、XMLネームスペースの処理についての現在の提案に従い、そのタグをVMLとして特定する。どの標準的なXMLパーサも、VMLを解析し、結果のデータをVML特有プロセッサに渡すことができる。CSSの最初のブロックは、図の中のテキストを定義するHTMLの中で使われる。これひ単なる標準的なCSSである。エレメントは各自、ページ内部で図形の位置およびサイズを定義するCSSスタイルアトリビュートをもつ。トップレベルグループの位置は完全にCSSによって定義される。レイアウトエンジンは、この位置指定情報を処理するためにVMLのどの面も理解する必要はない。残りのデータは、図のグラフィックプロパティを記述する。エレメントと結びつけられるかに注意すること。エレメントは図形の間の幾何学的情報の再利用を可能にする。エレメントを参照する)。エレメントに結びつけられる。イタリックのVMLは、HTMLテキストの位置を制御する。基本的なVML幾何学的情報は、閉じたまたは開いたパスを記述する。これらのパスはパラメータ化されてもよい。エレメントが複数の関連するパスを定義することを可能にする。パラメータ的に定義され、以下の4つの矢印はすべて同じ基本図形を共有する。対応するVMLは、こうである。7425"/>パラメータ化と簡潔なパス記述とを組み合わせることで、編集情報は大量であるにもかかわらず、VMLの図を比較的コンパクトにすることができる。実際、大きなVMLの図は、エレメントの位置指定をするために要求されるCSSに支配されてきている。VMLは、複雑な図におけるこのオーバーヘッドを避けるために、コンテナボックスを承継できるようにするCSSのデフォルティング機能を定義する。要望が、VMLの設計を誘導した。決定的なものは、重要性の順に下記に列挙される。VMLのさらなる編集のために要求される情報を維持すること。この要望は、VMLが拡張可能でなくてはならないという重要な帰結を有する。VMLがすべての編集アプリケーションの要求に沿うことは無理があり、ゆえに、アプリケーションごとに、そのアプリケーションに特有の必要な編集データを追加することが可能でなければならないのである。アプリケーションの間でのデータ交換をサポートすること。最初の要望事項は2つのアプリケーションが潜在的にはともにアプリケーション特有のデータを追加するであろうことを意味するけれども、ひとつのアプリケーションは、他のアプリケーションのデータを読んで編集できなければならない。HTMLおよびCSSの既存のメカニズムを使うこと。これは、VMLの実装を促し、実装が既存のコードやテクニックを再利用できることを確保する。既存のユーザエージェントと後方互換的であること。既存のウェブブラウザで機能するVMLを生成することが可能であるのでない限り、VMLの採用が妨げられるであろう。ベクトルグラフィックの効率的な表現を提供すること。テキスト的表現はうるさくなる傾向がある。VMLは、パスエレメントのコンパクトな表現を定義し、またひんぱんに使われるアトリビュートには簡潔な名前を使い、うるさい名前はあまりひんぱんに使われないアトリビュートに使うという設計理念に従うことにより、これを処理する。アプリケーションがVMLのフル機能を要求しないところでは、サブセットの実装を認めること。ビューアはフル仕様を実装するのが普通だろうが、エディタが実装できるべきなのはそれ自身のデータに必要なサブセットだけである。手での編集をサポートする。これは、グラフィックの構造が明確であり、また文法がHTMLプログラマに馴染みのあるものであるという設計理念に行き着く。実効的には要求事項(3)と同じである。VMLは、アニメーションの要望を含め、スクリプティングをサポートするべきである。これは、再度、VMLの構造がグラフィックの構造に合致するという要求に行き着く。VMLの内部ではアニメーションに適したVMLを利用することにも行き着く。いう単一のアトリビュートとして定義されるのである。実装VMLの実装は、2つのクラスのうちの1つに分かれる。ビューア実装は、(そのビューアがサポートするスクリプト言語によって要求されるものを越えて)VMLを編集する機能を実装する必要性は避けることができるものの、フル仕様を実装するのが普通である。エディタ実装は、そのエディタが操作するデータを出力するために必要な特定の機能を実装する必要しかない場合がある。潜在的には他のアプリケーションによって生み出されたVMLを操作するエディタであっても、CSS2視覚的レンダリングモデルのサブセットを越えるものを要求しなくてよい。したエディタは、個別の図形をレンダリングできない場合はあるとしても、他のアプリケーションによって生み出されたVMLを正しく位置決定することができる。実装モデルは、この文書の始めにある図に従う。実装は、5つの分かれた独立のステップで進むことができる。各実装はXMLパーサを要求する。これは、VMLの辞書的分析を実行し、個別のエレメントを識別する。XMLパーサは既に広く利用可能である。トリビアルでない実装は、個別のVMLアトリビュートの構造を解析する必要があろう。これを容易にするため、VMLは、正典的な内部表現をもつ基本型を定義する。どのVML実装も、正典的表現により示されるよりも大きな正確性をストアすることを要求されず、すべてのVMLデータは対応する表現に変換できる。これは、すべてのVMLデータを扱うことができるためには、実装者は少数の文字列パーサを書く必要しかないことを意味する。これらのパーサのほとんどは、言語ライブラリの一部として、またはCSSを解析する必要性の帰結として既に存在している。実装は、CSS視覚的レンダリングモデルのうちVMLによって使われる部分を扱わなければならない。VMLは、CSS2の小さいサブセットを使って、各VMLエレメントのブロックレベルボックスを定義する。これを実装することは、何のレンダリングもすることなく(そのブロックレベルボックスを使って)エレメントのレイアウトを扱うことのできる最小限のVML実装を与える。ビューア実装やほとんどのエディタ実装は、VMLによって要求されるパスパラメータ化を扱わなければならない。小さいセットの数学的に定義された変形は、パスのVML表現を、閉じており、または開いている線セグメントの単純なセットへと縮小できるようにする。VMLへの拡張は変形を追加する場合があるが、VMLは、そうした拡張に、非拡張VMLの中の同じ情報の等価的な定義を随伴させることを可能にする。最後に実装は、VMLレンダリングアトリビュートによって指定される方法でパスレベルデータをレンダリングしなければならない。普通はこの操作は、広く利用可能なオペレーティングシステム装備へ容易に割り付けられる。これら5つのステップのそれぞれが、個別にテスト可能であり、その他のステップから独立して実装可能である。VML特有なのはステップ(2)と(4)とだけであり、ステップ(2)は多くの場所で利用可能な標準的テクノロジーを再利用することができる。XML定義によりまとめてよい。エレメントは、可視的なベクトルグラフィックエレメントを定義するために使われる。サブエレメントのアトリビュートにより指定される通りに運筆される場合がある。サブエレメントの制御の下、塗りつぶされる場合もある。追加的なサブエレメントが、ラスター(ビットマップ)画像、あるいはパスや、図形の上に描かれるテキストのより高度な変形をサポートする。下記は、単純な図形とそのVML表現との例である。エレメントは、数個の図形が1単位としてともに変形されてよいようひとまとめにするために使われる。加えてVMLは、複雑なグラフィック情報の編集と表現をよりコンパクトで簡便なものにすることを助けるため、いくつかの補助的なトップレベルエレメントを定義する。エレメントは、図形のプロトタイプ定義を定義する。数個の定義済み図形は、パスで図形エレメントを明示的に宣言する代わりの簡便な方法として使ってもよい。CSSの利用スタイルアトリビュートは、CSS2の「視覚的レンダリングモデル」に記述されている文法を使う。位置指定は、図形がグルーブの内部にあるのでない限り、絶対的でも相対的でもよい。グループの内部にある場合は、位置指定は絶対的(親グループの左上を基準とする)でなければならない。グループ内部のエレメントのzオーダーは、最初のもの(最低)から最後のもの(最高)へという順序である。後出のエレメントが先出のエレメントを遮るのである。エレメントは相対的位置を確立しない。ここから、絶対的位置指定の利用に制限されるのである。エレメントは、CSS視覚的レンダリングモデルに完全に参加する。標準的なCSSレイアウトに加えて、VMLエレメントは回転されたり裏返されたり場合もある。各エレメントは、その内容のための座標空間も設定する。これは、包含エレメントとの関係で内容を伸縮することを可能にする。これをサポートするのが、以下のVML特有CSSプロパティである。rotation値は、図形またはグループの回転を、その中心の周りの時計回りの角で指定する。(すなわち、正ならば時計回り、負ならば反時計回り。逆転された座標空間における普通の定義である。)flip値は、図形またはグループが、その中心の周りに、以下の表に従いx軸またはy軸について裏返されることを指定する。回転された図形をy軸について裏返す(x座標を逆にする)。回転された図形をx軸について裏返す(y座標を逆にする)。プロパティの中に指定してもよい。center-yこれらのプロパティを使って、親コンテナボックスの内部における、そのエレメントのブロックレベルボックスの中心を指定してよい。代用品であり、同じ情報を伝達する。両方を指定することは誤りである。center-y)を優先することにより、誤りに対処するべきである。ユーザエージェントは、適切な場合には、ユーザに対して診断書を発行してもよい。エレメントは、その内容にとっての包含ブロックである。これらはCSS2の「ブロックレベルボックス」を定義するのである。アトリビュートを使って、任意のサブエレメントについてローカル座標システムが定義される。CSS2の位置指定情報はすべて、このローカル座標空間を用いて表わされる。)は、単位識別子を有しない。これらは単純な数であって、CSSの長さ量ではないのである。アトリビュートは、包含ブロックの幅に沿ってどれだけの単位があるかを定義する。アトリビュートは、包含ブロックの左上隅の座標を定義する。/>包含ブロックは幅300ピクセル、高さ250ピクセルということになる(このグループの親エレメントがグループでないと仮定する)。グループ内部の図形はどれも、このローカル座標システムに従って位置とサイズを決定される。グループの幅や高さがどのように変更されても、内部のローカル座標システムは同じままである。この背後にある理屈は、図形を定義しているベクトルはローカル座標システムの中に指定できるということである。図形の包含ブロックが変更されれば、図形の輪郭線は新しいボックスにあわせて自動的に伸縮されることになる。同様に、グループのローカル座標システム内部の図形は、そのグループの包含ブロックが変化すれば自動的に伸縮される。包含ブロックが切り落とし領域を確立するのでないことに注意することは重要である。サブエレメントやパスは、包含ブロックの境界線の外側に描画されてもよいのである。包含ブロックは、単に、ローカル座標空間をページ空間に割り付けるよう機能するにすぎない。アトリビュート型アトリビュートの基本型は、以下の辞書的形式に従って特定される。いう値をとることができるアトリビュート。任意の長さのキャラクタデータ。文字列アトリビュートには(CSSでのように)定義された値の制限範囲があるのが普通である。数値データであり、整数、小数や長さを指定する値に使われる。長さや数は、CSSについて定義されている、スケール因数を示す接尾辞つきの辞書的形式に従う。いう形式の数値データ。2次元空間における座標を列挙するために使われる。いう形式の数値データ。3次元空間における座標を列挙するために使われる。オーサリングツールがストアしなければならない最小限の精度と信頼できる最大限とがよく定義されていることを保証する正典的表現を伴って、データ型の完全なセットがVMLについて定義される。現段階では、この文書にある表は、基礎にあるデータ型を与えない。定義済み図形)は、標準的なHTMLコアアトリビュートに加えて、任意のエレメント上で現れてよいいくつかのアトリビュートを使う。-->さらに、図形エレメントや特殊な定義済みエレメントは、レンダリングを制御するための標準的なアトリビュートを有する。-->より洗練されたレンダリング操作を定義するためには、図形エレメントの内部でサブエレメントが使われれる。%extensions;)>1つの図形エレメントの中で発生してよいインスタンスは、サブエレメントごとに最大で1つである。複数のエレメントが実際に発生している場合には、ユーザエージェントは、繰り返されているエレメントを併合し、もし同じアトリビュートが2回以上指定されていれば指定された最後の値だけを残すことにより、誤りに対応するべきである。ユーザエージェントは、適切な場合には、診断書を発行してもよい。いうエンティティは、将来の拡張のための場所取りとして働く。アトリビュートにより修飾されてもよい。アトリビュートは、それが拡張をどのように扱うべきかを示す。エレメントは、オリジナルのコンテンツジェネレータによって使われた高水準の意味論的情報を含んでいる。情報は図形から除去されるべきではない。エレメントの内容は無視できる。エレメントの内容は無視でき、複製されてはならないけれども除去される必要はない。エレメントは、図形の外観には影響しないが図形が変更されれば変更されなければならないオリジナルのコンテンツジェネレータからの情報を含んでいる。エレメントの内容は無視できる。エレメントの内容は、図形が編集されるのでない限り無視できる。図形が編集される場合には、エレメントは除去されなければならない。エレメントは、図形の外観をVMLによって黙示的に示されるものから変更する情報を含んでいる。表現を使わなければならない。エレメントの内容は、図形が編集されない限り無視できる。VML情報は、場所取りとして使うことができる。これらの規則は、エディタアプリケーションに任意のVML文書を編集する能力を与える。拡張でさえなおハンドルすることができる。VML定義は、エディタが図形のCSSレイアウトプロパティを知っていることを保証する。この規則は、広範な種類のエディタ挙動を収容する。エディタは、たとえば拡張情報の無効化を防ぐために、拡張図形をロックすることを選んでもよいのである。エレメントこれは図形を記述するために使われるトップレベルエレメントである。エレメントの内部にである。中で見つかるものを上書きすることになる。-->パス定義は下記で詳細に記述されている。パスパラメータ化は、ある正典的なパスが、一定の範囲の、幾何学的プロパティにおいてのみ異なる図形(たとえば、内径と外形の比が変わるリング図形)を記述できるようにする。図形を特定する一意的なID。集合体の中でその図形を参照するためにスクリプトによって使われる。プロパティを上書きすることになる。その図形のパスを定義する誘導式のためのパラメータである数のコンマ切り分けリスト。デフォルトの利用を可能にするために値が省略されてもよい。調整値は8つまでありうる。パスを定義するコマンドを含んでいる文字列。(コマンドセットの解説についてはパスエレメントを見ること。この図形がクリックされれば飛ぶべき先のURL。URLの中のターゲットフレーム。この図形のCSSクラス。図形のタイトルであり、エディタによって表示される場合がある。図形に結びつけられた代替テキスト。あれば、図形はレンダリングされず、またマウスイベントを生成しない。図形の包含ブロックの上端の位置。これは、コンテナボックスを位置決定するためのCSS機構のどれによって指定されてもよい。図形の包含ボックスの左の位置。これは、コンテナボックスを位置決定するためのCSS機構のどれによって指定されてもよい。図形のコンテナ長方形の幅。図形の包含ブロックの高さ。図形のzインデックス。正の数は画面の手前にある。負の数は画面の背後にある。0度は回転なしという意味である。正の角は時計回りである(y軸の正方向が下向きであるから)。参照長方形の内部にある図形イメージが、適切であれば列挙された軸に沿って指定された順で裏返されるべきことを示す。y軸の回りに折裏返すという意味である。これがトップレベルエレメントであるときは、任意のCSS値であってよい。