idnits 2.17.1 draft-svg-tiny-ps-abrotman-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There is 1 instance of too long lines in the document, the longest one being 26 characters in excess of 72. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 110: '...VG Tiny PS document MUST be defined as...' RFC 2119 keyword, line 122: '..." element MUST be present and i...' RFC 2119 keyword, line 123: '... "title" element MUST occur only once ...' RFC 2119 keyword, line 124: '...nt. The contents SHOULD be no more 64...' RFC 2119 keyword, line 127: '..."<desc>" element MAY be present with a...' (34 more instances...) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 8, 2021) is 1144 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '<CODE BEGINS>' and '<CODE ENDS>' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Possible downref: Non-RFC (?) normative reference: ref. 'SVG' -- Possible downref: Non-RFC (?) normative reference: ref. 'SVGT' -- Possible downref: Non-RFC (?) normative reference: ref. 'RNC' Summary: 4 errors (**), 0 flaws (~~), 1 warning (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Brotman 3 Internet-Draft Comcast, Inc 4 Intended status: Standards Track T. Adams 5 Expires: September 9, 2021 Proofpoint, Inc 6 March 8, 2021 8 SVG Tiny Portable/Secure 9 draft-svg-tiny-ps-abrotman-01 11 Abstract 13 This document specifies SVG Tiny Portable/Secure (SVG Tiny PS) -- A 14 Scalable Vector Graphics (SVG) profile to be used with documents that 15 are intended for use with more secure requirements, and in some 16 cases, in conjunction with a limited rendering engine. 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at https://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on September 9, 2021. 35 Copyright Notice 37 Copyright (c) 2021 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (https://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 53 2. SVG Tiny PS Profile . . . . . . . . . . . . . . . . . . . . . 3 54 2.1. Specific Instructions for the SVG Tiny PS Documents . . . 3 55 2.2. Permitted Sections with Restrictions . . . . . . . . . . 3 56 2.3. Disallowed Sections, Elements, and Attributes . . . . . . 4 57 2.4. Additional Considerations for Creating SVG Tiny PS 58 Documents . . . . . . . . . . . . . . . . . . . . . . . . 5 59 3. Security Considerations . . . . . . . . . . . . . . . . . . . 6 60 3.1. Portability . . . . . . . . . . . . . . . . . . . . . . . 6 61 4. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 6 62 5. Example SVG Tiny PS Document . . . . . . . . . . . . . . . . 6 63 6. Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 64 6.1. References: . . . . . . . . . . . . . . . . . . . . . . . 7 65 6.2. Known issues with various SVG editing software . . . . . 7 66 7. Validation RNC . . . . . . . . . . . . . . . . . . . . . . . 7 67 7.1. Tools available for use with RNC . . . . . . . . . . . . 39 68 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 40 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 71 1. Introduction 73 Scalable Vector Graphics (SVG) is a standard that defines vector- 74 based graphics for the web, graphics that can be expressed in XML 75 format. SVG is an extensible format, with support for various 76 metadata elements and animation. In some cases, it is preferable to 77 have an SVG profile that is targeted at smaller platforms, and/or to 78 have security in mind. This document defines a profile of SVG for 79 such use cases, called the SVG Tiny PS profile, that limits the 80 allowed elements to a subset of the features supported by the overall 81 SVG specification. 83 The SVG standard is defined by the World Wide Web Consortium (W3C) 84 and the current version is 1.1 [SVG]. The W3C also defines a 85 simplified profile of SVG published as SVG Tiny [SVGT], with the 86 current version at 1.2. This document defines the SVG Tiny PS 87 profile in the terms of the simplified SVG Tiny 1.2 as the base. The 88 SVG Tiny PS profile identifies elements that are required, 89 disallowed, or otherwise allowed from the set of elements defined by 90 SVG Tiny 1.2. No elements are added to SVG Tiny PS, and any elements 91 not explicitly mentioned in this document follow the guidance 92 provided by SVG Tiny 1.2. 94 2. SVG Tiny PS Profile 96 This document defines the SVG Tiny PS profile in the terms of the 97 simplified SVG Tiny 1.2 as the base. The following sections 98 reference sections within the SVG Tiny PS profile that are required, 99 disallowed, or otherwise allowed from the set of elements defined by 100 SVG Tiny 1.2. No elements are added to SVG Tiny PS that are not 101 found within SVG 1.1 or SVG Tiny 1.2, and any elements not explicitly 102 mentioned in this document follow the guidance provided by SVG Tiny 103 1.2. 105 2.1. Specific Instructions for the SVG Tiny PS Documents 107 The elements and attributes below are required within the root 108 "<svg>" element of an SVG Tiny PS document. 110 o Document Definition: The SVG Tiny PS document MUST be defined as 111 described in SVG Tiny 1.2 Section 1.3. This includes setting the 112 following attributes as follows: 114 xmlns="http://www.w3.org/2000/svg" 115 version="1.2" 116 baseProfile="tiny-ps" 118 [ Note to WG: Based on other baseProfile, this should be the minimum 119 profile required to render the image. Tiny PS should be a subset, 120 but we're unsure if we should create a smaller profile. ] 122 o title: The "<title>" element MUST be present and its contents MUST 123 NOT be empty. The "title" element MUST occur only once as a sub- 124 element of the "svg" element. The contents SHOULD be no more 64 125 characters. 127 o desc: The "<desc>" element MAY be present with a longer 128 description. If present, its contents MUST NOT be empty, and care 129 SHOULD be given to minimize the file size of the document. 131 2.2. Permitted Sections with Restrictions 133 The following sections from SVG Tiny 1.2 MAY be used within an SVG 134 Tiny PS document with the further restrictions as noted. 136 o Section 8: Paths - This section defines methods used for defining 137 vector-based paths that can be rendered. The attributes "d" and 138 "pathLength" MUST NOT be animated. The elements described within 139 "8.2.1 Animating path data" MUST NOT be present within an SVG Tiny 140 PS document. 142 o Section 9: Basic Shapes - This section defines primitives that can 143 be used to render basic shapes. The attributes "x", "y", "width", 144 "height", "rx", and "ry" MUST NOT be animated. 146 o Section 10: Text - This sections describes the methods for 147 defining text that should be rendered similar to any vector-based 148 graphic elements. The "editable" attribute SHOULD NOT be present 149 in an SVG Tiny PS document, if it is, it MUST be set to "none". 150 The attributes "x", "y", and "rotate" MUST NOT be animated. 152 o Section 11: Painting - This section describes the methods used to 153 render the paths ("stroked") and shapes ("filled") visible. Any 154 of the attributes described MUST NOT be animated within an SVG 155 Tiny PS document. 157 2.3. Disallowed Sections, Elements, and Attributes 159 The elements and attributes described in the sections below MUST NOT 160 be present in an SVG Tiny PS document: 162 o Section 5.7: The 'image' Element - This section defines methods 163 for displaying a raster image within the context of an SVG image. 165 o Section 5.8.2: The 'switch' Element - This section defines methods 166 for conditional processing of the document. 168 o Section 12: Multimedia - This section describes the elements that 169 augment an image with audio or video. 171 o Section 13: Interactivity - This section describes elements 172 related to user actions and responsiveness to those events. 174 o Section 14: Linking - This section describes links to internal and 175 external end points. 177 o Section 15: Scripting - This section describes methods for adding 178 executable content. 180 o Section 16: Animation - This section describes methods for 181 transforming or otherwise animating elements over time. 183 The attributes below are specifically called out from the sections 184 above due to their widespread use. For a more complete list, refer 185 to the full content in the sections above. 187 o zoomAndPan: The "zoomAndPan" attribute SHOULD NOT be present in an 188 SVG Tiny PS document. If it is present, it MUST be set to 189 "disable". 191 o externalResourcesRequired: The "externalResourcesRequired" 192 attribute SHOULD NOT be present in an SVG Tiny PS document. If it 193 is present, it MUST be set to "false". 195 o focusable: The "focusable" attribute SHOULD NOT be used within an 196 SVG Tiny PS document. If it is present, it MUST be set to 197 "false". 199 o snapshotTime: The "snapshotTime" attribute SHOULD NOT be used 200 within an SVG Tiny PS document. If it is present, it MUST be set 201 to "none". 203 o playbackOrder: The "playbackOrder" attribute SHOULD NOT be used 204 within an SVG Tiny PS document. If it is present, it MUST be set 205 to "all". 207 o timelineBegin: The "timelineBegin" attribute SHOULD NOT be used 208 within an SVG Tiny PS document. If it is present, it MUST be set 209 to "onLoad". 211 2.4. Additional Considerations for Creating SVG Tiny PS Documents 213 The following are special considerations that SHOULD be taken when 214 creating an SVG Tiny PS document: 216 o The file size of SVG Tiny PS documents SHOULD be as small as 217 possible, and SHOULD NOT exceed 32 kilobytes. That size should be 218 evaluated when the document is uncompressed. 220 o An SVG Tiny PS document MUST include at least two colors when 221 rendered. 223 o Section 17: Fonts - This sections describes the methods for 224 defining specific characters to be used within an SVG document. 225 Embedded character definitions MAY be used in an SVG Tiny PS 226 document, but the document SHOULD only include the characters to 227 be rendered, and SHOULD NOT include any additional characters that 228 are not to be rendered. 230 o Section 18: Metadata - This section summarizes standard methods 231 for including structured data about the content within an SVG 232 document. While metadata can support utility and accessibility 233 and MAY be included in an SVG Tiny PS document, careful 234 consideration SHOULD be given to how the metadata element and 235 extensible metadata attributes are used to avoid increasing the 236 file size of the document. 238 o An SVG Tiny PS document MAY include transparent elements, however 239 care SHOULD be taken to understand the implications of 240 transparency when rendered. Given that the author has no control 241 over how the logo is ultimately displayed, transparency to the 242 underlying display mechanism could result in undesirable effects. 244 3. Security Considerations 246 Many of the requirements imposed by the SVG Tiny PS profile are 247 designed to minimize potential security concerns introduced by 248 interactive content into a user experience not typically designed to 249 handle it. Every consideration has been made to reduce the scope of 250 SVG images to the minimum elements necessary to render locally 251 defined, static vector graphics. 253 3.1. Portability 255 The SVG documents meant to be used with this profile should be fairly 256 portable, and should likely be self-contained. The document authors 257 cannot be certain that the client will have an active network 258 connection. 260 4. Contributors 262 TBD 264 5. Example SVG Tiny PS Document 266 <?xml version="1.0"?> 267 <svg width="400px" height="400px" xmlns="http://www.w3.org/2000/svg" 268 version="1.2" baseProfile="tiny-ps" 269 zoomAndPan="disable" externalResourcesRequired="false"> 270 <title>Example, Inc. 271 Logo for Example, Inc. 272 274 276 278 280 6. Notes 281 6.1. References: 283 286 6.2. Known issues with various SVG editing software 288 o Illustrator ** Will add x/y attributes to the "svg" element. 289 These are not permitted. 291 7. Validation RNC 293 The following RNC [RNC] schema can be used to validate a SVG Tiny PS 294 document. The official version of this document resides at: 296 298 And is the one that should be used if there is any conflict. 300 #--- SVG 1.2 PS RNC schema 302 default namespace = "http://www.w3.org/2000/svg" 303 #namespace ns1 = "http://www.w3.org/1999/xlink" 305 start = svg 306 svg = 307 element svg { 308 ((attribute fill-opacity { "inherit" | xsd:string }?, 309 attribute stroke-opacity { "inherit" | xsd:string }?) 310 & (attribute fill { "none" | xsd:string }?, 311 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 312 attribute stroke { xsd:string }?, 313 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 314 attribute stroke-dashoffset { "inherit" | xsd:string }?, 315 attribute stroke-linecap { 316 "butt" | "round" | "square" | "inherit" 317 }?, 318 attribute stroke-linejoin { 319 "miter" | "round" | "bevel" | "inherit" 320 }?, 321 attribute stroke-miterlimit { "inherit" | xsd:string }?, 322 attribute stroke-width { "inherit" | xsd:string }?, 323 attribute color { xsd:string }?, 324 attribute color-rendering { 325 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 326 }?) 327 & attribute vector-effect { 328 "none" | "non-scaling-stroke" | "inherit" 330 }? 331 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 332 attribute unicode-bidi { 333 "normal" | "embed" | "bidi-override" | "inherit" 334 }?) 335 & (attribute solid-color { xsd:string }?, 336 attribute solid-opacity { "inherit" | xsd:string }?) 337 & (attribute display-align { 338 "auto" | "before" | "center" | "after" | "inherit" 339 }?, 340 attribute line-increment { "auto" | "inherit" | xsd:string }?) 341 & (attribute stop-color { xsd:string }?, 342 attribute stop-opacity { "inherit" | xsd:string }?) 343 & (attribute font-family { "inherit" | xsd:string }?, 344 attribute font-size { "inherit" | xsd:string }?, 345 attribute font-style { 346 "normal" | "italic" | "oblique" | "inherit" 347 }?, 348 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 349 attribute font-weight { 350 "normal" 351 | "bold" 352 | "bolder" 353 | "lighter" 354 }?, 355 attribute text-anchor { 356 "start" | "middle" | "end" | "inherit" 357 }?, 358 attribute text-align { 359 "start" | "center" | "end" | "inherit" 360 }?)), 361 (attribute id { xsd:NCName } 362 | attribute xml:id { xsd:NCName })?, 363 attribute xml:base { xsd:anyURI | xsd:string }?, 364 attribute xml:lang { xsd:language? }?, 365 attribute class { xsd:NMTOKENS }?, 366 attribute role { xsd:string }?, 367 attribute rel { xsd:string }?, 368 attribute rev { xsd:string }?, 369 attribute typeof { xsd:string }?, 370 attribute content { xsd:string }?, 371 attribute datatype { xsd:string }?, 372 attribute resource { xsd:string }?, 373 attribute about { xsd:string }?, 374 attribute property { xsd:string }?, 375 attribute xml:space { "default" | "preserve" }?, 376 attribute width { xsd:string }?, 377 attribute height { xsd:string }?, 378 attribute viewBox { text }?, 379 attribute baseProfile { "tiny-ps" }, 380 attribute contentScriptType { xsd:string }?, 381 attribute externalResourcesRequired { "false" }?, 382 attribute focusable { "false" }?, 383 attribute playbackOrder { "all" }?, 384 attribute preserveAspectRatio { xsd:string { pattern = "\s*(none|xMidYMid)\s*(meet)?\s*" } }?, 385 attribute snapshotTime { "none" }?, 386 attribute timelineBegin { "onLoad" }?, 387 attribute version { "1.2" }, 388 attribute zoomAndPan { "disable" }?, 389 (svgTitle), 390 (desc 391 | path 392 | rect 393 | circle 394 | line 395 | ellipse 396 | polyline 397 | polygon 398 | solidColor 399 | textArea 400 | linearGradient 401 | radialGradient 402 | \text 403 | g 404 | defs 405 | metadata 406 | use)* 407 } 409 desc = 410 element desc { 411 (attribute id { xsd:NCName } 412 | attribute xml:id { xsd:NCName })?, 413 attribute xml:base { xsd:anyURI | xsd:string }?, 414 attribute xml:lang { xsd:language? }?, 415 attribute class { xsd:NMTOKENS }?, 416 attribute role { xsd:string }?, 417 attribute rel { xsd:string }?, 418 attribute rev { xsd:string }?, 419 attribute typeof { xsd:string }?, 420 attribute content { xsd:string }?, 421 attribute datatype { xsd:string }?, 422 attribute resource { xsd:string }?, 423 attribute about { xsd:string }?, 424 attribute property { xsd:string }?, 425 attribute xml:space { "default" | "preserve" }?, 426 attribute requiredFonts { xsd:string }?, 427 attribute systemLanguage { xsd:string }?, 428 ((attribute display { 429 "inline" 430 | "block" 431 | "list-item" 432 | "run-in" 433 | "compact" 434 | "marker" 435 | "table" 436 | "inline-table" 437 | "table-row-group" 438 | "table-header-group" 439 | "table-footer-group" 440 | "table-row" 441 | "table-column-group" 442 | "table-column" 443 | "table-cell" 444 | "table-caption" 445 | "none" 446 | "inherit" 447 }?, 448 attribute visibility { "visible" | "hidden" | "collapse" 449 | "inherit" }?, 450 attribute image-rendering { 451 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 452 }?, 453 attribute shape-rendering { 454 "auto" 455 | "optimizeSpeed" 456 | "crispEdges" 457 | "geometricPrecision" 458 | "inherit" 459 }?, 460 attribute text-rendering { 461 "auto" 462 | "optimizeSpeed" 463 | "optimizeLegibility" 464 | "geometricPrecision" 465 | "inherit" 466 }?, 467 attribute buffered-rendering { 468 "auto" | "dynamic" | "static" | "inherit" 469 }?) 470 & (attribute viewport-fill { "none" | xsd:string }?, 471 attribute viewport-fill-opacity { "inherit" | xsd:string }?)), 472 text 473 } 475 svgTitle = 476 element title { 477 (attribute id { xsd:NCName } 478 | attribute xml:id { xsd:NCName })?, 479 attribute xml:base { xsd:anyURI | xsd:string }?, 480 attribute xml:lang { xsd:language? }?, 481 attribute class { xsd:NMTOKENS }?, 482 attribute role { xsd:string }?, 483 attribute rel { xsd:string }?, 484 attribute rev { xsd:string }?, 485 attribute typeof { xsd:string }?, 486 attribute content { xsd:string }?, 487 attribute datatype { xsd:string }?, 488 attribute resource { xsd:string }?, 489 attribute about { xsd:string }?, 490 attribute property { xsd:string }?, 491 attribute xml:space { "default" | "preserve" }?, 492 attribute requiredFonts { xsd:string }?, 493 attribute systemLanguage { xsd:string }?, 494 ((attribute display { 495 "inline" 496 | "block" 497 | "list-item" 498 | "run-in" 499 | "compact" 500 | "marker" 501 | "table" 502 | "inline-table" 503 | "table-row-group" 504 | "table-header-group" 505 | "table-footer-group" 506 | "table-row" 507 | "table-column-group" 508 | "table-column" 509 | "table-cell" 510 | "table-caption" 511 | "none" 512 | "inherit" 513 }?, 514 attribute visibility { "visible" | "hidden" 515 | "collapse" | "inherit" }?, 516 attribute image-rendering { 517 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 518 }?, 519 attribute shape-rendering { 520 "auto" 521 | "optimizeSpeed" 522 | "crispEdges" 523 | "geometricPrecision" 524 | "inherit" 525 }?, 526 attribute text-rendering { 527 "auto" 528 | "optimizeSpeed" 529 | "optimizeLegibility" 530 | "geometricPrecision" 531 | "inherit" 532 }?, 533 attribute buffered-rendering { 534 "auto" | "dynamic" | "static" | "inherit" 535 }?) 536 & (attribute viewport-fill { "none" | xsd:string }?, 537 attribute viewport-fill-opacity { "inherit" | xsd:string }?)), 538 text 539 } 540 path = 541 element path { 542 (attribute id { xsd:NCName } 543 | attribute xml:id { xsd:NCName })?, 544 attribute xml:base { xsd:anyURI | xsd:string }?, 545 attribute xml:lang { xsd:language? }?, 546 attribute class { xsd:NMTOKENS }?, 547 attribute role { xsd:string }?, 548 attribute rel { xsd:string }?, 549 attribute rev { xsd:string }?, 550 attribute typeof { xsd:string }?, 551 attribute content { xsd:string }?, 552 attribute datatype { xsd:string }?, 553 attribute resource { xsd:string }?, 554 attribute about { xsd:string }?, 555 attribute property { xsd:string }?, 556 attribute xml:space { "default" | "preserve" }?, 557 attribute transform { xsd:string | "none" }?, 558 ((attribute fill-opacity { "inherit" | xsd:string }?, 559 attribute stroke-opacity { "inherit" | xsd:string }?) 560 & (attribute fill { "none" | xsd:string }?, 561 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 562 attribute stroke { xsd:string }?, 563 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 564 attribute stroke-dashoffset { "inherit" | xsd:string }?, 565 attribute stroke-linecap { 566 "butt" | "round" | "square" | "inherit" 567 }?, 568 attribute stroke-linejoin { 569 "miter" | "round" | "bevel" | "inherit" 570 }?, 571 attribute stroke-miterlimit { "inherit" | xsd:string }?, 572 attribute stroke-width { "inherit" | xsd:string }?, 573 attribute color { xsd:string }?, 574 attribute color-rendering { 575 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 576 }?) 577 & attribute vector-effect { 578 "none" | "non-scaling-stroke" | "inherit" 579 }? 580 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 581 attribute unicode-bidi { 582 "normal" | "embed" | "bidi-override" | "inherit" 583 }?) 584 & (attribute solid-color { xsd:string }?, 585 attribute solid-opacity { "inherit" | xsd:string }?) 586 & (attribute display-align { 587 "auto" | "before" | "center" | "after" | "inherit" 588 }?, 589 attribute line-increment { "auto" | "inherit" | xsd:string }?) 590 & (attribute stop-color { xsd:string }?, 591 attribute stop-opacity { "inherit" | xsd:string }?) 592 & (attribute font-family { "inherit" | xsd:string }?, 593 attribute font-size { "inherit" | xsd:string }?, 594 attribute font-style { 595 "normal" | "italic" | "oblique" | "inherit" 596 }?, 597 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 598 attribute font-weight { 599 "normal" 600 | "bold" 601 | "bolder" 602 | "lighter" 603 | "inherit" 604 }?, 605 attribute text-anchor { 606 "start" | "middle" | "end" | "inherit" 607 }?, 608 attribute text-align { 609 "start" | "center" | "end" | "inherit" 610 }?)), 611 attribute requiredFonts { xsd:string }?, 612 attribute systemLanguage { xsd:string }?, 613 attribute d { xsd:string }?, 614 attribute pathLength { xsd:string }? 615 } 616 rect = 617 element rect { 618 (attribute id { xsd:NCName } 619 | attribute xml:id { xsd:NCName })?, 620 attribute xml:base { xsd:anyURI | xsd:string }?, 621 attribute xml:lang { xsd:language? }?, 622 attribute class { xsd:NMTOKENS }?, 623 attribute role { xsd:string }?, 624 attribute rel { xsd:string }?, 625 attribute rev { xsd:string }?, 626 attribute typeof { xsd:string }?, 627 attribute content { xsd:string }?, 628 attribute datatype { xsd:string }?, 629 attribute resource { xsd:string }?, 630 attribute about { xsd:string }?, 631 attribute property { xsd:string }?, 632 attribute xml:space { "default" | "preserve" }?, 633 attribute transform { xsd:string | "none" }?, 634 ((attribute fill-opacity { "inherit" | xsd:string }?, 635 attribute stroke-opacity { "inherit" | xsd:string }?) 636 & (attribute fill { "none" | xsd:string }?, 637 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 638 attribute stroke { xsd:string }?, 639 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 640 attribute stroke-dashoffset { "inherit" | xsd:string }?, 641 attribute stroke-linecap { 642 "butt" | "round" | "square" | "inherit" 643 }?, 644 attribute stroke-linejoin { 645 "miter" | "round" | "bevel" | "inherit" 646 }?, 647 attribute stroke-miterlimit { "inherit" | xsd:string }?, 648 attribute stroke-width { "inherit" | xsd:string }?, 649 attribute color { xsd:string }?, 650 attribute color-rendering { 651 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 652 }?) 653 & attribute vector-effect { 654 "none" | "non-scaling-stroke" | "inherit" 655 }? 656 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 657 attribute unicode-bidi { 658 "normal" | "embed" | "bidi-override" | "inherit" 659 }?) 660 & (attribute solid-color { xsd:string }?, 661 attribute solid-opacity { "inherit" | xsd:string }?) 662 & (attribute display-align { 663 "auto" | "before" | "center" | "after" | "inherit" 664 }?, 665 attribute line-increment { "auto" | "inherit" | xsd:string }?) 666 & (attribute stop-color { xsd:string }?, 667 attribute stop-opacity { "inherit" | xsd:string }?) 668 & (attribute font-family { "inherit" | xsd:string }?, 669 attribute font-size { "inherit" | xsd:string }?, 670 attribute font-style { 671 "normal" | "italic" | "oblique" | "inherit" 672 }?, 673 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 674 attribute font-weight { 675 "normal" 676 | "bold" 677 | "bolder" 678 | "lighter" 679 | "inherit" 680 }?, 681 attribute text-anchor { 682 "start" | "middle" | "end" | "inherit" 683 }?, 684 attribute text-align { 685 "start" | "center" | "end" | "inherit" 686 }?)), 687 attribute requiredFonts { xsd:string }?, 688 attribute systemLanguage { xsd:string }?, 689 attribute x { xsd:string }?, 690 attribute y { xsd:string }?, 691 attribute width { xsd:string }?, 692 attribute height { xsd:string }?, 693 attribute rx { xsd:string }?, 694 attribute ry { xsd:string }? 695 } 696 circle = 697 element circle { 698 (attribute id { xsd:NCName } 699 | attribute xml:id { xsd:NCName })?, 700 attribute xml:base { xsd:anyURI | xsd:string }?, 701 attribute xml:lang { xsd:language? }?, 702 attribute class { xsd:NMTOKENS }?, 703 attribute role { xsd:string }?, 704 attribute rel { xsd:string }?, 705 attribute rev { xsd:string }?, 706 attribute typeof { xsd:string }?, 707 attribute content { xsd:string }?, 708 attribute datatype { xsd:string }?, 709 attribute resource { xsd:string }?, 710 attribute about { xsd:string }?, 711 attribute property { xsd:string }?, 712 attribute xml:space { "default" | "preserve" }?, 713 attribute transform { xsd:string | "none" }?, 714 ((attribute fill-opacity { "inherit" | xsd:string }?, 715 attribute stroke-opacity { "inherit" | xsd:string }?) 716 & (attribute fill { "none" | xsd:string }?, 717 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 718 attribute stroke { xsd:string }?, 719 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 720 attribute stroke-dashoffset { "inherit" | xsd:string }?, 721 attribute stroke-linecap { 722 "butt" | "round" | "square" | "inherit" 723 }?, 724 attribute stroke-linejoin { 725 "miter" | "round" | "bevel" | "inherit" 726 }?, 727 attribute stroke-miterlimit { "inherit" | xsd:string }?, 728 attribute stroke-width { "inherit" | xsd:string }?, 729 attribute color { xsd:string }?, 730 attribute color-rendering { 731 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 732 }?) 733 & attribute vector-effect { 734 "none" | "non-scaling-stroke" | "inherit" 735 }? 736 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 737 attribute unicode-bidi { 738 "normal" | "embed" | "bidi-override" | "inherit" 739 }?) 740 & (attribute solid-color { xsd:string }?, 741 attribute solid-opacity { "inherit" | xsd:string }?) 742 & (attribute display-align { 743 "auto" | "before" | "center" | "after" | "inherit" 744 }?, 745 attribute line-increment { "auto" | "inherit" | xsd:string }?) 746 & (attribute stop-color { xsd:string }?, 747 attribute stop-opacity { "inherit" | xsd:string }?) 748 & (attribute font-family { "inherit" | xsd:string }?, 749 attribute font-size { "inherit" | xsd:string }?, 750 attribute font-style { 751 "normal" | "italic" | "oblique" | "inherit" 752 }?, 753 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 754 attribute font-weight { 755 "normal" 756 | "bold" 757 | "bolder" 758 | "lighter" 759 | "inherit" 760 }?, 761 attribute text-anchor { 762 "start" | "middle" | "end" | "inherit" 764 }?, 765 attribute text-align { 766 "start" | "center" | "end" | "inherit" 767 }?)), 768 attribute requiredFonts { xsd:string }?, 769 attribute systemLanguage { xsd:string }?, 770 attribute cx { xsd:string }?, 771 attribute cy { xsd:string }?, 772 attribute r { xsd:string }? 773 } 774 line = 775 element line { 776 (attribute id { xsd:NCName } 777 | attribute xml:id { xsd:NCName })?, 778 attribute xml:base { xsd:anyURI | xsd:string }?, 779 attribute xml:lang { xsd:language? }?, 780 attribute class { xsd:NMTOKENS }?, 781 attribute role { xsd:string }?, 782 attribute rel { xsd:string }?, 783 attribute rev { xsd:string }?, 784 attribute typeof { xsd:string }?, 785 attribute content { xsd:string }?, 786 attribute datatype { xsd:string }?, 787 attribute resource { xsd:string }?, 788 attribute about { xsd:string }?, 789 attribute property { xsd:string }?, 790 attribute xml:space { "default" | "preserve" }?, 791 attribute transform { xsd:string | "none" }?, 792 ((attribute fill-opacity { "inherit" | xsd:string }?, 793 attribute stroke-opacity { "inherit" | xsd:string }?) 794 & (attribute fill { "none" | xsd:string }?, 795 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 796 attribute stroke { xsd:string }?, 797 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 798 attribute stroke-dashoffset { "inherit" | xsd:string }?, 799 attribute stroke-linecap { 800 "butt" | "round" | "square" | "inherit" 801 }?, 802 attribute stroke-linejoin { 803 "miter" | "round" | "bevel" | "inherit" 804 }?, 805 attribute stroke-miterlimit { "inherit" | xsd:string }?, 806 attribute stroke-width { "inherit" | xsd:string }?, 807 attribute color { xsd:string }?, 808 attribute color-rendering { 809 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 810 }?) 811 & attribute vector-effect { 812 "none" | "non-scaling-stroke" | "inherit" 813 }? 814 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 815 attribute unicode-bidi { 816 "normal" | "embed" | "bidi-override" | "inherit" 817 }?) 818 & (attribute solid-color { xsd:string }?, 819 attribute solid-opacity { "inherit" | xsd:string }?) 820 & (attribute display-align { 821 "auto" | "before" | "center" | "after" | "inherit" 822 }?, 823 attribute line-increment { "auto" | "inherit" | xsd:string }?) 824 & (attribute stop-color { xsd:string }?, 825 attribute stop-opacity { "inherit" | xsd:string }?) 826 & (attribute font-family { "inherit" | xsd:string }?, 827 attribute font-size { "inherit" | xsd:string }?, 828 attribute font-style { 829 "normal" | "italic" | "oblique" | "inherit" 830 }?, 831 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 832 attribute font-weight { 833 "normal" 834 | "bold" 835 | "bolder" 836 | "lighter" 837 | "inherit" 838 }?, 839 attribute text-anchor { 840 "start" | "middle" | "end" | "inherit" 841 }?, 842 attribute text-align { 843 "start" | "center" | "end" | "inherit" 844 }?)), 845 attribute requiredFonts { xsd:string }?, 846 attribute systemLanguage { xsd:string }?, 847 attribute x1 { xsd:string }?, 848 attribute y1 { xsd:string }?, 849 attribute x2 { xsd:string }?, 850 attribute y2 { xsd:string }? 851 } 852 ellipse = 853 element ellipse { 854 (attribute id { xsd:NCName } 855 | attribute xml:id { xsd:NCName })?, 856 attribute xml:base { xsd:anyURI | xsd:string }?, 857 attribute xml:lang { xsd:language? }?, 858 attribute class { xsd:NMTOKENS }?, 859 attribute role { xsd:string }?, 860 attribute rel { xsd:string }?, 861 attribute rev { xsd:string }?, 862 attribute typeof { xsd:string }?, 863 attribute content { xsd:string }?, 864 attribute datatype { xsd:string }?, 865 attribute resource { xsd:string }?, 866 attribute about { xsd:string }?, 867 attribute property { xsd:string }?, 868 attribute xml:space { "default" | "preserve" }?, 869 attribute transform { xsd:string | "none" }?, 870 ((attribute fill-opacity { "inherit" | xsd:string }?, 871 attribute stroke-opacity { "inherit" | xsd:string }?) 872 & (attribute fill { "none" | xsd:string }?, 873 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 874 attribute stroke { xsd:string }?, 875 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 876 attribute stroke-dashoffset { "inherit" | xsd:string }?, 877 attribute stroke-linecap { 878 "butt" | "round" | "square" | "inherit" 879 }?, 880 attribute stroke-linejoin { 881 "miter" | "round" | "bevel" | "inherit" 882 }?, 883 attribute stroke-miterlimit { "inherit" | xsd:string }?, 884 attribute stroke-width { "inherit" | xsd:string }?, 885 attribute color { xsd:string }?, 886 attribute color-rendering { 887 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 888 }?) 889 & attribute vector-effect { 890 "none" | "non-scaling-stroke" | "inherit" 891 }? 892 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 893 attribute unicode-bidi { 894 "normal" | "embed" | "bidi-override" | "inherit" 895 }?) 896 & (attribute solid-color { xsd:string }?, 897 attribute solid-opacity { "inherit" | xsd:string }?) 898 & (attribute display-align { 899 "auto" | "before" | "center" | "after" | "inherit" 900 }?, 901 attribute line-increment { "auto" | "inherit" | xsd:string }?) 902 & (attribute stop-color { xsd:string }?, 903 attribute stop-opacity { "inherit" | xsd:string }?) 904 & (attribute font-family { "inherit" | xsd:string }?, 905 attribute font-size { "inherit" | xsd:string }?, 906 attribute font-style { 907 "normal" | "italic" | "oblique" | "inherit" 909 }?, 910 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 911 attribute font-weight { 912 "normal" 913 | "bold" 914 | "bolder" 915 | "lighter" 916 | "inherit" 917 }?, 918 attribute text-anchor { 919 "start" | "middle" | "end" | "inherit" 920 }?, 921 attribute text-align { 922 "start" | "center" | "end" | "inherit" 923 }?)), 924 attribute requiredFonts { xsd:string }?, 925 attribute systemLanguage { xsd:string }?, 926 attribute rx { xsd:string }?, 927 attribute ry { xsd:string }?, 928 attribute cx { xsd:string }?, 929 attribute cy { xsd:string }? 930 } 931 polyline = 932 element polyline { 933 (attribute id { xsd:NCName } 934 | attribute xml:id { xsd:NCName })?, 935 attribute xml:base { xsd:anyURI | xsd:string }?, 936 attribute xml:lang { xsd:language? }?, 937 attribute class { xsd:NMTOKENS }?, 938 attribute role { xsd:string }?, 939 attribute rel { xsd:string }?, 940 attribute rev { xsd:string }?, 941 attribute typeof { xsd:string }?, 942 attribute content { xsd:string }?, 943 attribute datatype { xsd:string }?, 944 attribute resource { xsd:string }?, 945 attribute about { xsd:string }?, 946 attribute property { xsd:string }?, 947 attribute xml:space { "default" | "preserve" }?, 948 attribute transform { xsd:string | "none" }?, 949 ((attribute fill-opacity { "inherit" | xsd:string }?, 950 attribute stroke-opacity { "inherit" | xsd:string }?) 951 & (attribute fill { "none" | xsd:string }?, 952 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 953 attribute stroke { xsd:string }?, 954 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 955 attribute stroke-dashoffset { "inherit" | xsd:string }?, 956 attribute stroke-linecap { 957 "butt" | "round" | "square" | "inherit" 958 }?, 959 attribute stroke-linejoin { 960 "miter" | "round" | "bevel" | "inherit" 961 }?, 962 attribute stroke-miterlimit { "inherit" | xsd:string }?, 963 attribute stroke-width { "inherit" | xsd:string }?, 964 attribute color { xsd:string }?, 965 attribute color-rendering { 966 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 967 }?) 968 & attribute vector-effect { 969 "none" | "non-scaling-stroke" | "inherit" 970 }? 971 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 972 attribute unicode-bidi { 973 "normal" | "embed" | "bidi-override" | "inherit" 974 }?) 975 & (attribute solid-color { xsd:string }?, 976 attribute solid-opacity { "inherit" | xsd:string }?) 977 & (attribute display-align { 978 "auto" | "before" | "center" | "after" | "inherit" 979 }?, 980 attribute line-increment { "auto" | "inherit" | xsd:string }?) 981 & (attribute stop-color { xsd:string }?, 982 attribute stop-opacity { "inherit" | xsd:string }?) 983 & (attribute font-family { "inherit" | xsd:string }?, 984 attribute font-size { "inherit" | xsd:string }?, 985 attribute font-style { 986 "normal" | "italic" | "oblique" | "inherit" 987 }?, 988 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 989 attribute font-weight { 990 "normal" 991 | "bold" 992 | "bolder" 993 | "lighter" 994 | "inherit" 995 }?, 996 attribute text-anchor { 997 "start" | "middle" | "end" | "inherit" 998 }?, 999 attribute text-align { 1000 "start" | "center" | "end" | "inherit" 1001 }?)), 1002 attribute requiredFonts { xsd:string }?, 1003 attribute systemLanguage { xsd:string }?, 1004 attribute points { xsd:string }? 1006 } 1007 polygon = 1008 element polygon { 1009 (attribute id { xsd:NCName } 1010 | attribute xml:id { xsd:NCName })?, 1011 attribute xml:base { xsd:anyURI | xsd:string }?, 1012 attribute xml:lang { xsd:language? }?, 1013 attribute class { xsd:NMTOKENS }?, 1014 attribute role { xsd:string }?, 1015 attribute rel { xsd:string }?, 1016 attribute rev { xsd:string }?, 1017 attribute typeof { xsd:string }?, 1018 attribute content { xsd:string }?, 1019 attribute datatype { xsd:string }?, 1020 attribute resource { xsd:string }?, 1021 attribute about { xsd:string }?, 1022 attribute property { xsd:string }?, 1023 attribute xml:space { "default" | "preserve" }?, 1024 attribute transform { xsd:string | "none" }?, 1025 ((attribute fill-opacity { "inherit" | xsd:string }?, 1026 attribute stroke-opacity { "inherit" | xsd:string }?) 1027 & (attribute fill { "none" | xsd:string }?, 1028 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1029 attribute stroke { xsd:string }?, 1030 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1031 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1032 attribute stroke-linecap { 1033 "butt" | "round" | "square" | "inherit" 1034 }?, 1035 attribute stroke-linejoin { 1036 "miter" | "round" | "bevel" | "inherit" 1037 }?, 1038 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1039 attribute stroke-width { "inherit" | xsd:string }?, 1040 attribute color { xsd:string }?, 1041 attribute color-rendering { 1042 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1043 }?) 1044 & attribute vector-effect { 1045 "none" | "non-scaling-stroke" | "inherit" 1046 }? 1047 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1048 attribute unicode-bidi { 1049 "normal" | "embed" | "bidi-override" | "inherit" 1050 }?) 1051 & (attribute solid-color { xsd:string }?, 1052 attribute solid-opacity { "inherit" | xsd:string }?) 1053 & (attribute display-align { 1054 "auto" | "before" | "center" | "after" | "inherit" 1055 }?, 1056 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1057 & (attribute stop-color { xsd:string }?, 1058 attribute stop-opacity { "inherit" | xsd:string }?) 1059 & (attribute font-family { "inherit" | xsd:string }?, 1060 attribute font-size { "inherit" | xsd:string }?, 1061 attribute font-style { 1062 "normal" | "italic" | "oblique" | "inherit" 1063 }?, 1064 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1065 attribute font-weight { 1066 "normal" 1067 | "bold" 1068 | "bolder" 1069 | "lighter" 1070 | "inherit" 1071 }?, 1072 attribute text-anchor { 1073 "start" | "middle" | "end" | "inherit" 1074 }?, 1075 attribute text-align { 1076 "start" | "center" | "end" | "inherit" 1077 }?)), 1078 attribute requiredFonts { xsd:string }?, 1079 attribute systemLanguage { xsd:string }?, 1080 attribute points { xsd:string }? 1081 } 1082 solidColor = 1083 element solidColor { 1084 ((attribute fill-opacity { "inherit" | xsd:string }?, 1085 attribute stroke-opacity { "inherit" | xsd:string }?) 1086 & (attribute fill { "none" | xsd:string }?, 1087 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1088 attribute stroke { xsd:string }?, 1089 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1090 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1091 attribute stroke-linecap { 1092 "butt" | "round" | "square" | "inherit" 1093 }?, 1094 attribute stroke-linejoin { 1095 "miter" | "round" | "bevel" | "inherit" 1096 }?, 1097 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1098 attribute stroke-width { "inherit" | xsd:string }?, 1099 attribute color { xsd:string }?, 1100 attribute color-rendering { 1101 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1103 }?) 1104 & attribute vector-effect { 1105 "none" | "non-scaling-stroke" | "inherit" 1106 }? 1107 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1108 attribute unicode-bidi { 1109 "normal" | "embed" | "bidi-override" | "inherit" 1110 }?) 1111 & (attribute solid-color { xsd:string }?, 1112 attribute solid-opacity { "inherit" | xsd:string }?) 1113 & (attribute display-align { 1114 "auto" | "before" | "center" | "after" | "inherit" 1115 }?, 1116 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1117 & (attribute stop-color { xsd:string }?, 1118 attribute stop-opacity { "inherit" | xsd:string }?) 1119 & (attribute font-family { "inherit" | xsd:string }?, 1120 attribute font-size { "inherit" | xsd:string }?, 1121 attribute font-style { 1122 "normal" | "italic" | "oblique" | "inherit" 1123 }?, 1124 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1125 attribute font-weight { 1126 "normal" 1127 | "bold" 1128 | "bolder" 1129 | "lighter" 1130 | "inherit" 1131 }?, 1132 attribute text-anchor { 1133 "start" | "middle" | "end" | "inherit" 1134 }?, 1135 attribute text-align { 1136 "start" | "center" | "end" | "inherit" 1137 }?)), 1138 (attribute id { xsd:NCName } 1139 | attribute xml:id { xsd:NCName })?, 1140 attribute xml:base { xsd:anyURI | xsd:string }?, 1141 attribute xml:lang { xsd:language? }?, 1142 attribute class { xsd:NMTOKENS }?, 1143 attribute role { xsd:string }?, 1144 attribute rel { xsd:string }?, 1145 attribute rev { xsd:string }?, 1146 attribute typeof { xsd:string }?, 1147 attribute content { xsd:string }?, 1148 attribute datatype { xsd:string }?, 1149 attribute resource { xsd:string }?, 1150 attribute about { xsd:string }?, 1151 attribute property { xsd:string }?, 1152 attribute xml:space { "default" | "preserve" }? 1153 } 1154 textArea = 1155 element textArea { 1156 ((attribute fill-opacity { "inherit" | xsd:string }?, 1157 attribute stroke-opacity { "inherit" | xsd:string }?) 1158 & (attribute fill { "none" | xsd:string }?, 1159 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1160 attribute stroke { xsd:string }?, 1161 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1162 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1163 attribute stroke-linecap { 1164 "butt" | "round" | "square" | "inherit" 1165 }?, 1166 attribute stroke-linejoin { 1167 "miter" | "round" | "bevel" | "inherit" 1168 }?, 1169 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1170 attribute stroke-width { "inherit" | xsd:string }?, 1171 attribute color { xsd:string }?, 1172 attribute color-rendering { 1173 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1174 }?) 1175 & attribute vector-effect { 1176 "none" | "non-scaling-stroke" | "inherit" 1177 }? 1178 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1179 attribute unicode-bidi { 1180 "normal" | "embed" | "bidi-override" | "inherit" 1181 }?) 1182 & (attribute solid-color { xsd:string }?, 1183 attribute solid-opacity { "inherit" | xsd:string }?) 1184 & (attribute display-align { 1185 "auto" | "before" | "center" | "after" | "inherit" 1186 }?, 1187 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1188 & (attribute stop-color { xsd:string }?, 1189 attribute stop-opacity { "inherit" | xsd:string }?) 1190 & (attribute font-family { "inherit" | xsd:string }?, 1191 attribute font-size { "inherit" | xsd:string }?, 1192 attribute font-style { 1193 "normal" | "italic" | "oblique" | "inherit" 1194 }?, 1195 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1196 attribute font-weight { 1197 "normal" 1198 | "bold" 1199 | "bolder" 1200 | "lighter" 1201 | "inherit" 1202 }?, 1203 attribute text-anchor { 1204 "start" | "middle" | "end" | "inherit" 1205 }?, 1206 attribute text-align { 1207 "start" | "center" | "end" | "inherit" 1208 }?)), 1209 (attribute id { xsd:NCName } 1210 | attribute xml:id { xsd:NCName })?, 1211 attribute xml:base { xsd:anyURI | xsd:string }?, 1212 attribute xml:lang { xsd:language? }?, 1213 attribute class { xsd:NMTOKENS }?, 1214 attribute role { xsd:string }?, 1215 attribute rel { xsd:string }?, 1216 attribute rev { xsd:string }?, 1217 attribute typeof { xsd:string }?, 1218 attribute content { xsd:string }?, 1219 attribute datatype { xsd:string }?, 1220 attribute resource { xsd:string }?, 1221 attribute about { xsd:string }?, 1222 attribute property { xsd:string }?, 1223 attribute xml:space { "default" | "preserve" }?, 1224 attribute requiredFonts { xsd:string }?, 1225 attribute systemLanguage { xsd:string }?, 1226 attribute transform { xsd:string | "none" }?, 1227 attribute x { xsd:string }?, 1228 attribute y { xsd:string }?, 1229 attribute width { xsd:string | "auto" }?, 1230 attribute height { xsd:string | "auto" }?, 1231 (text)+ 1232 } 1233 linearGradient = 1234 element linearGradient { 1235 ((attribute fill-opacity { "inherit" | xsd:string }?, 1236 attribute stroke-opacity { "inherit" | xsd:string }?) 1237 & (attribute fill { "none" | xsd:string }?, 1238 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1239 attribute stroke { xsd:string }?, 1240 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1241 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1242 attribute stroke-linecap { 1243 "butt" | "round" | "square" | "inherit" 1244 }?, 1245 attribute stroke-linejoin { 1246 "miter" | "round" | "bevel" | "inherit" 1248 }?, 1249 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1250 attribute stroke-width { "inherit" | xsd:string }?, 1251 attribute color { xsd:string }?, 1252 attribute color-rendering { 1253 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1254 }?) 1255 & attribute vector-effect { 1256 "none" | "non-scaling-stroke" | "inherit" 1257 }? 1258 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1259 attribute unicode-bidi { 1260 "normal" | "embed" | "bidi-override" | "inherit" 1261 }?) 1262 & (attribute solid-color { xsd:string }?, 1263 attribute solid-opacity { "inherit" | xsd:string }?) 1264 & (attribute display-align { 1265 "auto" | "before" | "center" | "after" | "inherit" 1266 }?, 1267 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1268 & (attribute stop-color { xsd:string }?, 1269 attribute stop-opacity { "inherit" | xsd:string }?) 1270 & (attribute font-family { "inherit" | xsd:string }?, 1271 attribute font-size { "inherit" | xsd:string }?, 1272 attribute font-style { 1273 "normal" | "italic" | "oblique" | "inherit" 1274 }?, 1275 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1276 attribute font-weight { 1277 "normal" 1278 | "bold" 1279 | "bolder" 1280 | "lighter" 1281 | "inherit" 1282 }?, 1283 attribute text-anchor { 1284 "start" | "middle" | "end" | "inherit" 1285 }?, 1286 attribute text-align { 1287 "start" | "center" | "end" | "inherit" 1288 }?)), 1289 attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?, 1290 (attribute id { xsd:NCName } 1291 | attribute xml:id { xsd:NCName })?, 1292 attribute xml:base { xsd:anyURI | xsd:string }?, 1293 attribute xml:lang { xsd:language? }?, 1294 attribute class { xsd:NMTOKENS }?, 1295 attribute role { xsd:string }?, 1296 attribute rel { xsd:string }?, 1297 attribute rev { xsd:string }?, 1298 attribute typeof { xsd:string }?, 1299 attribute content { xsd:string }?, 1300 attribute datatype { xsd:string }?, 1301 attribute resource { xsd:string }?, 1302 attribute about { xsd:string }?, 1303 attribute property { xsd:string }?, 1304 attribute xml:space { "default" | "preserve" }?, 1305 attribute x1 { xsd:string }?, 1306 attribute y1 { xsd:string }?, 1307 attribute x2 { xsd:string }?, 1308 attribute y2 { xsd:string }?, 1309 (stop)* 1310 } 1311 radialGradient = 1312 element radialGradient { 1313 ((attribute fill-opacity { "inherit" | xsd:string }?, 1314 attribute stroke-opacity { "inherit" | xsd:string }?) 1315 & (attribute fill { "none" | xsd:string }?, 1316 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1317 attribute stroke { xsd:string }?, 1318 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1319 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1320 attribute stroke-linecap { 1321 "butt" | "round" | "square" | "inherit" 1322 }?, 1323 attribute stroke-linejoin { 1324 "miter" | "round" | "bevel" | "inherit" 1325 }?, 1326 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1327 attribute stroke-width { "inherit" | xsd:string }?, 1328 attribute color { xsd:string }?, 1329 attribute color-rendering { 1330 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1331 }?) 1332 & attribute vector-effect { 1333 "none" | "non-scaling-stroke" | "inherit" 1334 }? 1335 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1336 attribute unicode-bidi { 1337 "normal" | "embed" | "bidi-override" | "inherit" 1338 }?) 1339 & (attribute solid-color { xsd:string }?, 1340 attribute solid-opacity { "inherit" | xsd:string }?) 1341 & (attribute display-align { 1342 "auto" | "before" | "center" | "after" | "inherit" 1343 }?, 1344 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1345 & (attribute stop-color { xsd:string }?, 1346 attribute stop-opacity { "inherit" | xsd:string }?) 1347 & (attribute font-family { "inherit" | xsd:string }?, 1348 attribute font-size { "inherit" | xsd:string }?, 1349 attribute font-style { 1350 "normal" | "italic" | "oblique" | "inherit" 1351 }?, 1352 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1353 attribute font-weight { 1354 "normal" 1355 | "bold" 1356 | "bolder" 1357 | "lighter" 1358 | "inherit" 1359 }?, 1360 attribute text-anchor { 1361 "start" | "middle" | "end" | "inherit" 1362 }?, 1363 attribute text-align { 1364 "start" | "center" | "end" | "inherit" 1365 }?)), 1366 attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?, 1367 (attribute id { xsd:NCName } 1368 | attribute xml:id { xsd:NCName })?, 1369 attribute xml:base { xsd:anyURI | xsd:string }?, 1370 attribute xml:lang { xsd:language? }?, 1371 attribute class { xsd:NMTOKENS }?, 1372 attribute role { xsd:string }?, 1373 attribute rel { xsd:string }?, 1374 attribute rev { xsd:string }?, 1375 attribute typeof { xsd:string }?, 1376 attribute content { xsd:string }?, 1377 attribute datatype { xsd:string }?, 1378 attribute resource { xsd:string }?, 1379 attribute about { xsd:string }?, 1380 attribute property { xsd:string }?, 1381 attribute xml:space { "default" | "preserve" }?, 1382 attribute cx { xsd:string }?, 1383 attribute cy { xsd:string }?, 1384 attribute r { xsd:string }?, 1385 (stop)* 1386 } 1388 \text = 1389 element text { 1390 ((attribute fill-opacity { "inherit" | xsd:string }?, 1391 attribute stroke-opacity { "inherit" | xsd:string }?) 1392 & (attribute fill { "none" | xsd:string }?, 1393 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1394 attribute stroke { xsd:string }?, 1395 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1396 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1397 attribute stroke-linecap { 1398 "butt" | "round" | "square" | "inherit" 1399 }?, 1400 attribute stroke-linejoin { 1401 "miter" | "round" | "bevel" | "inherit" 1402 }?, 1403 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1404 attribute stroke-width { "inherit" | xsd:string }?, 1405 attribute color { xsd:string }?, 1406 attribute color-rendering { 1407 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1408 }?) 1409 & attribute vector-effect { 1410 "none" | "non-scaling-stroke" | "inherit" 1411 }? 1412 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1413 attribute unicode-bidi { 1414 "normal" | "embed" | "bidi-override" | "inherit" 1415 }?) 1416 & (attribute solid-color { xsd:string }?, 1417 attribute solid-opacity { "inherit" | xsd:string }?) 1418 & (attribute display-align { 1419 "auto" | "before" | "center" | "after" | "inherit" 1420 }?, 1421 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1422 & (attribute stop-color { xsd:string }?, 1423 attribute stop-opacity { "inherit" | xsd:string }?) 1424 & (attribute font-family { "inherit" | xsd:string }?, 1425 attribute font-size { "inherit" | xsd:string }?, 1426 attribute font-style { 1427 "normal" | "italic" | "oblique" | "inherit" 1428 }?, 1429 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1430 attribute font-weight { 1431 "normal" 1432 | "bold" 1433 | "bolder" 1434 | "lighter" 1435 | "inherit" 1436 }?, 1437 attribute text-anchor { 1438 "start" | "middle" | "end" | "inherit" 1440 }?, 1441 attribute text-align { 1442 "start" | "center" | "end" | "inherit" 1443 }?)), 1444 (attribute id { xsd:NCName } 1445 | attribute xml:id { xsd:NCName })?, 1446 attribute xml:base { xsd:anyURI | xsd:string }?, 1447 attribute xml:lang { xsd:language? }?, 1448 attribute class { xsd:NMTOKENS }?, 1449 attribute role { xsd:string }?, 1450 attribute rel { xsd:string }?, 1451 attribute rev { xsd:string }?, 1452 attribute typeof { xsd:string }?, 1453 attribute content { xsd:string }?, 1454 attribute datatype { xsd:string }?, 1455 attribute resource { xsd:string }?, 1456 attribute about { xsd:string }?, 1457 attribute editable { "none" }?, 1458 attribute property { xsd:string }?, 1459 attribute xml:space { "default" | "preserve" }?, 1460 attribute requiredFonts { xsd:string }?, 1461 attribute systemLanguage { xsd:string }?, 1462 attribute transform { xsd:string | "none" }?, 1463 attribute x { xsd:string }?, 1464 attribute y { xsd:string }?, 1465 attribute rotate { xsd:string }?, 1466 (text)+ 1467 } 1468 g = 1469 element g { 1470 ((attribute fill-opacity { "inherit" | xsd:string }?, 1471 attribute stroke-opacity { "inherit" | xsd:string }?) 1472 & (attribute fill { "none" | xsd:string }?, 1473 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1474 attribute stroke { xsd:string }?, 1475 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1476 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1477 attribute stroke-linecap { 1478 "butt" | "round" | "square" | "inherit" 1479 }?, 1480 attribute stroke-linejoin { 1481 "miter" | "round" | "bevel" | "inherit" 1482 }?, 1483 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1484 attribute stroke-width { "inherit" | xsd:string }?, 1485 attribute color { xsd:string }?, 1486 attribute color-rendering { 1487 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1489 }?) 1490 & attribute vector-effect { 1491 "none" | "non-scaling-stroke" | "inherit" 1492 }? 1493 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1494 attribute unicode-bidi { 1495 "normal" | "embed" | "bidi-override" | "inherit" 1496 }?) 1497 & (attribute solid-color { xsd:string }?, 1498 attribute solid-opacity { "inherit" | xsd:string }?) 1499 & (attribute display-align { 1500 "auto" | "before" | "center" | "after" | "inherit" 1501 }?, 1502 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1503 & (attribute stop-color { xsd:string }?, 1504 attribute stop-opacity { "inherit" | xsd:string }?) 1505 & (attribute font-family { "inherit" | xsd:string }?, 1506 attribute font-size { "inherit" | xsd:string }?, 1507 attribute font-style { 1508 "normal" | "italic" | "oblique" | "inherit" 1509 }?, 1510 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1511 attribute font-weight { 1512 "normal" 1513 | "bold" 1514 | "bolder" 1515 | "lighter" 1516 | "inherit" 1517 }?, 1518 attribute text-anchor { 1519 "start" | "middle" | "end" | "inherit" 1520 }?, 1521 attribute text-align { 1522 "start" | "center" | "end" | "inherit" 1523 }?)), 1524 (attribute id { xsd:NCName } 1525 | attribute xml:id { xsd:NCName })?, 1526 attribute xml:base { xsd:anyURI | xsd:string }?, 1527 attribute xml:lang { xsd:language? }?, 1528 attribute class { xsd:NMTOKENS }?, 1529 attribute role { xsd:string }?, 1530 attribute rel { xsd:string }?, 1531 attribute rev { xsd:string }?, 1532 attribute typeof { xsd:string }?, 1533 attribute content { xsd:string }?, 1534 attribute datatype { xsd:string }?, 1535 attribute resource { xsd:string }?, 1536 attribute about { xsd:string }?, 1537 attribute property { xsd:string }?, 1538 attribute xml:space { "default" | "preserve" }?, 1539 attribute requiredFonts { xsd:string }?, 1540 attribute systemLanguage { xsd:string }?, 1541 attribute transform { xsd:string | "none" }?, 1542 (path 1543 | rect 1544 | circle 1545 | line 1546 | ellipse 1547 | polyline 1548 | polygon 1549 | solidColor 1550 | textArea 1551 | linearGradient 1552 | radialGradient 1553 | \text 1554 | g 1555 | defs 1556 | use)* 1557 } 1558 defs = 1559 element defs { 1560 ((attribute fill-opacity { "inherit" | xsd:string }?, 1561 attribute stroke-opacity { "inherit" | xsd:string }?) 1562 & (attribute fill { "none" | xsd:string }?, 1563 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1564 attribute stroke { xsd:string }?, 1565 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1566 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1567 attribute stroke-linecap { 1568 "butt" | "round" | "square" | "inherit" 1569 }?, 1570 attribute stroke-linejoin { 1571 "miter" | "round" | "bevel" | "inherit" 1572 }?, 1573 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1574 attribute stroke-width { "inherit" | xsd:string }?, 1575 attribute color { xsd:string }?, 1576 attribute color-rendering { 1577 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1578 }?) 1579 & attribute vector-effect { 1580 "none" | "non-scaling-stroke" | "inherit" 1581 }? 1582 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1583 attribute unicode-bidi { 1584 "normal" | "embed" | "bidi-override" | "inherit" 1586 }?) 1587 & (attribute solid-color { xsd:string }?, 1588 attribute solid-opacity { "inherit" | xsd:string }?) 1589 & (attribute display-align { 1590 "auto" | "before" | "center" | "after" | "inherit" 1591 }?, 1592 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1593 & (attribute stop-color { xsd:string }?, 1594 attribute stop-opacity { "inherit" | xsd:string }?) 1595 & (attribute font-family { "inherit" | xsd:string }?, 1596 attribute font-size { "inherit" | xsd:string }?, 1597 attribute font-style { 1598 "normal" | "italic" | "oblique" | "inherit" 1599 }?, 1600 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1601 attribute font-weight { 1602 "normal" 1603 | "bold" 1604 | "bolder" 1605 | "lighter" 1606 | "inherit" 1607 }?, 1608 attribute text-anchor { 1609 "start" | "middle" | "end" | "inherit" 1610 }?, 1611 attribute text-align { 1612 "start" | "center" | "end" | "inherit" 1613 }?)), 1614 (attribute id { xsd:NCName } 1615 | attribute xml:id { xsd:NCName })?, 1616 attribute xml:base { xsd:anyURI | xsd:string }?, 1617 attribute xml:lang { xsd:language? }?, 1618 attribute class { xsd:NMTOKENS }?, 1619 attribute role { xsd:string }?, 1620 attribute rel { xsd:string }?, 1621 attribute rev { xsd:string }?, 1622 attribute typeof { xsd:string }?, 1623 attribute content { xsd:string }?, 1624 attribute datatype { xsd:string }?, 1625 attribute resource { xsd:string }?, 1626 attribute about { xsd:string }?, 1627 attribute property { xsd:string }?, 1628 attribute xml:space { "default" | "preserve" }?, 1629 (path 1630 | rect 1631 | circle 1632 | line 1633 | ellipse 1634 | polyline 1635 | polygon 1636 | solidColor 1637 | textArea 1638 | linearGradient 1639 | radialGradient 1640 | \text 1641 | g 1642 | defs 1643 | use)* 1644 } 1645 use = 1646 element use { 1647 ((attribute fill-opacity { "inherit" | xsd:string }?, 1648 attribute stroke-opacity { "inherit" | xsd:string }?) 1649 & (attribute fill { "none" | xsd:string }?, 1650 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1651 attribute stroke { xsd:string }?, 1652 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1653 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1654 attribute stroke-linecap { 1655 "butt" | "round" | "square" | "inherit" 1656 }?, 1657 attribute stroke-linejoin { 1658 "miter" | "round" | "bevel" | "inherit" 1659 }?, 1660 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1661 attribute stroke-width { "inherit" | xsd:string }?, 1662 attribute color { xsd:string }?, 1663 attribute color-rendering { 1664 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1665 }?) 1666 & attribute vector-effect { 1667 "none" | "non-scaling-stroke" | "inherit" 1668 }? 1669 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1670 attribute unicode-bidi { 1671 "normal" | "embed" | "bidi-override" | "inherit" 1672 }?) 1673 & (attribute solid-color { xsd:string }?, 1674 attribute solid-opacity { "inherit" | xsd:string }?) 1675 & (attribute display-align { 1676 "auto" | "before" | "center" | "after" | "inherit" 1677 }?, 1678 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1679 & (attribute stop-color { xsd:string }?, 1680 attribute stop-opacity { "inherit" | xsd:string }?) 1681 & (attribute font-family { "inherit" | xsd:string }?, 1682 attribute font-size { "inherit" | xsd:string }?, 1683 attribute font-style { 1684 "normal" | "italic" | "oblique" | "inherit" 1685 }?, 1686 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1687 attribute font-weight { 1688 "normal" 1689 | "bold" 1690 | "bolder" 1691 | "lighter" 1692 | "inherit" 1693 }?, 1694 attribute text-anchor { 1695 "start" | "middle" | "end" | "inherit" 1696 }?, 1697 attribute text-align { 1698 "start" | "center" | "end" | "inherit" 1699 }?)), 1700 (attribute id { xsd:NCName } 1701 | attribute xml:id { xsd:NCName })?, 1702 attribute xml:base { xsd:anyURI | xsd:string }?, 1703 attribute xml:lang { xsd:language? }?, 1704 attribute class { xsd:NMTOKENS }?, 1705 attribute role { xsd:string }?, 1706 attribute rel { xsd:string }?, 1707 attribute rev { xsd:string }?, 1708 attribute typeof { xsd:string }?, 1709 attribute content { xsd:string }?, 1710 attribute datatype { xsd:string }?, 1711 attribute resource { xsd:string }?, 1712 attribute about { xsd:string }?, 1713 attribute property { xsd:string }?, 1714 attribute xml:space { "default" | "preserve" }?, 1715 attribute requiredFonts { xsd:string }?, 1716 attribute systemLanguage { xsd:string }?, 1717 attribute transform { xsd:string | "none" }?, 1718 attribute href { xsd:string }?, 1719 attribute x { xsd:string }?, 1720 attribute y { xsd:string }? 1721 } 1722 stop = 1723 element stop { 1724 ((attribute fill-opacity { "inherit" | xsd:string }?, 1725 attribute stroke-opacity { "inherit" | xsd:string }?) 1726 & (attribute fill { "inherit" | xsd:string }?, 1727 attribute fill-rule { "inherit" | "nonzero" | "evenodd" }?, 1728 attribute stroke { "inherit" | xsd:string }?, 1729 attribute stroke-dasharray { "inherit" | "none" | xsd:string }?, 1730 attribute stroke-dashoffset { "inherit" | xsd:string }?, 1731 attribute stroke-linecap { 1732 "butt" | "round" | "square" | "inherit" 1733 }?, 1734 attribute stroke-linejoin { 1735 "miter" | "round" | "bevel" | "inherit" 1736 }?, 1737 attribute stroke-miterlimit { "inherit" | xsd:string }?, 1738 attribute stroke-width { "inherit" | xsd:string }?, 1739 attribute color { xsd:string }?, 1740 attribute color-rendering { 1741 "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit" 1742 }?) 1743 & attribute vector-effect { 1744 "none" | "non-scaling-stroke" | "inherit" 1745 }? 1746 & (attribute direction { "ltr" | "rtl" | "inherit" }?, 1747 attribute unicode-bidi { 1748 "normal" | "embed" | "bidi-override" | "inherit" 1749 }?) 1750 & (attribute solid-color { "inherit" | xsd:string }?, 1751 attribute solid-opacity { "inherit" | xsd:string }?) 1752 & (attribute display-align { 1753 "auto" | "before" | "center" | "after" | "inherit" 1754 }?, 1755 attribute line-increment { "auto" | "inherit" | xsd:string }?) 1756 & (attribute stop-color { "inherit" | xsd:string }?, 1757 attribute stop-opacity { "inherit" | xsd:string }?) 1758 & (attribute font-family { "inherit" | xsd:string }?, 1759 attribute font-size { "inherit" | xsd:string }?, 1760 attribute font-style { 1761 "normal" | "italic" | "oblique" | "inherit" 1762 }?, 1763 attribute font-variant { "normal" | "small-caps" | "inherit" }?, 1764 attribute font-weight { 1765 "normal" 1766 | "bold" 1767 | "bolder" 1768 | "lighter" 1769 | "inherit" 1770 }?, 1771 attribute text-anchor { 1772 "start" | "middle" | "end" | "inherit" 1773 }?, 1774 attribute text-align { 1775 "start" | "center" | "end" | "inherit" 1776 }?)), 1777 (attribute id { xsd:NCName } 1778 | attribute xml:id { xsd:NCName })?, 1779 attribute xml:base { xsd:anyURI | xsd:string }?, 1780 attribute xml:lang { xsd:language? }?, 1781 attribute class { xsd:NMTOKENS }?, 1782 attribute role { xsd:string }?, 1783 attribute rel { xsd:string }?, 1784 attribute rev { xsd:string }?, 1785 attribute typeof { xsd:string }?, 1786 attribute content { xsd:string }?, 1787 attribute datatype { xsd:string }?, 1788 attribute resource { xsd:string }?, 1789 attribute about { xsd:string }?, 1790 attribute property { xsd:string }?, 1791 attribute xml:space { "default" | "preserve" }?, 1792 attribute offset { xsd:string }? 1793 } 1795 font = 1796 element font { 1797 attribute horiz-origin { xsd:string }?, 1798 attribute horiz-adv-x { xsd:string }?, 1799 (desc 1800 | glyph 1801 | font-face 1802 | hkern)* 1803 } 1805 glyph = 1806 element glyph { 1807 attribute unicode { xsd:string }?, 1808 attribute glyph-name { xsd:string }?, 1809 attribute arabic-form { xsd:string }?, 1810 attribute lang { xsd:string }?, 1811 (desc)* 1812 } 1814 hkern = 1815 element hkern { 1816 attribute u1 { xsd:string }?, 1817 attribute g1 { xsd:string }?, 1818 attribute u2 { xsd:string }?, 1819 attribute g2 { xsd:string }?, 1820 attribute k { xsd:string }?, 1821 (desc)* 1822 } 1824 font-face = 1825 element font-face { 1826 attribute font-family { xsd:string }?, 1827 attribute font-style { xsd:string }?, 1828 attribute font-weight { xsd:string }?, 1829 attribute font-variant { xsd:string }?, 1830 attribute font-stretch { xsd:string }?, 1831 attribute unicode-range { xsd:string }?, 1832 attribute panose-1 { xsd:string }?, 1833 attribute widths { xsd:string }?, 1834 attribute bbox { xsd:string }?, 1835 attribute units-per-em { xsd:string }?, 1836 attribute stemv { xsd:string }?, 1837 attribute stemh { xsd:string }?, 1838 attribute slope { xsd:string }?, 1839 attribute cap-height { xsd:string }?, 1840 attribute x-height { xsd:string }?, 1841 attribute accented-height { xsd:string }?, 1842 attribute ascent { xsd:string }?, 1843 attribute descent { xsd:string }?, 1844 attribute ideographic { xsd:string }?, 1845 attribute alphabetic { xsd:string }?, 1846 attribute mathematical { xsd:string }?, 1847 attribute hanging { xsd:string }?, 1848 attribute underline-position { xsd:string }?, 1849 attribute underline-thickness { xsd:string }?, 1850 attribute strikethrough-position { xsd:string }?, 1851 attribute strikethrough-thickness { xsd:string }?, 1852 attribute overline-position { xsd:string }?, 1853 attribute overline-thickness { xsd:string }?, 1854 (desc)* 1855 } 1856 metadata = 1857 element metadata { 1858 text 1859 } 1861 #--- End of SVG 1.2 PS RNC schema 1863 7.1. Tools available for use with RNC 1865 By no means an exhaustive list, but these were used while validating 1866 the RNC above. The tools must be used against an uncompressed 1867 version of the document. 1869 o "jing": Java-based RNG tool: 1872 o "pyjing": Python-based RNG tool: 1875 Example: 1877 "jing -c SVG-1.2-PS.rnc /path/to/file.svg" 1879 8. References 1881 [SVG] W3C Recommendation, Scalable Vector Graphics (SVG) 1.1 (Second 1882 Edition), August 2011 1885 [SVGT] W3C Recommendation, Scalable Vector Graphics (SVG) Tiny 1.2 1886 Specification, December 2011 1889 [RNC] RelaxNG Compact 1891 Authors' Addresses 1893 Alex Brotman 1894 Comcast, Inc 1896 Email: alex_brotman@comcast.com 1898 Trent Adams 1899 Proofpoint, Inc 1901 Email: tadams@proofpoint.com