title: “XML基础 - Web Services核心技术讲义” source: “田浩然上传的资料” original_path: “/田浩然上传的资料/0_WebServices/XMLFundamentals.pdf” author: “Lian Yu, 北京大学软件与微电子学院” size: “564.86 KB” pages: 108 date: “2026-09-29” method: “PDF文本提取(pdf-inspector)” status: “done” tags:

  • XML
  • Web服务
  • Schema
  • Namespace
  • XSLT

XML基础 - Web Services核心技术讲义

概述

北京大学软件与微电子学院 Lian Yu 老师的 Web Services Technologies 课程讲义第2章,系统讲解 XML 作为 Web Services 基础技术的核心概念。

核心观点

XML 是 Web Services 的 Lingua Franca

XML 是 Web Services 架构的基础构建块,具有以下关键特性:

  • 平台无关、语言无关:天然适合构建互操作性的分布式系统
  • 结构化数据表达:将电子表格、通讯录、配置文件等结构化数据标准化
  • Unicode 完全兼容:支持国际化和本地化
  • 严格语法:相比 HTML,XML 不允许模糊解析,增强了机器可读性

XML 十要点(W3C 平台概览)

  1. XML 用于结构化数据
  2. 外观类似 HTML,但语义由应用定义
  3. 文本格式,但不为人读(为机器读)
  4. 设计时有意冗余(便于解析和调试)
  5. 技术家族(不单单是 XML 1.0)
  6. 历史深厚(1996年开始开发,1998年成为 W3C 推荐标准)
  7. 催生 XHTML(HTML 的 XML 化)
  8. 模块化设计
  9. RDF 和语义网的基础
  10. 免费、平台无关、广泛支持

XML 文档语法要素

  • 元素:由标签 <element> 和 </element> 界定
  • 属性:name=“value” 形式
  • 严格规则:
    • 所有标签必须有结束标签(或自闭合)
    • 元素不能重叠,只能嵌套
    • 文档只能有一个根元素
    • 属性名在标签内唯一

XML Namespaces(命名空间)

解决元素名称冲突的核心机制:

  • 作用:区分来自不同命名空间但名称相同的元素
  • 实现:使用 URI 标识命名空间(通常用 HTTP URL)
  • 声明方式:
    • 显式:xmlns:prefix="URI"
    • 默认:xmlns="URI"
  • 继承规则:默认命名空间自动传播到所有子元素,除非子元素显式声明其他命名空间

XML Schema(XSD)

XML Schema 是定义 XML 文档结构和约束的语言,核心功能包括:

Simple Type 定义

  • Restriction:基于基本类型施加约束

    • length, minLength, maxLength:字符串长度约束
    • pattern:正则表达式约束
    • enumeration:枚举值约束
    • whiteSpace:空白字符处理(preserve/replace/collapse)
    • minInclusive, maxInclusive, minExclusive, maxExclusive:数值范围约束
    • fractionDigits, totalDigits:数字精度约束
  • List:创建空格分隔的列表类型

  • Union:合并多个类型的值空间

Complex Type 定义

使用三种 compositor 组合元素:

  • sequence:元素按顺序出现(默认 minOccurs=1, maxOccurs=1)
  • choice:元素二选一或多选一
  • all:元素无序出现(minOccurs/maxOccurs 不适用)

通配符元素:

  • <any>:允许任意元素占位,支持未来扩展
  • <anyAttribute>:允许任意属性占位

processContents 控制验证严格程度:

  • strict:默认,必须找到 schema 并验证
  • lax:找不到 schema 时检查 well-formedness
  • skip:不验证

Schema 管理

  • include:在相同 namespace 内分片 schema
  • import:跨 namespace 引用其他 schema

XML 处理技术

SAX(Simple API for XML)

  • 事件驱动的流式解析
  • 正向、只读、低内存占用
  • 适合大文档处理

DOM(Document Object Model)

  • 树形结构对象模型
  • 随机访问任意节点
  • 内存占用较高

XSLT 和 XPath

  • XSLT:声明式规则-based 转换语言
  • XPath:表达式语言,用于定位 XML 文档中的节点
  • 典型应用:将一种 XML 格式转换为另一种格式

XML Schema 最佳实践

  1. 始终使用 elementFormDefault="qualified" 和 attributeFormDefault="unqualified"
  2. 全局声明类型,局部声明元素(根元素除外)
  3. 用类型表达内容模型,用元素控制文档结构
  4. 根据对象模型选择最贴近的 Schema 特性

知识关联

行动点

  • 实际项目中应建立 XML Schema 设计规范
  • 考虑使用 XSLT 实现数据格式转换
  • 大文档处理优先选择 SAX 而非 DOM