[要約] RFC 7996は、SVG 1.2を使用してRFC文書に図形を描画するための標準を定めています。その目的は、RFC文書の可読性と理解を向上させることです。

Internet Architecture Board (IAB)                            N. Brownlee
Request for Comments: 7996                    The University of Auckland
Category: Informational                                    December 2016
ISSN: 2070-1721
        

SVG Drawings for RFCs: SVG 1.2 RFC

RFCのSVG図面:SVG 1.2 RFC

Abstract

概要

This document specifies SVG 1.2 RFC -- an SVG profile for use in diagrams that may appear in RFCs -- and considers some of the issues concerning the creation and use of such diagrams.

このドキュメントでは、SVG 1.2 RFC(RFCに表示される可能性のある図で使用するSVGプロファイル)を指定し、そのような図の作成と使用に関するいくつかの問題について検討します。

Status of This Memo

本文書の状態

This document is not an Internet Standards Track specification; it is published for informational purposes.

このドキュメントはInternet Standards Trackの仕様ではありません。情報提供を目的として公開されています。

This document is a product of the Internet Architecture Board (IAB) and represents information that the IAB has deemed valuable to provide for permanent record. It represents the consensus of the Internet Architecture Board (IAB). Documents approved for publication by the IAB are not a candidate for any level of Internet Standard; see Section 2 of RFC 7841.

このドキュメントは、インターネットアーキテクチャボード(IAB)の製品であり、IABが永続的な記録を提供するために価値があると見なした情報を表しています。これは、インターネットアーキテクチャボード(IAB)のコンセンサスを表しています。 IABによって公開が承認されたドキュメントは、どのレベルのインターネット標準の候補にもなりません。 RFC 7841のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7996.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、http://www.rfc-editor.org/info/rfc7996で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2016 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.

この文書は、BCP 78およびIETF文書に関するIETFトラストの法的規定(http://trustee.ietf.org/license-info)の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。

Table of Contents

目次

   1. Introduction ....................................................2
   2. SVG 1.2 RFC: An SVG Profile for RFCs ............................3
      2.1. Elements, Properties, and Attributes Allowed in
           SVG 1.2 RFC ................................................4
   3. How to Create SVG Drawings ......................................7
   4. Accessibility Considerations ....................................7
   5. Examples of Diagrams Common in RFCs .............................8
      5.1. Packet Layout Diagrams .....................................8
      5.2. Sequence Diagrams (1) ......................................8
      5.3. Sequence Diagrams (2) ......................................8
   6. Security Considerations .........................................8
   7. References ......................................................9
      7.1. Normative References .......................................9
      7.2. Informative References .....................................9
   Appendix A. RELAX NG Compact (RNC) Schema for SVG 1.2 RFC .........11
   IAB Members at the Time of Approval ...............................53
   Acknowledgements ..................................................53
   Author's Address ..................................................53
        
1. Introduction
1. はじめに

Over the last few years, the RFC Editor has worked with the Internet community to develop specifications for changes in the format of RFCs. An outline of the resulting specifications was published as [RFC6949] in May 2013. Since then, a Design Team has been working with the RFC Editor to flesh out those specifications. One aspect of the changes is to allow line drawings in RFCs; [RFC6949] says

ここ数年、RFCエディターはインターネットコミュニティと協力して、RFCの形式の変更に関する仕様を開発してきました。結果の仕様の概要は、2013年5月に[RFC6949]として公開されました。それ以来、設計チームは、RFCエディターと協力してそれらの仕様を具体化しています。変更の1つの側面は、RFCで線画を許可することです。 [RFC6949]は言う

Graphics may include ASCII art and a more complex form to be defined, such as SVG line art [SVG]. Color and grayscale will not be accepted. RFCs must correctly display in monochromatic black-and-white to allow for monochrome displays, black-and-white printing, and support for visual disabilities.

グラフィックには、ASCIIアートと、SVGラインアート[SVG]などのより複雑なフォームを含めることができます。カラーとグレースケールは受け入れられません。 RFCは、モノクロディスプレイ、白黒印刷、および視覚障害のサポートを可能にするために、モノクロ白黒で正しく表示する必要があります。

SVG (Scalable Vector Graphics) has been developed by W3C, the World Wide Web Consortium; its current standard is SVG 1.1 Full [W3C.REC-SVG11-20110816]. This document defines SVG 1.2 RFC, an SVG profile (i.e., a subset of SVG) that is suitable for RFC line drawings.

SVG(Scalable Vector Graphics)は、World Wide WebコンソーシアムであるW3Cによって開発されました。現在の標準はSVG 1.1 Full [W3C.REC-SVG11-20110816]です。このドキュメントでは、SVG 1.2 RFC、RFCの線画に適したSVGプロファイル(つまり、SVGのサブセット)を定義しています。

Note that in RFCs, the text provides normative descriptions of protocols, systems, etc. Diagrams may be used to help explain concepts more clearly, but they provide supporting details and should not be considered to be complete specifications in themselves.

RFCでは、テキストはプロトコル、システムなどの規範的な説明を提供することに注意してください。図は、概念をより明確に説明するために使用できますが、それらはサポート詳細を提供し、それ自体が完全な仕様であると見なされるべきではありません。

The details (particularly any vocabularies) described in this document are expected to change based on experience gained in implementing the new publication toolsets. Revised documents will be published capturing those changes as the toolsets are completed. Other implementers must not expect those changes to remain backwards-compatible with the details described in this document.

このドキュメントに記載されている詳細(特に語彙)は、新しいパブリケーションツールセットの実装で得られた経験に基づいて変更されることが予想されます。ツールセットが完成すると、変更されたドキュメントが公開され、変更が記録されます。他の実装者は、これらの変更がこのドキュメントで説明されている詳細との下位互換性を維持することを期待してはなりません。

2. SVG 1.2 RFC: An SVG Profile for RFCs
2. SVG 1.2 RFC:RFCのSVGプロファイル

As a starting point for SVG 1.2 RFC, the Design Team decided to use SVG Tiny 1.2 (also referred to as "SVG 1.2 Tiny") [W3C.REC-SVGTiny12-20081222]. SVG 1.2 Tiny is an SVG subset intended to be implemented on small, mobile devices such as cell phones and smartphones. That should allow RFCs to be rendered well on such devices, especially those that have small screens. However, RFCs are self-contained documents that do not change once they are published. The use of SVG drawings in RFCs is intended to allow authors to create drawings that are simple to produce and are easier to understand than our traditional "ASCII art" ones. In short, we are also trying to improve access to the content in RFCs, so SVG drawings need to be kept as simple as possible.

SVG 1.2 RFCの出発点として、設計チームはSVG Tiny 1.2(「SVG 1.2 Tiny」とも呼ばれる)[W3C.REC-SVGTiny12-20081222]を使用することを決定しました。 SVG 1.2 Tinyは、携帯電話やスマートフォンなどの小型のモバイルデバイスに実装することを目的としたSVGサブセットです。これにより、そのようなデバイス、特に画面が小さいデバイスでRFCを適切にレンダリングできるようになります。ただし、RFCは自己完結型のドキュメントであり、公開後は変更されません。 RFCでのSVG図面の使用は、作成者が、従来の「ASCIIアート」の図面よりも作成が簡単で理解しやすい図面を作成できるようにすることを目的としています。つまり、RFCのコンテンツへのアクセスを改善することも試みているため、SVG図面はできるだけシンプルに保つ必要があります。

Appendix A (below) provides a complete RELAX NG Compact (RNC) schema [RNG-HOME] for SVG 1.2 RFC. It is derived from the SVG 1.2 schema, and is the formal definition of SVG 1.2 RFC. The remainder of this section gives a simplified -- i.e., easier to read and understand -- overview of SVG 1.2 RFC.

付録A(下記)は、SVG 1.2 RFCの完全なRELAX NG Compact(RNC)スキーマ[RNG-HOME]を提供します。これはSVG 1.2スキーマから派生したもので、SVG 1.2 RFCの正式な定義です。このセクションの残りの部分では、SVG 1.2 RFCの概要を簡単に(つまり、読みやすく、理解しやすく)提供します。

SVG can provide a complete User Interface, but within RFCs, all we need are simple diagrams that do not change once the RFC is published. Therefore, SVG 1.2 RFC does not allow anything from the following sections in SVG Tiny 1.2 [W3C.REC-SVGTiny12-20081222]:

SVGは完全なユーザーインターフェイスを提供できますが、RFC内で必要なのは、RFCが公開された後に変更されない単純な図だけです。したがって、SVG 1.2 RFCでは、SVG Tiny 1.2 [W3C.REC-SVGTiny12-20081222]の次のセクションの内容は許可されていません。

12 Multimedia 13 Interactivity 15 Scripting 16 Animation 18 Metadata 19 Extensibility

12マルチメディア13対話性15スクリプト16アニメーション18メタデータ19拡張性

Note that SVG Tiny 1.2 elements may have many properties or attributes that are needed to support aspects of the above sections. Those are not allowed in SVG 1.2 RFC.

SVG Tiny 1.2要素には、上記のセクションの側面をサポートするために必要な多くのプロパティまたは属性がある場合があることに注意してください。これらはSVG 1.2 RFCでは許可されていません。

We now consider these other sections in SVG Tiny 1.2 [W3C.REC-SVGTiny12-20081222]:

SVG Tiny 1.2 [W3C.REC-SVGTiny12-20081222]でこれらの他のセクションを検討します。

9 Basic Shapes

9基本形状

10 Text Everything in this section is allowed in SVG 1.2 RFC.

10テキストこのセクションのすべてがSVG 1.2 RFCで許可されています。

11 Painting: Filling, Stroking, Colors and Paint Servers Anything relating to 'color' is not allowed in SVG 1.2 RFC; everything else is allowed. This is a requirement documented in [RFC6949].

11ペイント:塗りつぶし、ストローク、カラー、およびペイントサーバー「カラー」に関連するものは、SVG 1.2 RFCでは許可されていません。それ以外はすべて許可されます。これは、[RFC6949]で文書化されている要件です。

14 Linking SVG Tiny 1.2 allows Internationalized Resource Identifiers (IRIs) in references. In SVG 1.2 RFC, such links must be ASCII only. That should not cause problems, since one can just use the URI form of any IRI. Authors should try to use links only to URIs that are long-term stable.

14 SVG Tiny 1.2をリンクすると、参照で国際化リソース識別子(IRI)を使用できます。 SVG 1.2 RFCでは、そのようなリンクはASCIIのみである必要があります。どんなIRIのURI形式でも使用できるので、問題が発生することはありません。著者は、長期的に安定しているURIへのリンクのみを使用するようにしてください。

17 Fonts SVG 1.2 RFC only allows 'serif', 'sans-serif', and 'monospace' generic font families from the WebFonts facility, described in Section 15 ("Fonts") of the W3C Cascading Style Sheets (CSS) 2.1 document [W3C.REC-CSS2-20110607]. In particular, the SVG 'font' element is not allowed.

17フォントSVG 1.2 RFCは、W3Cカスケードスタイルシート(CSS)2.1ドキュメントのセクション15(「フォント」)で説明されているWebFonts機能からの「serif」、「sans-serif」、および「monospace」の汎用フォントファミリのみを許可します。 W3C.REC-CSS2-20110607]。特に、SVGの 'font'要素は許可されていません。

2.1. Elements, Properties, and Attributes Allowed in SVG 1.2 RFC
2.1. SVG 1.2 RFCで許可されている要素、プロパティ、および属性

This section discusses elements, properties, and attributes selected for SVG 1.2 RFC from [W3C.REC-SVGTiny12-20081222].

このセクションでは、[W3C.REC-SVGTiny12-20081222]からSVG 1.2 RFC用に選択された要素、プロパティ、および属性について説明します。

In the list below, elements and properties are listed on the left, and their allowed values are given in parentheses on the right.

以下のリストでは、要素とプロパティが左側にリストされ、許可されている値が右側の括弧内に示されています。

<color> is the list of allowed colors, a black-and-white subset of the SVG color names.

<color>は許可された色のリストであり、SVG色名の白黒のサブセットです。

<style> is a set of CSS attributes that are commonly used (by SVG drawing applications). They are not part of SVG Tiny 1.2 but are included here for compatibility. Note that

<style>は、(SVG描画アプリケーションによって)一般的に使用されるCSS属性のセットです。これらはSVG Tiny 1.2の一部ではありませんが、互換性のためにここに含まれています。ご了承ください

- There is no guarantee that any renderer will implement all the CSS attributes a drawing application may use.

- レンダラーが描画アプリケーションが使用する可能性のあるすべてのCSS属性を実装するという保証はありません。

- Authors will need to consider the compatibility of their drawings with rendering devices.

- 著者は、描画とレンダリングデバイスの互換性を考慮する必要があります。

Elements:

要素:

svg (version=1.2, baseProfile=tiny, width, viewBox, preserveAspectRatio, snapshotTime, height, id, role) g (label, class, id, role, fill, <style>, transform) defs (id, role, fill) title (id, role) desc (id, role) a (id, role, fill, transform) use (x, y, href, xlink:href, id, role, fill, transform)

svg(version = 1.2、baseProfile = tiny、width、viewBox、preserveAspectRatio、snapshotTime、height、id、role)g(label、class、id、role、fill、<style>、transform)defs(id、role、fill)タイトル(id、role)desc(id、role)a(id、role、fill、transform)use(x、y、href、xlink:href、id、role、fill、transform)

rect (x, y, width, height, rx, ry, stroke-miterlimit, id, role, fill, <style>, transform) circle (cx, cy, r, id, role, fill, <style>, transform) ellipse (cx, cy, rx, ry, id, role, fill, <style>, transform) line (x1, y1, x2, y2, id, role, fill, transform) polyline (points, id, role, fill, transform) polygon (points, id, role, fill, <style>, transform) text (x, y, rotate, space, id, role, fill, <style>, transform) tspan (x, y, id, role, fill) textArea (x, y, width, height, auto, id, role, fill, transform) tbreak (id, role)

rect(x、y、width、height、rx、ry、stroke-miterlimit、id、role、fill、<style>、transform)circle(cx、cy、r、id、role、fill、<style>、transform)楕円(cx、cy、rx、ry、id、role、fill、<style>、transform)line(x1、y1、x2、y2、id、role、fill、transform)ポリライン(points、id、role、fill、変換)ポリゴン(ポイント、ID、ロール、塗りつぶし、<スタイル>、変換)テキスト(x、y、回転、スペース、ID、ロール、塗りつぶし、<スタイル>、変換)tspan(x、y、ID、ロール、 fill)textArea(x、y、width、height、auto、id、role、fill、transform)tbreak(id、role)

solidColor (id, role, fill) linearGradient (gradientUnits, x1, y1, x2, y2, id, role, fill) radialGradient (gradientUnits, cx, cy, r, id, role, fill) stop (id, role, fill) path (d, pathLength, stroke-miterlimit, id, role, fill, <style>, transform)

solidColor(id、role、fill)linearGradient(gradientUnits、x1、y1、x2、y2、id、role、fill)radialGradient(gradientUnits、cx、cy、r、id、role、fill)stop(id、role、fill)パス(d、pathLength、stroke-miterlimit、id、role、fill、<style>、transform)

Properties: (most allow "inherit" as a value)

プロパティ:(ほとんどが値として「継承」を許可します)

<style> (font-family, font-weight, font-style, font-variant, direction, unicode-bidi, text-anchor, fill, fill-rule)

<style>(font-family、font-weight、font-style、font-variant、direction、unicode-bidi、text-anchor、fill、fill-rule)

     <color>          (black, white, #000000, #ffffff, #FFFFFF)
        

stroke (<color>, none, currentColor) stroke-width stroke-linecap (butt, round, square) stroke-linejoin (miter, round, bevel) stroke-miterlimit stroke-dasharray stroke-dashoffset stroke-opacity vector-effect (non-scaling-stroke, none) viewport-fill (none, currentColor) viewport-fill-opacity

stroke(<color>、none、currentColor)stroke-width stroke-linecap(butt、round、square)stroke-linejoin(miter、round、bevel)stroke-miterlimit stroke-dasharray stroke-dashoffset stroke-opacity vector-effect(non -scaling-stroke、none)viewport-fill(none、currentColor)viewport-fill-opacity

display (inline, block, list-item, run-in, compact, marker, table, inline-table, table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, table-caption, none) visibility (visible, hidden, collapse) color-rendering (auto, optimizeSpeed, optimizeQuality) shape-rendering (auto, optimizeSpeed, crispEdges, geometricPrecision) text-rendering (auto, optimizeSpeed, optimizeLegibility, geometricPrecision) buffered-rendering (auto, dynamic, static)

表示(インライン、ブロック、リスト項目、実行、コンパクト、マーカー、テーブル、インラインテーブル、テーブル行グループ、テーブルヘッダーグループ、テーブルフッターグループ、テーブル行、テーブル列group、table-column、table-cell、table-caption、none)可視性(visible、hidden、collapse)カラーレンダリング(auto、optimizeSpeed、optimizeQuality)シェイプレンダリング(auto、optimizeSpeed、crispEdges、geometricPrecision)テキストレンダリング( auto、optimizeSpeed、optimizeLegibility、geometricPrecision)バッファリングされたレンダリング(auto、dynamic、static)

opacity solid-opacity solid-color (currentColor, <color>) color (currentColor, <color>) stop-color (currentColor, <color>) stop-opacity

opacity solid-opacity solid-color(currentColor、<color>)color(currentColor、<color>)stop-color(currentColor、<color>)stop-opacity

line-increment (auto) text-align (start, end, center) display-align (auto, before, center, after)

line-increment(auto)text-align(start、end、center)display-align(auto、before、center、after)

font-size font-family (serif, sans-serif, monospace) font-weight (normal, bold, bolder, lighter) font-style (normal, italic, oblique) font-variant (normal, small-caps) direction (ltr, rtl) unicode-bidi (normal, embed, bidi-override) text-anchor (start, middle, end) fill (none, <color>) fill-rule (nonzero, evenodd) fill-opacity

font-size font-family(serif、sans-serif、monospace)font-weight(normal、bold、bolder、lighter)font-style(normal、italic、oblique)font-variant(normal、small-caps)direction(ltr 、rtl)unicode-bidi(通常、埋め込み、bidi-override)テキストアンカー(開始、中間、終了)塗りつぶし(なし、<色>)塗りつぶし規則(ゼロ以外、偶数)塗りつぶし不透明度

3. How to Create SVG Drawings
3. SVG図面を作成する方法

Many drawing packages can be used to create SVG drawings -- for example, Open Source packages Inkscape and Dia. Be aware that such packages may use SVG elements or attributes that are not allowed in SVG 1.2 RFC.

多くの描画パッケージを使用してSVG描画を作成できます。たとえば、オープンソースパッケージのInkscapeやDiaなどです。そのようなパッケージは、SVG 1.2 RFCで許可されていないSVG要素または属性を使用する可能性があることに注意してください。

o For example, the 'marker' attribute is often used to place symbols such as arrowheads on lines, but 'marker' is not allowed in SVG 1.2 Tiny or SVG 1.2 RFC. In such cases, one has to draw the arrowhead in another, simpler way.

o たとえば、「マーカー」属性は、矢印などの記号を線に配置するためによく使用されますが、「マーカー」はSVG 1.2 TinyまたはSVG 1.2 RFCでは許可されていません。そのような場合、矢印を別の簡単な方法で描く必要があります。

o SVG clip paths are used to define a shape; objects outside that shape become invisible. The 'clipPath' element is not allowed in SVG 1.2 Tiny or SVG 1.2 RFC.

o SVGクリップパスは、形状を定義するために使用されます。その形状の外側のオブジェクトは非表示になります。 'clipPath'要素は、SVG 1.2 TinyまたはSVG 1.2 RFCでは許可されていません。

Diagrams produced with these packages may contain elements, their attributes or properties, or values of attributes or properties that are not allowed in SVG 1.2 RFC. We will need to provide a tool to either (1) strip out anything that is not allowed in SVG 1.2 RFC or (2) replace disallowed values (e.g., replace 'Sans' with 'sans-serif' as an allowed value for 'font-family'). Experience with a simple test version of a tool for this has shown that such deletion and replacement can be effective for making SVG files from drawing packages conform to SVG 1.2 RFC, without visibly changing the diagrams they produce.

これらのパッケージで作成された図には、SVG 1.2 RFCで許可されていない要素、その属性またはプロパティ、または属性またはプロパティの値が含まれている場合があります。 (1)SVG 1.2 RFCで許可されていないものをすべて削除するか、(2)許可されていない値を置き換える(たとえば、 'Sans'を 'fontsの許可値として' sans-serif 'に置き換える)ツールを提供する必要があります-家族')。このためのツールの簡単なテストバージョンの経験から、そのような削除と置換は、図面パッケージからのSVGファイルをSVG 1.2 RFCに準拠させるのに効果的であり、作成するダイアグラムを目に見えるように変更する必要はありません。

The tool described above can also be used by authors simply to check that their diagrams conform to SVG 1.2 RFC. To help with this, if visible changes do occur, the tool should produce a list of non-allowed keywords and the context in which they were found.

作成者は、上記のツールを使用して、図がSVG 1.2 RFCに準拠していることを確認することもできます。これを支援するために、目に見える変化が発生した場合、ツールは許可されていないキーワードとそれらが見つかったコンテキストのリストを作成する必要があります。

To include a diagram in an RFC, the xml2rfc (v3) tool will need to provide a way to include SVG drawings in Internet-Drafts, as described in Section 2.5 of [RFC7991].

[RFC7991]のセクション2.5で説明されているように、ダイアグラムをRFCに含めるには、xml2rfc(v3)ツールでインターネットドラフトにSVG図面を含める方法を提供する必要があります。

4. Accessibility Considerations
4. アクセシビリティの考慮事項

One of the long-term goals for RFCs is to make them more accessible, e.g., to sight-impaired readers. For diagrams, it would be useful for authors to provide alternative forms of the diagram, so that voice-reading software could be used to "talk through" the diagram. Simply reading the SVG code for a complex diagram seems unlikely to work.

RFCの長期的な目標の1つは、RFCを視覚障害者などにアクセスしやすくすることです。図の場合、作成者が図の代替形式を提供すると便利です。そのため、音声読み取りソフトウェアを使用して図を「話す」ことができます。複雑な図のSVGコードを読み取るだけでは機能しないようです。

SVG 1.2 RFC allows SVG's 'title' and 'desc' elements. 'title' provides a brief text caption for an SVG object (much like a figure caption), and 'desc' provides a longer text description of what the object actually represents. As well, the SVG 'role' attribute can be used to indicate to a browser how an SVG object is to be interpreted. Good suggestions on how to use these elements are given in [SVG-ACCESS-TIPS].

SVG 1.2 RFCでは、SVGの「title」および「desc」要素を使用できます。 'title'はSVGオブジェクトの簡単なテキストキャプションを提供し(図のキャプションと同様)、 'desc'はオブジェクトが実際に何を表しているかについてのより長いテキストの説明を提供します。また、SVGの 'role'属性を使用して、SVGオブジェクトをどのように解釈するかをブラウザーに示すことができます。これらの要素を使用する方法についての良い提案は、[SVG-ACCESS-TIPS]で提供されています。

ARIA is a W3C Recommendation for using SVG to create (as the name "ARIA" indicates) "Accessible Rich Internet Applications". A helpful introduction to ARIA is provided by [SVG-ARIA-PRIMER], while [SVG-USING-ARIA] gives examples of how to use ARIA to enhance SVG accessibility.

ARIAは、SVGを使用して(「ARIA」という名前が示すように)「アクセス可能なリッチインターネットアプリケーション」を作成するためのW3C勧告です。 [SVG-ARIA-PRIMER]がARIAの役立つ紹介を提供し、[SVG-USING-ARIA]がARIAを使用してSVGのアクセシビリティを強化する方法の例を示します。

5. Examples of Diagrams Common in RFCs
5. RFCに共通する図の例

Another way to create SVG drawings is to write programs to draw them. For example, using Python and its svgwrite module is a pleasant environment (for those who like writing code); this section presents a few examples of diagrams created in this way. Note that they are merely examples of typical diagrams from RFCs.

SVG描画を作成する別の方法は、それらを描画するプログラムを作成することです。たとえば、Pythonとそのsvgwriteモジュールを使用するのは快適な環境です(コードを書くのが好きな人にとって)。このセクションでは、この方法で作成した図の例をいくつか示します。それらはRFCからの典型的な図の単なる例であることに注意してください。

The SVG diagrams for this section, along with an HTML version of this document that includes the SVG diagrams, can be seen at [NB-SVG-1.2-RFC].

このセクションのSVG図、およびSVG図を含むこのドキュメントのHTMLバージョンは、[NB-SVG-1.2-RFC]で確認できます。

5.1. Packet Layout Diagrams
5.1. パケットレイアウト図

Example: Figure 3 from [RFC793].

例:[RFC793]の図3。

5.2. Sequence Diagrams (1)
5.2. シーケンス図(1)

Example: Figure 6 from [ExpTrustedProxy].

例:[ExpTrustedProxy]の図6。

5.3. Sequence Diagrams (2)
5.3. シーケンス図(2)

Example: Figure 3 from [RFC4321].

例:[RFC4321]の図3。

6. Security Considerations
6. セキュリティに関する考慮事項

This document does not introduce any security considerations on its own.

このドキュメントでは、セキュリティに関する考慮事項自体は紹介していません。

7. References
7. 参考文献
7.1. Normative References
7.1. 引用文献

[RFC6949] Flanagan, H. and N. Brownlee, "RFC Series Format Requirements and Future Development", RFC 6949, DOI 10.17487/RFC6949, May 2013, <http://www.rfc-editor.org/info/rfc6949>.

[RFC6949] Flanagan、H。およびN. Brownlee、「RFCシリーズフォーマットの要件と将来の開発」、RFC 6949、DOI 10.17487 / RFC6949、2013年5月、<http://www.rfc-editor.org/info/rfc6949> 。

[W3C.REC-SVGTiny12-20081222] Andersson, O., Berjon, R., Dahlstrom, E., Emmons, A., Ferraiolo, J., Grasso, A., Hardy, V., Hayman, S., Jackson, D., Lilley, C., McCormack, C., Neumann, A., Northway, C., Quint, A., Ramani, N., Schepers, D., and A. Shellshear, "Scalable Vector Graphics (SVG) Tiny 1.2 Specification", World Wide Web Consortium Recommendation REC-SVGTiny12-20081222, December 2008, <http://www.w3.org/TR/2008/REC-SVGTiny12-20081222>.

[W3C.REC-SVGTiny12-20081222] Andersson、O.、Berjon、R.、Dahlstrom、E.、Emmons、A.、Ferraiolo、J.、Grasso、A.、Hardy、V.、Hayman、S.、Jackson 、D。、リリー、C。、マコーマック、C。、ノイマン、A。、ノースウェイ、C。、クイント、A。、ラマニ、N。、シェパーズ、D。、およびA. Shellshear、「Scalable Vector Graphics(SVG )Tiny 1.2 Specification」、World Wide Web Consortium Recommendation REC-SVGTiny12-20081222、2008年12月、<http://www.w3.org/TR/2008/REC-SVGTiny12-20081222>。

[W3C.REC-CSS2-20110607] Bos, B., Celik, T., Hickson, I., and H. Lie, "Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification", World Wide Web Consortium Recommendation REC-CSS2-20110607, June 2011, <http://www.w3.org/TR/2011/REC-CSS2-20110607>.

[W3C.REC-CSS2-20110607] Bos、B.、Celik、T.、Hickson、I。、およびH. Lie、「Cascading Style Sheets Level 2 Revision 1(CSS 2.1)Specification」、World Wide Web Consortium Recommendation REC -CSS2-20110607、2011年6月、<http://www.w3.org/TR/2011/REC-CSS2-20110607>。

7.2. Informative References
7.2. 参考引用

[W3C.REC-SVG11-20110816] Dahlstrom, E., Dengler, P., Grasso, A., Lilley, C., McCormack, C., Schepers, D., Watt, J., Ferraiolo, J., Fujisawa, J., and D. Jackson, "Scalable Vector Graphics (SVG) 1.1 (Second Edition)", World Wide Web Consortium Recommendation REC-SVG11-20110816, August 2011, <http://www.w3.org/TR/2011/REC-SVG11-20110816>.

[W3C.REC-SVG11-20110816] Dahlstrom、E.、Dengler、P.、Grasso、A.、Lilley、C.、McCormack、C.、Schepers、D.、Watt、J.、Ferraiolo、J。、藤沢、J。、およびD.ジャクソン、「Scalable Vector Graphics(SVG)1.1(Second Edition)」、World Wide Web Consortium Recommendation REC-SVG11-20110816、2011年8月、<http://www.w3.org/TR/ 2011 / REC-SVG11-20110816>。

[SVG-ACCESS-TIPS] Watson, L., "Tips for Creating Accessible SVG", May 2014, <http://www.sitepoint.com/tips-accessible-svg>.

[SVG-ACCESS-TIPS] Watson、L。、「Tips for Creating Accessible SVG」、2014年5月、<http://www.sitepoint.com/tips-accessible-svg>。

[SVG-ARIA-PRIMER] Pappas, L., Schwerdtfeger, R., and M. Cooper, "WAI-ARIA 1.0 Primer", World Wide Web Consortium Working Draft, September 2010, <http://www.w3.org/TR/2010/WD-wai-aria-primer-20100916>.

[SVG-ARIA-PRIMER] Pappas、L.、Schwerdtfeger、R。、およびM. Cooper、「WAI-ARIA 1.0 Primer」、World Wide Web Consortium Working Draft、2010年9月、<http://www.w3.org / TR / 2010 / WD-wai-aria-primer-20100916>。

[SVG-USING-ARIA] Watson, L., "Using ARIA to enhance SVG accessibility", The Paciello Group, December 2013, <https://www.paciellogroup.com/blog/2013/12/ using-aria-enhance-svg-accessibility/>.

[SVG-USING-ARIA] Watson、L。、「ARIAを使用してSVGのアクセシビリティを強化する」、The Paciello Group、2013年12月、<https://www.paciellogroup.com/blog/2013/12/using-aria-enhance -svg-accessibility />。

[RFC7991] Hoffman, P., "The "xml2rfc" Version 3 Vocabulary", RFC 7991, DOI 10.17487/RFC7991, December 2016, <http://www.rfc-editor.org/info/rfc7991>.

[RFC7991] Hoffman、P。、「The "xml2rfc" Version 3 Vocabulary」、RFC 7991、DOI 10.17487 / RFC7991、2016年12月、<http://www.rfc-editor.org/info/rfc7991>。

[NB-SVG-1.2-RFC] Brownlee, N., "Index of /materials/format/svg", <https://www.rfc-editor.org/materials/format/svg/>.

[NB-SVG-1.2-RFC] Brownlee、N。、「Index of / materials / format / svg」、<https://www.rfc-editor.org/materials/format/svg/>。

[RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, DOI 10.17487/RFC0793, September 1981, <http://www.rfc-editor.org/info/rfc793>.

[RFC793] Postel、J。、「Transmission Control Protocol」、STD 7、RFC 793、DOI 10.17487 / RFC0793、1981年9月、<http://www.rfc-editor.org/info/rfc793>。

[ExpTrustedProxy] Loreto, S., Mattsson, J., Skog, R., Spaak, H., Bourg, G., Druta, D., and M. Hafeez, "Explicit Trusted Proxy in HTTP/2.0", Work in Progress, draft-loreto-httpbis-trusted-proxy20-01, February 2014.

[ExpTrustedProxy] Loreto、S.、Mattsson、J.、Skog、R.、Spaak、H.、Bourg、G.、Druta、D.、and M. Hafeez、 "Explicit Trusted Proxy in HTTP / 2.0"、Work in進捗状況、draft-loreto-httpbis-trusted-proxy20-01、2014年2月。

[RFC4321] Sparks, R., "Problems Identified Associated with the Session Initiation Protocol's (SIP) Non-INVITE Transaction", RFC 4321, DOI 10.17487/RFC4321, January 2006, <http://www.rfc-editor.org/info/rfc4321>.

[RFC4321] Sparks、R。、「Session Initiation Protocol(SIP)Non-INVITE Transactionに関連して識別された問題」、RFC 4321、DOI 10.17487 / RFC4321、2006年1月、<http://www.rfc-editor.org/ info / rfc4321>。

[RNG-HOME] Murata, M., "RELAX NG home page", February 2014, <http://www.relaxng.org/>.

[RNG-HOME] Murata、M。、「RELAX NG home page」、2014年2月、<http://www.relaxng.org/>。

Appendix A. RELAX NG Compact (RNC) Schema for SVG 1.2 RFC

付録A. SVG 1.2 RFCのRELAX NG Compact(RNC)スキーマ

The following RNC schema can be used to check whether an SVG file conforms to SVG 1.2 RFC. For example, if this schema were contained in a file called SVG-1.2-RFC.rnc, the following command will test whether SVG file diagram.svg is a conformant SVG 1.2 RFC drawing.

次のRNCスキーマを使用して、SVGファイルがSVG 1.2 RFCに準拠しているかどうかを確認できます。たとえば、このスキーマがSVG-1.2-RFC.rncというファイルに含まれている場合、次のコマンドはSVGファイルdiagram.svgが適合SVG 1.2 RFC図面であるかどうかをテストします。

jing -c SVG-1.2-RFC.rnc diagram.svg

jing -c SVG-1.2-RFC.rnc diagram.svg

The RNC schema included below is available on the RFC Editor website <https://www.rfc-editor.org/materials/format/SVG-1.2-RFC.rnc>. The website is considered definitive should there be any discrepancies.

以下に含まれるRNCスキーマは、RFCエディターのWebサイト<https://www.rfc-editor.org/materials/format/SVG-1.2-RFC.rnc>で入手できます。何らかの矛盾がある場合、ウェブサイトは決定的なものと見なされます。

#---  SVG 1.2 RFC RNC schema; Nevil Brownlee, Thu 26 Jan 2016 (NZST)
        
default namespace = "http://www.w3.org/2000/svg"
namespace ns1 = "http://www.w3.org/1999/xlink"
        
rfc-color = (  # SVG-1.2-RFC doesn't allow color or grayscale
  "black" | "white" | "#000000" | "#FFFFFF" | "#ffffff" | "inherit" )
start = svg
svg =
  element svg {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute width { xsd:string }?,
    attribute height { xsd:string }?,
    attribute preserveAspectRatio {
      xsd:string { pattern = "\s*(none|xMidYMid)\s*(meet)?\s*" }
    }?,
    attribute viewBox { text }?,
    attribute zoomAndPan { "disable" }?,
    attribute version {
      xsd:string "1.2"
    }?,
    attribute baseProfile {
      xsd:string "tiny"
    }?,
    attribute contentScriptType { xsd:string }?,
    attribute snapshotTime { xsd:string "none" | xsd:string }?,
    attribute timelineBegin {
      xsd:string "onLoad" | xsd:string "onStart"
    }?,
    attribute playbackOrder {
      xsd:string "all" | xsd:string "forwardOnly"
    }?,
    (desc
     | svgTitle
     | path
     | rect
     | circle
     | line
     | ellipse
     | polyline
     | polygon
     | solidColor
     | textArea
     | linearGradient
     | radialGradient
     | \text
     | g
     | defs
     | use
     | a)*
  }
desc =
  element desc {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    ((attribute display {
        "inline"
        | "block"
        | "list-item"
        | "run-in"
        | "compact"
        | "marker"
        | "table"
        | "inline-table"
        | "table-row-group"
        | "table-header-group"
        | "table-footer-group"
        | "table-row"
        | "table-column-group"
        | "table-column"
        | "table-cell"
        | "table-caption"
        | "none"
        | "inherit"
      }?,
      attribute visibility { "visible" | "hidden" | "collapse"
        | "inherit" }?,
      attribute image-rendering {
        "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
      }?,
      attribute shape-rendering {
        "auto"
        | "optimizeSpeed"
        | "crispEdges"
        | "geometricPrecision"
        | "inherit"
      }?,
      attribute text-rendering {
        "auto"
        | "optimizeSpeed"
        | "optimizeLegibility"
        | "geometricPrecision"
        | "inherit"
      }?,
      attribute buffered-rendering {
        
        "auto" | "dynamic" | "static" | "inherit"
      }?)
     & (attribute viewport-fill { "none" | rfc-color }?,
        attribute viewport-fill-opacity { "inherit" | xsd:string }?)),
    text
  }
svgTitle =
  element title {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    ((attribute display {
        "inline"
        | "block"
        | "list-item"
        | "run-in"
        | "compact"
        | "marker"
        | "table"
        | "inline-table"
        | "table-row-group"
        | "table-header-group"
        | "table-footer-group"
        | "table-row"
        | "table-column-group"
        | "table-column"
        | "table-cell"
        | "table-caption"
        | "none"
        | "inherit"
      }?,
      attribute visibility { "visible" | "hidden"
        | "collapse" | "inherit" }?,
      attribute image-rendering {
        "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
      }?,
      attribute shape-rendering {
        "auto"
        | "optimizeSpeed"
        | "crispEdges"
        | "geometricPrecision"
        | "inherit"
      }?,
      attribute text-rendering {
        "auto"
        | "optimizeSpeed"
        | "optimizeLegibility"
        | "geometricPrecision"
        | "inherit"
      }?,
      attribute buffered-rendering {
        "auto" | "dynamic" | "static" | "inherit"
      }?)
     & (attribute viewport-fill { "none" | rfc-color }?,
        attribute viewport-fill-opacity { "inherit" | xsd:string }?)),
    text
  }
path =
  element path {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute transform { xsd:string | "none" }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        
        }?)),
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute d { xsd:string }?,
    attribute pathLength { xsd:string }?,
    attribute style { xsd:string }?,  # Added to SVG-1.2-RFC (Inkscape)
    (desc
     | svgTitle)*
  }
rect =
  element rect {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute transform { xsd:string | "none" }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute x { xsd:string }?,
    attribute y { xsd:string }?,
    attribute width { xsd:string }?,
    attribute height { xsd:string }?,
    attribute rx { xsd:string }?,
    attribute ry { xsd:string }?,
    attribute style { xsd:string }?,  # Added to SVG-1.2-RFC (Inkscape)
    (desc
        
     | svgTitle)*
  }
circle =
  element circle {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute transform { xsd:string | "none" }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
        
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute cx { xsd:string }?,
    attribute cy { xsd:string }?,
    attribute r { xsd:string }?,
    attribute style { xsd:string }?,  # Added to SVG-1.2-RFC (Inkscape)
    (desc
     | svgTitle)*
  }
line =
  element line {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute transform { xsd:string | "none" }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
        
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute x1 { xsd:string }?,
    attribute y1 { xsd:string }?,
    attribute x2 { xsd:string }?,
    attribute y2 { xsd:string }?,
    (desc
     | svgTitle)*
  }
ellipse =
  element ellipse {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute transform { xsd:string | "none" }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute rx { xsd:string }?,
    attribute ry { xsd:string }?,
    attribute cx { xsd:string }?,
    attribute cy { xsd:string }?,
    attribute style { xsd:string }?,  # Added to SVG-1.2-RFC (Inkscape)
    (desc
     | svgTitle)*
  }
polyline =
  element polyline {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute transform { xsd:string | "none" }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute points { xsd:string }?,
    (desc
     | svgTitle)*
  }
polygon =
  element polygon {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
        
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute transform { xsd:string | "none" }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
        
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute points { xsd:string }?,
    attribute style { xsd:string }?,  # Added to SVG-1.2-RFC (Inkscape)
    (desc
     | svgTitle)*
  }
solidColor =
  element solidColor {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
        
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    (desc
     | svgTitle)*
  }
textArea =
  element textArea {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute transform { xsd:string | "none" }?,
    attribute x { xsd:string }?,
    attribute y { xsd:string }?,
    attribute width { xsd:string | "auto" }?,
    attribute height { xsd:string | "auto" }?,
    (tspan
     | desc
     | svgTitle
     | tspan_2
     | text
     | a_2)+
  }
linearGradient =
  element linearGradient {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
        
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute x1 { xsd:string }?,
    attribute y1 { xsd:string }?,
    attribute x2 { xsd:string }?,
    attribute y2 { xsd:string }?,
    (desc
     | svgTitle)*
  }
radialGradient =
  element radialGradient {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
        
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute cx { xsd:string }?,
    attribute cy { xsd:string }?,
    attribute r { xsd:string }?,
    (desc
     | svgTitle)*
  }
\text =
  element text {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute transform { xsd:string | "none" }?,
    attribute x { xsd:string }?,
    attribute y { xsd:string }?,
    attribute rotate { xsd:string }?,
    attribute style { xsd:string }?,  # Added to SVG-1.2-RFC (Inkscape)
    (desc
     | svgTitle
     | tspan_2
     | text
     | a_2)+
  }
g =
  element g {
        
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
        
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute transform { xsd:string | "none" }?,
    attribute style { xsd:string }?,
        # Added to SVG-1.2-RFC (for Inkscape)
    attribute visibility {
      "visible" | "hidden" | "collapse" | "inherit" }?,
        # Added to SVG-1.2-RFC (for LibreOffice)
    (desc
     | svgTitle
     | path
     | rect
     | circle
     | line
     | ellipse
     | polyline
     | polygon
     | solidColor
     | textArea
     | linearGradient
     | radialGradient
     | \text
     | g
     | defs
     | use
        
     | a)*
  }
defs =
  element defs {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
        
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    (desc
     | svgTitle
     | path
     | rect
     | circle
     | line
     | ellipse
     | polyline
     | polygon
     | solidColor
     | textArea
     | linearGradient
     | radialGradient
     | \text
     | g
     | defs
     | use
     | a)*
  }
use =
  element use {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
        
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute transform { xsd:string | "none" }?,
    attribute ns1:show { "embed" }?,
    attribute ns1:actuate { "onLoad" }?,
    attribute ns1:type { "simple" }?,
    attribute ns1:role { xsd:anyURI | xsd:string }?,
    attribute ns1:arcrole { xsd:anyURI | xsd:string }?,
    attribute ns1:title { text }?,
    attribute ns1:href { xsd:anyURI | xsd:string }?,
    attribute x { xsd:string }?,
    attribute y { xsd:string }?,
    (desc
     | svgTitle)*
  }
a =
  element a {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute transform { xsd:string | "none" }?,
    attribute ns1:show { "new" | "replace" }?,
    attribute ns1:actuate { "onRequest" }?,
    attribute ns1:type { "simple" }?,
    attribute ns1:role { xsd:anyURI | xsd:string }?,
    attribute ns1:arcrole { xsd:anyURI | xsd:string }?,
    attribute ns1:title { text }?,
    attribute ns1:href { xsd:anyURI | xsd:string }?,
    attribute target {
      "_replace" | "_self" | "_parent" | "_top" | "_blank" | xsd:Name
    }?,
    (desc
     | svgTitle
     | path
     | rect
     | circle
     | line
     | ellipse
     | polyline
     | polygon
     | solidColor
     | textArea
     | linearGradient
     | radialGradient
     | \text
     | g
     | defs
     | use)*
  }
stop =
  element stop {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "inherit" | xsd:string }?,
        
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { "inherit" | xsd:string }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { "inherit" | xsd:string }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { "inherit" | xsd:string }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
        
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute offset { xsd:string }?,
    (desc
     | svgTitle)*
  }
tspan =
  element tspan {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute x { xsd:string }?,  # For SVG-1.2-RFC
    attribute y { xsd:string }?,
    (tbreak
     | desc
     | svgTitle
     | tspan_2
     | text
     | a_2)+
  }
tspan_2 =
  element tspan {
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
        
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    attribute x { xsd:string }?,  # For SVG-1.2-RFC
    attribute y { xsd:string }?,
    (desc
     | svgTitle
     | tspan_2
     | text
     | a_2)+
  }
a_2 =
  element a {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
        
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?,
    ((attribute fill-opacity { "inherit" | xsd:string }?,
      attribute stroke-opacity { "inherit" | xsd:string }?)
     & (attribute fill { "none" | rfc-color }?,
        attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?,
        attribute stroke { rfc-color }?,
        attribute stroke-dasharray { "inherit" | "none" | xsd:string }?,
        attribute stroke-dashoffset { "inherit" | xsd:string }?,
        attribute stroke-linecap {
          "butt" | "round" | "square" | "inherit"
        }?,
        attribute stroke-linejoin {
          "miter" | "round" | "bevel" | "inherit"
        }?,
        attribute stroke-miterlimit { "inherit" | xsd:string }?,
        attribute stroke-width { "inherit" | xsd:string }?,
        attribute color { rfc-color }?,
        attribute color-rendering {
          "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
        }?)
     & attribute vector-effect {
         "none" | "non-scaling-stroke" | "inherit"
       }?
     & (attribute direction { "ltr" | "rtl" | "inherit" }?,
        attribute unicode-bidi {
          "normal" | "embed" | "bidi-override" | "inherit"
        }?)
     & (attribute solid-color { rfc-color }?,
        attribute solid-opacity { "inherit" | xsd:string }?)
     & (attribute display-align {
          "auto" | "before" | "center" | "after" | "inherit"
        
        }?,
        attribute line-increment { "auto" | "inherit" | xsd:string }?)
     & (attribute stop-color { rfc-color }?,
        attribute stop-opacity { "inherit" | xsd:string }?)
     & (attribute font-family { "inherit" | xsd:string }?,
        attribute font-size { "inherit" | xsd:string }?,
        attribute font-style {
          "normal" | "italic" | "oblique" | "inherit"
        }?,
        attribute font-variant { "normal" | "small-caps" | "inherit" }?,
        attribute font-weight {
          "normal"
          | "bold"
          | "bolder"
          | "lighter"
          | "inherit"
        }?,
        attribute text-anchor {
          "start" | "middle" | "end" | "inherit"
        }?,
        attribute text-align {
          "start" | "center" | "end" | "inherit"
        }?)),
    attribute transform { xsd:string | "none" }?,
    attribute ns1:show { "new" | "replace" }?,
    attribute ns1:actuate { "onRequest" }?,
    attribute ns1:type { "simple" }?,
    attribute ns1:role { xsd:anyURI | xsd:string }?,
    attribute ns1:arcrole { xsd:anyURI | xsd:string }?,
    attribute ns1:title { text }?,
    attribute ns1:href { xsd:anyURI | xsd:string }?,
    attribute target {
      "_replace" | "_self" | "_parent" | "_top" | "_blank" | xsd:Name
    }?,
    (desc
     | svgTitle
     | tspan_2
     | text)+
  }
tbreak =
  element tbreak {
    (attribute id { xsd:NCName }
     | attribute xml:id { xsd:NCName })?,
    attribute xml:base { xsd:anyURI | xsd:string }?,
    attribute xml:lang { xsd:language? }?,
    attribute class { xsd:NMTOKENS }?,
    attribute role { xsd:string }?,
    attribute rel { xsd:string }?,
    attribute rev { xsd:string }?,
    attribute typeof { xsd:string }?,
    attribute content { xsd:string }?,
    attribute datatype { xsd:string }?,
    attribute resource { xsd:string }?,
    attribute about { xsd:string }?,
    attribute property { xsd:string }?,
    attribute xml:space { "default" | "preserve" }?,
    attribute requiredFeatures { xsd:string }?,
    attribute requiredExtensions { xsd:string }?,
    attribute requiredFormats { xsd:string }?,
    attribute requiredFonts { xsd:string }?,
    attribute systemLanguage { xsd:string }?
  }
        
#---  End of SVG 1.2 RFC RNC schema
IAB Members at the Time of Approval
        

The IAB members at the time this memo was approved were (in alphabetical order):

このメモが承認されたときのIABメンバーは(アルファベット順)でした。

Jari Arkko Ralph Droms Ted Hardie Joe Hildebrand Russ Housley Lee Howard Erik Nordmark Robert Sparks Andrew Sullivan Dave Thaler Martin Thomson Brian Trammell Suzanne Woolf

ジャリアルコラルフドロムステッドハーディジョーヒルデブランドラスハウズリーリーハワードエリックノードマークロバートスパークスアンドリューサリバンデイブターラーマーティントムソンブライアントラメルスザンヌウルフ

Acknowledgements

謝辞

Thanks to the RSE and the Design Team members for their helpful comments and suggestions for SVG 1.2 RFC. Thanks also to the wider IETF community for their input.

SSE 1.2 RFCに関する有益なコメントと提案を提供してくれたRSEと設計チームのメンバーに感謝します。彼らの意見を提供してくれた幅広いIETFコミュニティにも感謝します。

Author's Address

著者のアドレス

Nevil Brownlee The University of Auckland

Nevil Brownleeオークランド大学

   Email: n.brownlee@auckland.ac.nz