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