前言

  在很久以前,笔者曾见到过1000+页的xml书,里面还有n多的概念,XSL,Xquery,让人头痛。无奈最近需要用到,所以在w3c恶补了一下。以下大致整理了一下相关概念,但是对XSL等派生语言没有详细的展开。

XML简介

XML语法

Xml验证

查看xml

xml转化为html

xml解析器

工具

xml相关概念

参考文章

 

XML简介

XML 指可扩展标记语言

XML 被设计用来传输和存储数据

XML 与 HTML 的主要差异

XML 不是 HTML 的替代

XML 和 HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

什么是 XML?

XML 指可扩展标记语言(EXtensible Markup Language)

XML 是一种标记语言,很类似 HTML

XML 的设计宗旨是传输数据,而非显示数据

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性(简单地说就是XML以树形结构展开,通过元素、子元素和属性描述,让人一看就懂)。

XML 是 W3C 的推荐标准

我觉得初学者可能会走近的误区:

1. XML是不是HTML的取代者

不是。写得好的html应该是一个well-formed的xml文档,其他方面最好不要把他们放在一个水平线上比较

2. XML是不是数据库的取代者

不是。

3. XML是不是...的取代者

都不是。

  这个结论可能听上去很滑稽:XML是非常非常重要的东西,但它什么都取代不了。

  但这并不奇怪,有人把它比做ASCII标准,他们是一切一切的基础,但并没有(也不需要)取代什么。(但是就如同ASCII取代了一些没有成大器的字符集定义,

  XML也会取代你在应用中自己定义的一些数据传输规范,但没有什么特别主流的东西。)

  刚开始学XML(或者说没开始学之前)的时候最爱问的一个问题肯定是:使用XML能给我带来什么好处?

  我觉得从某种角度上说,使用XML有些象使用OO面向对象:

  -你可以用它,你也可以不用它。

  -如果你的应用非常简单,用它不一定方便,没准儿用了效果还会更差。

  -和其他实际东西比如数据库,MTS,Web Server比起来,它更像是一个概念,一种方法

  -项目越大,它的发挥余地越大,作用越大。

  -一旦真正理解后,哪怕不用xml parser,也不妨碍你使用这个概念,如同可以抛开特定语言使用OO。

  - ......

XML的作用

作为一种通用的数据表示方法,用于数据的传输和存储

xml有全套的操作这种结构的方法

XSD,XSL,解析器,Xquery:数据查询(及语句)

定义派生标签语言:怎么定义,给出检验方法吗?另外就是怎么学习xml的派生语言。

XML语法

实例:

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body>

</note>

所有 XML 元素都须有关闭标签

XML 标签对大小写敏感

XML 文档必须有根元素

XML 的属性值须加引号

层级结构:数据的种类可以参考json,无非是数组和对象,同样可以用编译原理中的递归定义来定义xml。在xml中,用标签名相同的兄弟元素表示数组,用标签名不同的兄弟元素表示对象的成员,从而表示了对象。

Xml元素的标签名表示对象的类型(描述这个对象是什么)

XML 元素 vs. 属性

<person sex="female">

<firstname>Anna</firstname>

<lastname>Smith</lastname>

</person>

<person>

<sex>female</sex>

<firstname>Anna</firstname>

<lastname>Smith</lastname>

</person>

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。

因使用属性而引起的一些问题:

属性无法包含多重的值(元素可以)

属性无法描述树结构(元素可以)

属性不易扩展(为未来的变化)

属性难以阅读和维护

元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。

常用属性:id,name,xmlns

--------------------------------------------xml“高级”语法------------------------------------------------------

命名空间:它的作用是防止命名冲突,可想而知,在日常的数据表示中用得不多。但在一些通用的语言定义中会用到,如xsl。

<h:table xmlns:h="http://www.w3.org/TR/html4/">

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table>

在某个标签块中用属性xmlns声明命名空间,如<h:table xmlns:h="http://www.w3.org/TR/html4/">,则在整个块中都可以使用该命名空间。声明的内容是指向一个描述该命名空间的URL。

CDATA:在一个块内,用<![CDATA[ ……]]>把内容包住,使在该块中可以不用xml实体。可见这个东西不太常用,主要在定义的语言中可能用到。

<script>

<![CDATA[

function matchwo(a,b)

{

if (a < b && a < 0) then

{

return 1;

}

else

{

return 0;

}

}

]]>

</script>

XML 声明:如<?xml version="1.0" encoding="ISO-8859-1"?>,它不满足xml语法,不属于xml的部分。

编码属性(encoding)应当被指定为文档被保存时所使用的编码。我最好的避免错误的建议是:

使用支持编码的编辑器

确定编辑器使用的编码

在您的 XML 文档中使用相同的编码属性

Xml验证

合法的 XML 文档是“形式良好”(符合一般的xml语法规则)的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则:

***Note.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE note SYSTEM "Note.dtd">

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body>

</note>

***Note.dtd

<!DOCTYPE note [

<!ELEMENT note (to,from,heading,body)>

<!ELEMENT to      (#PCDATA)>

<!ELEMENT from    (#PCDATA)>

<!ELEMENT heading (#PCDATA)>

<!ELEMENT body    (#PCDATA)>

]>

W3C 支持一种DTD代替者,它名为XML Schema,它的语法基于XML

<xs:element name="note">

<xs:complexType>

<xs:sequence>

<xs:element name="to"      type="xs:string"/>

<xs:element name="from"    type="xs:string"/>

<xs:element name="heading" type="xs:string"/>

<xs:element name="body"    type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

查看xml

Xml也能在浏览器中显示(放在链接里),可见这个主题并不常用。

但是显示方案有一定的浏览器差异性,当xml有语法错误时,浏览器还会报错

解决方案1:用css定制样式

***cd.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet type="text/css" href="cd_catalog.css"?>

<CATALOG>

<CD>

<TITLE>Empire Burlesque</TITLE>

<ARTIST>Bob Dylan</ARTIST>

<COUNTRY>USA</COUNTRY>

<COMPANY>Columbia</COMPANY>

<PRICE>10.90</PRICE>

<YEAR>1985</YEAR>

</CD>

</CATALOG>

***cd_catalog.css

CATALOG

{

background-color: #ffffff;

width: 100%;

}

CD

{

display: block;

margin-bottom: 30pt;

margin-left: 0;

}

TITLE

{

color: #FF0000;

font-size: 20pt;

}

ARTIST

{

color: #0000FF;

font-size: 20pt;

}

COUNTRY,PRICE,YEAR,COMPANY

{

display: block;

color: #000000;

margin-left: 20pt;

}

很容易看懂,本来就有自定义的html标签

CSS 格式化 XML 不是常用的方法,更不能代表 XML 文档样式化的未来。W3C 推荐使用 XSLT。

解决方案2:XSLT, 是首选的 XML 样式表语言。

***breakfast.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet type="text/xsl" href="simple.xsl"?>

<breakfast_menu>

<food>

<name>Belgian Waffles</name>

<price>$5.95</price>

<description>

two of our famous Belgian Waffles

</description>

<calories>650</calories>

</food>

</breakfast_menu>

***simple.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Edited with XML Spy v2007 (http://www.altova.com) -->

<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">

<body style="font-family:Arial,helvetica,sans-serif;font-size:12pt;

background-color:#EEEEEE">

<xsl:for-each select="breakfast_menu/food">

<div style="background-color:teal;color:white;padding:4px">

<span style="font-weight:bold;color:white">

<xsl:value-of select="name"/></span>

- <xsl:value-of select="price"/>

</div>

<div style="margin-left:20px;margin-bottom:1em;font-size:10pt">

<xsl:value-of select="description"/>

<span style="font-style:italic">

(<xsl:value-of select="calories"/> calories per serving)

</span>

</div>

</xsl:for-each>

</body>

</html>

用过html模板后就觉得这不难看懂,主要是一些标签替换

XSLT 的原理是是在浏览器显示 XML 文件之前,先把它转换为 HTML。由于XSLT 转换是由浏览器完成的,所以减少了浏览器差异性问题。

xml转化为html

相关的xslt库

先转化为dom对象,再用程序完成

xml解析器

xml解析器会把把XML(文件或字符串)转换为XML DOM对象

什么是dom对象,怎么转换,看看js就知道了。

xml文档的读取有跨域问题

php与xml

php通过header("Content-type:text/xml");可以用echo向浏览器发送xml。

要用程序把数据库数据转换成xml,要自己写一些代码

工具

Xml验证器:http://www.w3school.com.cn/xml/xml_validator.asp

概念

XML 声明:如<?xml version="1.0" encoding="ISO-8859-1"?>

CDATA:在一个块内,用<![CDATA[ ……]]>把内容包住,使在该块中可以不用xml实体。

DTD:文档类型定义 (document type definition)

XSD(XML Schema Definition):即XML Schema ,是W3C 支持一种DTD代替者,它的语法基于XML 。

XSL :指扩展样式表语言(EXtensible Stylesheet Language),它的初衷是给xml提供样式显示。由XSLT、XPath 以及 XSL-FO组成。XSLT的主旨更一般化,指可将一种 XML 文档转换为另外一种 XML 文档。口头中,常把XSLT称为XLS。

XSLT:指 XSL 转换(XSL Transformations), 可将一种 XML 文档转换为另外一种 XML 文档,其中一种特例是把XML转换成HTML输出。

Xpath:Xpath是一门在 XML 文档中查找信息的语言,在 XML 文档中通过元素和属性进行导航。 XSLT使用 XPath 在 XML 文档中进行导航,在XSLT中,除开导航,就只剩下怎么替换的问题了。

Xquery:一种xml的查询语言,Xquery之于xml就像sql之于数据库。XQuery是基于XPath上的,单独的 XPath 位置路径本身就是有效的 Xquery。

 

参考文章

w3c:http://www.w3school.com.cn/xml/xml_syntax.asp

XML入门之十一问答

http://developer.51cto.com/art/200512/15385.htm

通过PHP操作XML入门

http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0421/2884.html

XML是什么,它可以做什么?——写给XML入门者 :

http://blog.csdn.net/cds27/article/details/743409

XML是什么,它可以做什么:http://blog.sina.com.cn/s/blog_5c012cc00100cehm.html

给xml的初学者

http://www.why.com.cn/epublish/node625/node1202/node1209/userobject7ai12694.html

相关技术http://www.w3school.com.cn/xml/xml_technologies.asp

转载于:https://www.cnblogs.com/deliver/p/3300634.html

xml入门简介--两天学会xml相关推荐

  1. ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介...

    ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...

  2. sql xml 入门

    /* sql xml 入门:--by jinjazz--http://blog.csdn.net/jinjazz1.xml: 能认识元素.属性和值2.xpath: 寻址语言,类似windows目录的查 ...

  3. ASP XML 编程简介

    XML 编程简介 收藏此页到茶秀网摘 作者: Steven   www.ASPCool.com 时间:2002-3-4 16:21:06  阅读次数:53017      XML 编程简介   1. ...

  4. [安卓]AndroidManifest.xml文件简介及结构

    1.AndroidManifest.xml文件简介: 每个应用程序在它的根目录中都必须要有一个AndroidManifest.xml(名字须精确一致)文件.这个清单把应用程序的基本信息提交给Andro ...

  5. Objects365数据简介及数据转换为XML格式

    Objects365数据简介及数据转换为XML格式 注:Obj365和COCO数据集转换为xml格式以及转为yolo的txt格式,xml数据统计处理更改见GitHub:https://github.c ...

  6. XML入门教程(XML这样学)

    前言:"与其每天担心未来,不如努力现在.别对自己丧失信心,成长的路上,只有奋斗才能给你最大的安全感." 你好,我是梦阳辰!下面和我一起学习XML吧! 01.XML概述 1.什么是X ...

  7. XML是什么,它可以做什么?——写给XML入门者 (转自Sank Orange)

    XML是什么,它可以做什么?--写给XML入门者 http://blog.csdn.net/cds27/archive/2006/05/18/743409.aspx XML即可扩展标记语言(eXten ...

  8. XML简介与Dom4j解析XML

    文章目录 一.XML简介 1.什么是 XML 2.XML 的主要作用 3.XML 与 HTML 4.XML 属性 5.XML语法规则 二.Dom4j解析XML 1.树结构与xml文件的解析技术 1.1 ...

  9. XML入门精解之CSS和XSL

    CSS(叠层样式表)和XSL(可扩展样式语言)都可以定义XML文件的显示,这两种方式有哪些不同以及它们在使用中的具体方法,我们将在本文给予介绍. 在XML文件中,使用的基本上是自定义的标记,显然一个浏 ...

最新文章

  1. 1.1 《硬啃设计模式》 第1章 大话设计模式
  2. 用番茄工作法提升工作效率 (三)工作任务的管理(系列完结篇)
  3. Serverless 解惑——函数计算如何访问 Mongo 数据库
  4. 华为云提供多场景本地数据上云方案,数据上云不再愁
  5. Freescale i.mx28 Boot-stream分析
  6. 基于Python的卷积神经网络和特征提取(Theano)
  7. 【MyBatis】bind标签
  8. 怎么在计算机上设置复印机双面打印,Word如何设置双面打印
  9. FSL ICA-FIX配置及处理流程
  10. ESP32基于arduino和风天气获取代码
  11. 学习——学习能力是最重要的能力
  12. python-直接删除整个文件夹
  13. 关于恢复误删Word文档的步骤详解
  14. Centos7 源码编译安装linux longterm 内核4.19.47
  15. zoj_3326_An Awful Problem(日期模拟)
  16. 萧洁云:SAP中国重上快车道
  17. 别把白内障拖成青光眼,不可逆的致盲眼病最可怕!
  18. 灰度(金丝雀)发布、蓝绿部署、滚动发布
  19. mysql 分数换算优良等级_优良中及各个等级是多少分
  20. 单片机编程软件很简单(14),Keil单片机编程软件断点设置

热门文章

  1. 实现一个包含Microsoft.Advertising和SmartMad广告控件的UserControl
  2. Python 进阶之路 (十二) 尾声即是开始
  3. 根据DNS的A记录负载均衡web服务请求
  4. Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号...
  5. js字符串截取函数substr substring slice使用对比
  6. CSS的单位及css3的calc()及line-height百分比
  7. C语言 基础60题(5)
  8. Feature Schema中Module和File节点属性含义的解释
  9. C#中ref和out的原理
  10. 15 redis-分布式锁