




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter 1 XML概述HTML源于标准通用标记语言(Standard Generalized Markup Language, SGML)。SGML是一种元语言,即描述 标记语言的语言。HTML是SGML的一种应用。XML也由SGML衍生出来。 XML的基本语法和HTML很相似,只不过HTML使用固定标签集,而XML创建新标签,基本示例如下。可以看到XML与HTML的结构基本相同,均分为元素、属性、值。 每个XML文档都有一个且只能有一个根元素,而其他元素则都要包含在这个根元素中。只有注释和处理指令可以不包含在根元素中。元素是XML中用于识别和描述数据的基本单元。它们是 XML文档的编译块,和HTML,XML使用标签来表示元素。XML元素由三个部分组成:起始标签 、内容 、结束标签 属性是依附于元素存在的。元素可以具有属性,元素的每个属性由一个名称-值对组成,写在元素的开始标签中。属性值用单引号或者双引号括起来。预定义实体引用:字符 字符实体 & & ' > < “ " Chapter2 XML数据底层结构-DTDDTD的结构一般由元素类型声明、属性表声明、实体声明、记号(notation)声明构成。一个典型的文档类型定义文件会把将来所创建的XML文档的元素结构、属性类型、实体引用等预先进行定义。(1) EMPTY类型 EMPTY用于定义空元素,该元素只可能有属性而不会有字符数据或子元素。形如或者。(2) ANY类型 这表明该元素可以包含DTD中定义的其他任何元素或已经编译的字符数据(#PCDATA)。(3) #PCDATA关键字#PCDATA说明元素包含字符数据。可以包含除标记外的一切字符,包括数字、字母和符号等。被定义包含PCDATA的元素不能包含任何其他子元素。(4)子元素类型 当一个元素只包含子元素,而没有字符数据时,则称此元素类型具有元素型内容(element content)。在该类型的元素声明时,通过内容模型来指定在其内容上的约束。 内容模型是决定元素类型和子元素出现顺序的一种简单语法。 子元素内容模型可以有两种可能的结构:序列和选择 序列。上述对employee元素的声明,其所有子元素必须出现且仅出现一次,而且要依次出现,这种结果称为序列。 选择。元素的选择可以进行如下的声明: (5)混合类型 如果某个元素既包含子元素又包含已编译的字符数据,则该元素具有混合内容。如下所示。混合类型的文档声明语法: 属性用于将名称-值对与元素进行关联。与元素类似,在XML文档中使用的属性必须在DTD中声明。属性声明的语法: 默认声明可以有四种默认设置,#REQUIRED, #IMPLIED,#FIXED+默认值 ,只有默认值。 #REQUIRED 说明必须为元素提供该属性。 #IMPLIED 说明必须该元素可以包含该属性,也可以不包含该属性。 #FIXED+默认值 说明一个固定的属性默认值,文档的编写者不能修改该属性的值。 只有默认值 与FIXED+默认值一样,如果元素不包含该属性,XML处理器将以声明的默认值向应用程序报告该属性。不同的是,这种声明方式属性的值是可以改变的。属性类型 :在属性表声明时,总共有10中属性类型可以选择,分别是:CDATA、Enumerated、ID、IDREFS、ENTITY、ENTITIES、NMTOKEN、NMTOKENS、NOTATION。 CDATA 最常用的属性类型,表明属性值为字符数据,与元素内容声明中#PCDATA相同。如果属性值中要出现特殊的字符,如, &, ”等,用预定义的实体引用,或用字符引用。 Enumerated 在声明属性时,可以限制属性的取值只能从一个列表中选择,这类属性属于枚举类型。注意,枚举类型的声明没有使用关键字Enumerated,此处为了说明而已。枚举型属性声明如下: ID、IDREF、IDREFS ID类型的属性值唯一标识XML文档中的一个元素。IDREF类型的属性值参照相应的ID类型的属性值。如果一个属性需要引用文档中多个ID类型的属性值,则可以将其声明为IDREFS类型。 NMTOKEN、NMTOKENS NMTOKEN类型的属性的值必须为一个有效的XML名称,属性值不能含有空格字符(NMTOKEN是CDATA类型的一个子集)。NMTOKENS是NMTOKEN的复数形式,该类型的属性值可以包含若干个有效的XML名称,每个名称之间用空格进行分隔。 NOTATION 在现实中很多数据时无法用XML来表示的,例如:声音、图像、视频等。对于这些数据,XML处理器通常都不支持。通过DTD的记号声明(Notation Declaration),为非XML数据描述一种可能的格式。记号声明有两种形式,一种是MIME;另一种是使用URI路径,指出外部处理程序的位置。 ENTITY和ENTITYS 这两个属性类型用来引用文档中不可解析的外部实体,其属性值必须为一个有效的XML名称。比如二进制的图像数据等。 实体分为普通实体和参数实体。根据实体的内容在DTD文件内部还是外部,实体又可以分为内部实体和外部实体。 内部实体的声明 语法如下: 外部实体的声明 外部实体除了实体的内容实在一个单独的文件之外,与内部一般实体很相似,语法如下: 第三章 XML底层数据结构XML Schema名称空间通过使用保留属性来声明,这种属性的名字必须是以“xmlns”或以“xmlns:”作为前缀。与其他任何XML属性一样,这些属性可以直接或以默认的方式给出。有两种形式的名称空间声明。(1) 第一种: (2) 第二种: XML Schema支持类型的派生,XML Schema类型的派生分为限制(restriction)和扩展(extension),通过限制派生的新类型的值范围是原类型值范围的子集,而通过扩展则可以为现有类型添加新的元素和属性。 对于简单类型,只有限制派生没有扩展派生。 在XML Schema中,注释仍然可以使用,不过为了方便其他读者和应用程序来理解模式文档,XML Schema提供了三个元素来为模式提供注解信息。这三个元素是xs:annotation,xs:documentation,xs:appinfo,其中xs:documentation和xs:appinfo是作为xs:annotation的子元素使用的。This is a student xml schemaXML Schema 内置简单类型:1. 字符数据类型 (1)string 数据类型string表示XML中的字符串。 模式处理器在处理string类型的值时,会将值中所有空白字符包括空格、制表符、回车换行都保留。(2)normalizedString 数据类型normalizedString派生自string,与string不 同的地方:模式处理器对空白的处理方式,处理器会将读到的 每一个回车、换行和制表符替换为单个空格字符。 (3)token 数据类型token派生自normalizedString,模式处理器对 于此类型的内容时,会用单个空格来替换读到的每一个回车、 换行和制表符,替换后,每一组连续的空格被压缩为一个空格 字符,而所有前导和后导空格被删除。 (4) Name 数据类型Name派生自token,它表示一个XML名称,即该类型的值必须以字母、下划线(_)或冒号(:)开头,而且只能包含字母、数字、连字符、下划线、冒号或句号(.)。 (5) NCName 数据类型NCName继承自Name,表示一个XML无冒号的名称,即该名称中不能使用冒号。它与Name类似,唯一的区别就是不能使用冒号。 2. 数字类型 (1) float和double(单精度和双精度浮点数)float数据类型表示IEEE单精度32位浮点数,而double表示IEEEE双精度64位浮点数。2) decimal 数据类型decimal表示任意精度的小数,不同的模式处理器支持的有效位数是不一样的,不过XML Schema推荐标准中要求符合规范的模式处理器必须至少支持18位有效数字。 (3) integer 数据类型integer派生自decimal,表示一个任意大的整数。从integer数据类型派生了其他十二中内置的整数类型。 3. 日期和时间类型 (1) date date数据类型用于表示日期。date的格式为:YYYY-MM-DD。要表示9999年之后的年份,在年值左边添加数字,但不允许前导0;表示公元前的年,可以在年值钱添加负号-;可以在日期值之后添加时区表达式,或者字母Z,表示UTC时间。 (2) time数据类型time用于表示时间。time的格式是:hh:mm:ss.sss。时间是24小时制。可以在时间值之后添加可选的时间表达式,或者添加字母Z,表示是UTC时间。 (3) dateTime 数据类型dateTime表示完整的日期和时间,即date+time,本类型的格式为YYYY-MM-DDThh:mm:ss.sss,字母T作为日期和时间的分割。可以在dateTime值之后添加可选的时区表达式,或者添加字符Z。 (4) gYear 表示一个特定的阳历年,格式为: YYYY(5) gYearMonth 表示一个特定年的某月,格式: YYYY-MM(6) gMonth表示某个月,格式为: -MM(7) gMonthDay表示某个月的某天,格式: -MM-DD(8) gDay 表示某天,格式为: -DD (9) duration 数据类型duration表示持续时间。duration类型数据的格式为:PnYnMnDTnHnMnS。 示例:P2Y3M4DT23H12M15.6S4. 其他数据类型 (1) boolean 表示逻辑值,有效值是true,false,0,1(2) anyURI 表示一个统一资源标示符的引用。 (3) QName 表示XML名称空间限定名。Qname值包括一个名称空间前缀和本地部分(这两部分都是NCName类型),中间用冒号分隔。 XML Schema 自定义简单类型: 要定义新的简单类型,只能从现有的简单类型(内置的简单类型或派生于内置简单类型的简单类型)来派生。对于简单类型,只有限制派生而没有扩展派生,通过限制派生得到的新的简单类型的值范围是其基类型值范围的子集。 XML Schema推荐标准定义了12个面,用于对简单类型的值进行约束。 要定义新的简单类型,使用xs:simpleType元素,对现有的基类型进行限制,要使用xs:restriction元素,并在该元素内部使用限制值范围的面。 XML Schema推荐标注定义了12个面,用于约束数据类型的值。类别 面 范围 minInclusive ,maxInclusive, minExclusive,maxExclusive 长度 length, minLength, maxLength 精度 totalDigits, fractionDigits 枚举 enumeration 模式匹配 pattern 空白处理 whiteSpace l 限制范围 XML Schema提供了4个范围面,用于限制某个值的范围。这四个范围面是:minInclusive,maxInclusive,minExclusive, maxExclusive。其中Inclusive表示闭区间,Exclusive表示开区间。 l 限制长度 如果要限制值的长度,可以使用length,minLength, maxLength面。这三个面必须是非负整数,主要用于基于字符串的类型(包括派生的类型)、不能用于日期和时间类型、数字类型以及boolean类型。length规定的是固定长度。min和max规定的是最小和最大长度。length不能和另两个一起用。 l 指定精度 如果需要限定数的数字位数,可以用totalDigits面来限制。totalDigits面的值必须是正整数,它可以用于decimal类型,或从其派生的类型。如果要限定小数部分的位数,可以使用fractionDigits面。fractionDigits面的值必须是非负整数,它只能用于decimal类型。 l 枚举值 如果需要将某个类型的值限制在一组可选的值中,可以通过enumeration面来限制。Enumeration面可以用在除boolean类型外的其他任何类型。比如限制性别取值为“男”或“女”等等。 l 模式匹配 有时候我们要进行复杂的格式约束,例如,约束邮件地址是正确的邮件格式,可以通过pattern面来实现,pattern面允许我们正确使用正则表达式来约束某个值必须符合指定的样式。 例如: 上式是一个典型的Regex表达式,该表达式指出了哪些字母、数字或符号可以按序出现于元素内容中。 l 空白处理 在XML Schema提供的12个面中,唯有whiteSpace面用于通知模式处理器如何处理空白字符,不用于限定类型值范围。 whiteSpace的有效值为: preserve, replace, 和collapse preserve 所有空白都被保留 replace 值中出现的每一个制表符、换行和回车都用一个空格替换。 collapse 值中出现的每个制表符、换行和回车都用一个空格替换,替换之后,所有连续空格被压缩为一个空格。前导和后导空格被删除。 l 固定面 除enumeration和pattern面外,其余的面都有一个fixed属性,该属性的类型为boolean,默认值为false,如果将该属性的值设为true,那么该面的值将被固定下来,派生类型将不能修改该面的值。 在XML Schema推荐标准中,简单类型可以分为三类:原子类型、列表类型和联合类型。原子类型是那些具有不可分割值的类型,如12,“张三”,1829-08-24等,前面我们所介绍过的内置类型和自定义简单类型都属于原子类型。在XML Schema的内置类型中,NMTOKENS、IDREFS和ENTITIES并不属于原子类型,而是列表类型。列表类型的值是由原子类型的值组成的列表,各个值之间以空白字符分隔。要定义新的列表类型,需要使用xs:list元素,该元素的itemType属性用于引用一个现有的原子类型,或者你可以在xs:list元素内部使用xs:simpleType子元素来指定匿名的原子类型。联合类型可以包含多个原子类型或列表类型,组成联合类型的简单类型成为它的成员类型,成员类型必须总是简单类型,不存在复杂类型的联合。联合类型的值可以是它的成员类型中的一个类型的实例。定义联合类型,需要使用xs:union元素,该元素的memberType属性给出组成联合类型的所有成员类型,各个成员类型之间以空白字符分隔,或者可以在xs:union元素内部使用一个或多个xs:simpleType子元素来指定匿名的成员类型。xs:attribute元素的use、default和fixed属性:xs:attribute元素的use属性的有效取值为: required 属性是必须的 ; (相当于#REQUIRED) optional 属性是可选的,use的默认值;(相当于#IMPLIED) prohibited 禁止使用属性; 如果希望某个属性具有默认值,那么可以使用xs:attribute元素的default属性,该属性为声明的属性指定一个默认值。如果希望某个属性的值固定下来,不允许其值被修改,那么可以使用xs:attribute元素的fixed属性,指定一个固定的默认值。 (相当于DTD中的“固定默认值”)anyType是派生所有简单和复杂类型的基类型。它是 XML Schema中所有类型的祖先。一个anyType类型对其包含的内容没有任何形式的约束。例如:一个元素的内容如果只有子元素构成,意味着该元素的内容中只包含子元素。可以使用模型组来构建纯元素内容的内容模型。模型组共有三种,如下所示: sequence 序列,sequence组中的所有子元素要按指定的属性出现; choice 选择,choice组中的所有子元素可以选择使用任意一个,且只能使用一个。 all 表示all组中的所有子元素可以以任意顺序出现。 XML Schema规定,如果一个具有复杂内容的复杂类型定义是从anyType类型限制派生(xs:restriction base=“xs:anyType”),那么可以省略xs:complexContent和xs:restriction元素,直接在xs:complexType下使用模型组。对于某些需要重复出现的元素,可以使用出现指示符来控制元素的出现的次数。出现指示符是两个属性:minOccurs和maxOccurs,这两个属性可以在模型组元素(xs:sequence、xs:choice以及xs:all元素)或者xs:element上使用。minOccurs属性指定元素必须出现的最小次数,maxOccurs属性指定元素可以出现的最大次数,这两个属性的默认值都是1。一次不使用这两个属性时,那么声明的元素就只能出现一次。如果一个元素既可以包含子元素,又可以包含子元素,那么称元素的内容为混合内容。定义具有混合内容的类型,可以将xs:complexType元素的mixed属性设置为true。XML Schema中元素组使用xs:group元素来定义。属性组使用attributeGroup元素来定义。 第四章 XML样式单 XSL(eXtensible Stylesheet Language)-可扩展的样式单语言,主要用于将一个XML文档转换为另外的文档(XML文档、HTML文档),以及定义转换后的文档的显示外观。XSL实际上包含3种语言:XSLT、XPath和XSL-FO。XSLT是XSL标准中最重要的部分,通常我们提到的XSL就是指XSLT。 XSLT是基于XML的语言,其本身也是格式良好的XML文档。是XSLT文档的根元素,它有两个必需的属性version和xmlns:xslXSLT所构造的文档树有7类节点: 根节点 元素节点 文本节点 属性节点 名称空间节点 处理指令节点 注释节点 XSLT样式表由一组模板规则组成。模板规则包含了两个部分:模式和模板。模式用于在源文档树中匹配(定位)节点,模板定义节点的处理规则,通过模板的实例化来组成结果树的一部分。每个模板规则都是一个元素,规则的模式由属性match来指定,元素的内容是用于组成结果树的模板。元素用于告诉处理器处理当前节点的所有子节点。元素用于在结果树中创建一个文本节点。下面是一些常用的模式匹配的用法: 匹配根节点 匹配元素节点 使用通配符 和其他语言一样,XSLT中也是使用星号(*)作为通配符,例如表示匹配任何元素。 使用匹配属性 用加上属性名,可以用于匹配属性节点。例如: 表示匹配mode属性节点。 使用斜杠匹配(/)子节点 ,表示匹配employees元素节点下的任意的employee子节点。 ? 使用双斜杠(/)匹配后代节点 表示匹配根节点下任意的name元素节点,不管name的位置。 ,表示匹配employees元素节点下任意的name子节点。 使用或操作符(|)使用或操作符(|)来可选地匹配多个节点。例:表示匹配任意的name或age元素节点。 使用操作符 可以在中指定布尔表达式,用于在节点集中更精确地匹配某一个节点。 第一个employee元素 XSLT中提供了两个用于条件处理的元素:和元素。元素完成类似于Java语言中if语句的功能,而元素完成类似于Java语言中类似于if /else if/else语句的功能。使用这两个元素,可以根据某个条件,来选择输出的内容。元素可以用于对元素进行排序,该元素只能作为元素和元素的子元素使用,当在中使用时,元素必须第一个出现第五章 XML文档的解析Node接口中的主要方法:l public String getNodeName() l public short getNodeType()l public String getNodeValue()l public boolean hasChildNodes()l public NodeList getChildNodes()l public Node getFirstChild()l public Node getLastChild()l public Node getParentNode()l public NamedNodeMap getAttributes()Document接口中的主要方法:l Element getElementById(String elementId) 该方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现场出镜课件
- 江苏省宿迁市泗洪县2020-2021学年第一学期五年级科学期中试卷(含答案)
- 2026届甘肃省徽县职业中专伏镇校区化学高三第一学期期中经典试题含解析
- 四川省宜宾市2026届高一化学第一学期期中教学质量检测模拟试题含解析
- 现代汉语汉字简化课件
- 2025年注册测绘师考试专项训练试卷:测绘技术与法规
- 2025年春季初级经济师职业资格考试 经济基础知识冲刺押题试卷
- 现代仓储管理知识培训内容
- 2026届贵州省百所学校高一化学第一学期期中联考试题含解析
- 湖北省汉川市第二中学2026届化学高二第一学期期末联考试题含答案
- T-JSIA 0002-2022 能源大数据数据目录指南
- 医疗设备与医院感染控制
- 铁路桥涵设备检查-铁路桥梁桥面检查
- 2023施工项目部标准化工作手册
- 七年级生物《哺乳动物》教案
- 【数学】四川省普通高中2024届高三上学期学业水平考试试题(解析版)
- 原发性骨质疏松症诊疗指南(2022版)第一部分
- 初中信息技术奥赛基础知识
- 重庆医科大学附属第一医院改建PET-CT、PET-MR项目环评报告
- 2022水电站计算机监控系统上位机现场验收标准手册
- 非计划再次手术管理制度与流程
评论
0/150
提交评论