惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位
罗磊的独立博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
大猫的无限游戏
大猫的无限游戏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园_首页
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
IT之家
IT之家
博客园 - 聂微东
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
S
Security Affairs
宝玉的分享
宝玉的分享
V
V2EX
C
Cisco Blogs
博客园 - Franky
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
S
Securelist
J
Java Code Geeks
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
WordPress大学
WordPress大学
W
WeLiveSecurity
T
Threatpost
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志

博客园 - 逍遥子

MSN空间上的以往技术贴整理 Link Java to Maple - 逍遥子 C++的多态的被覆盖的问题 类引用机制 - 逍遥子 - 博客园 防止盗链的简单技术 验证码(CAPTCHA)的破解技术 校内网狗狗刷骨机完全版(不再维护) - 逍遥子 - 博客园 HTTP外挂的简单实现 C++的中英文字符串表示(string,wstring) C++学习之2--10.09题目答案 C++学习之一--基本介绍 下面内容为C++的教学 VC6的C++标准支持不完全 数论中求公因子、求模逆的算法 QuickSort和MergeSort算法及其效率比较源代码 继承、重载运算符、虚函数与向量、矩阵运算 数据库时间段分组查询解决方法和数据转储方法 Java 通配符匹配查找文件 动态加载Java运行环境和运行实例
XML基础学习1
逍遥子 · 2008-09-11 · via 博客园 - 逍遥子

     最近读了一本书《XML基础教程--入门、DOM、Ajax与Flash》(Beginning XML with DOM and Ajax),让我对XML有了更深刻的理解,主要是关于XML在网页上的是应用。以前使用XML主要是用于配置数据和数据库,也使用过DOM和SAX技术对其读写等操作,不过对于利用XML技术在网页上使用却是知之甚少。所以这里主要介绍我学习的XML在网页方面的应用,包括XML基础知识、DTD文档类型定义、CSS层叠样式表、XSLT可扩展样式表语言转换以及少许JavaScript操作。

    XML如今得到广泛的使用,在于其强大的数据描述能力和可扩展能力。标准的XHTML语言就是XML的一种应用,此外还有用于表达数学格式MathML、矢量图SVG文档、RSS文档,甚至于MSN的聊天记录都是使用XML。

    XML的要点如下:

  1. XML不是语言,他的规则用来构造其他语言;
  2. XML创造了用来标记内容的基于标签的语言;
  3. XML基于SGML(标准通用标记语言),并且与SGML建通

    XML如果满足下面条件就是合式的:

  1. 该文档包含一个或者多个元素
  2. 该文档只包含一个文档元素,用于包含其他元素
  3. 每个元素都正确的结束
  4. 元素区分大小写
  5. 属性值都扩于引号且不为空

   因此HTML是不符合合式要求的,因为它的标签不区分大小写,标签的顺序也不做要求,属性也不一定需要使用引号括起来。例如

Code

   是不受影响的,而在合式XML中是不允许的。需要修改如下,就符合XML标准。

Code

    标签(tag)指描述内容的部分,也就是尖括号包含的内容。元素指一个开始标签到一个结束标签以及其中的内容。

    下面是标准的XML文档例子。

Code

     第一行是XML声明,可选。当时一般为程序处理方便,都会标明。如果需要必须位于文档第一行,且前面没有任何内容,甚至空格。version属性是指版本号。encoding是字符集,如果没有注明,默认是UTF-8,使用中文的话,需要声明为GBK或者GB2312。此外还有属性standalone,其值为yes或者no,表示是否还需要外部文件。三个属性均是可选,但是顺序必须按照version, encoding, standalone来。

     第二行是注释,以"<!--"开始,"-->"结束,与HTML一致。

     第三行就是文档元素(根元素)起始,所有元素都包含其中。合式XML只有一个根元素。元素中可以包含子元素、文本、空元素、混合元素。空元素指仅有标签无文本,可以写作下面两种方式,在一些解析程序中两者处理方式是不同的,这要注意。

Code

     混合元素是指既包含文本也包含子元素。

     XML命名原则如下

  1. 不能以数字或者标点开头
  2. 不能含有空格
  3. 如果不是表示命名空间,就不要使用冒号
  4. 区分大小写

   处理指令(Processing instruction,PI)是将处理信息传给其他应用程序。XML不处理,而直接传送给应用程序。例如指定XSL样式表的应用:

Code

     XML的处理方式主要有两种,基于树的DOM(文档对象模型)和基于事件的SAX(简单应用编程接口)解析器。

     对于DOM,是将整个XML文件读入,解析成树的结构,然后可以查询各个元素的值和修改。而对于SAX,则是一句句的读入元素,然后一句句的扔掉。简单的说就是它会回调一个函数,告诉用户当前读到的标签是什么,然后供用户对下面的内容进行处理。前者便于一次读入,然后进行多次查询和修改,但是需要消耗内存。而后者读入之后不会保存由用户自己处理。如果XML文件很大,而用户只要处理头部的很少几个元素的话,那么显然应该选择SAX方式,当用户获取到自己需要的信息后就不再处理,而不需要将整个文档进行解析。