SVG——新一代Web设计及互动媒体的革新

SVG文档结构

SVG文档结构   SVG文档是以文本形式来表现内容和数据,一个典型的SVG文档总体上包括两部分:序言和文档元素。序言中包含XML声明、处理指令和注释;文档元素中包括各种元素、属性、文本内容、字符和实体引用、CDATA区等。

来源:SVG中国(ChinaSVG.COM)

  下面先给出一个典型的SVG文档,该文档在打开时先弹出一个”Hello World!“对话框,然后显示一段“Hello World!”文本和一个渐变填充的矩形框。

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg id="root" xmlns="htp://www.w3.org/2000/svg" width="100%" height="100%"
    viewBox="0 0 1024 768" onload="init(evt)">
    <title>KSVG-Slide</title>
    <desc>KSVG-Slide</desc>
<!--Just a demo-->
    <defs>
        <radialGradient id="radgral">
            <stop offset="0%" style="stop-color:rgb(255,255,255)"/>
            <stop offset="100%" style="stop-color:rgb(0,0,255)"/>
        </radialGradient>
    </defs>
    <text x="20" y="30" style="fill:rgb(0,0,0);font-size:24"> Hello World! </text>
    <rect x="20" y="60" width="200" height="40"
         style="fill:url(#radgral)"/>
    <script type="text/javascript"><![CDATA[functioninit(evt){alert('Hello World!');}]]></script>
</svg>
<!--root-->

  SVG文档结构主要包含以下几个方面:

  1 XML声明

  所有SVG文档都必须是一个XML文档,所以每个SVG文档首行必须有一个XML声明。XML声明是以<?XML开始的,它的作用是告诉处理该文档的程序,下面的内容符合XML语法。XML声明可以包含version、encoding和standalone三个属性。version属性必须有而且必须是第一个属性,它指明文档遵循哪个版本的XML。encoding属性指明文档字符使用的编码标准,SVG可以用UTF-8,UTF-16和iso-8859-1三种编码标准。standalone属性表明文档是否和一个外部的文档类型定义文档配套使用。

  2 文档类型声明

  文档类型声明(Document Type Declaration)指出两件事情:跟随的XML数据的根元素、标识;用于解析XML的DTD的位置。

  <!DOCTYPE svg开始文档类型声明,并声明了根元素为svg。PUBLIC “-//W3C//DTD SVG 1.1//EN'表明将使用的DTD是PUBLIC的DTD,由W3C所有,标识符为DTD SVG 1.1,而且是用英文编写的(EN)。

  "htip://www.w3.org/Graphics/SVG/I.I/DTD/svg11-flat-20030114.dtd',提供了解析XML的DTD的URL地址。DTD包括一系列标记、attributes和properties,用于标记文档的内容,DTD还包括一些规则,规定了哪些标记能出现在其他哪些标记中。假如SVG文档中的标记不遵循所指定的DTD的规则的话,那么这个文档将不能通过校验,也无法在程序中正确处理。

  3 SVG元素

  接下来,SVG文档的所有SVG元素、标记和数据都将放在根元素<svg>的起始标签和结束标签之间。SVG文档元素通常都是层次结构的(hierarchical),表达的数据信息都包含在元素和属性中,一个元素就代表一项信息。元素通常包括元素名称、起始标签和结束标签,元素中还包含属性,属性为描述元素提供了额外信息。

  上面的示例SVG文档包含了8个元素,其中<svg>元素是定义SVG图像必不可少的元素,它代表SVG文档内容的开始,通常指定高宽、文档视口范围等。<title>和<desc>元素使用纯文本描述图像的大致内容。<defs>元素中定义可以被引用的元素,其中定义了<radialGradient id="radgral">用于在以后的元素中被引用。接下来的<text>和<recP元素是可视化元素,它们可以引用<defs>元素中定义的元素,引用定义元素时采用URI资源定位标识,如<rect>元素的style="fil:url(#radgral)"。最后定义<script>元素,通常其中定义javascript脚本函数供程序调用。

  4 其它:主要有注释和CDATA

  注释是对文档结构或内容的解释,它不属于XML文档内容,主要用于提高文档的可读性的,如上面SVG文档的第8行就是一个注释。注释以<!一开始,以一>结束。CDATA是XML文档中特殊区域,其中的所有的标记和实体引用都将被忽略,所有内容将全部被当作字符串。一般来说,SVG文档内嵌脚本都放在CDATA中。

关于作者

  万里,1997年7月毕业于西北大学化学工程与机械专业,1998年8月进入金山公司担任软件工程师,参加WPS多个版本开发工作,其中WPS2000荣获国家科技进步二等奖。
  2003年9月入哈尔滨工业大学软件学院攻读软件工程硕士。 

(THE END)

 

将要更新