xml知识点总结

xml教程

一、基础

1.概念

  • XML 指可扩展标记语言,用来传输和存储数据。不会显示在浏览器上,一般用cssXSLT显示xml
  • XML 标签没有被预定义。您需要自行定义标签。
  • xml常用于简化数据的存储和共享。
  • 树结构

2.语法规则

  • 所有 XML 元素都须有关闭标签。
  • XML 标签对大小写敏感。
  • XML 必须正确地嵌套2。
  • XML 文档必须有根元素(父元素)。
  • XML 的属性值须加引号,例如:<note date="08/08/2008">
  • 实体引用:5个预定义的实体引用在这里插入图片描述
    注释:<!-- This is a comment -->

3.元素和属性

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
属性通常提供不属于数据组成部分的信息,如<img src="computer.gif">,src的内容就是属性。因为属性不易扩展,所以一般用来提供与数据无关的信息。

4.xml验证

文档类型定义 (DTD) 的语法规则,<!DOCTYPE note SYSTEM "Note.dtd">,DOCTYPE 声明是对外部 DTD 文件的引用。
DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:

<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]> 

XML Schema----XML 的 DTD 代替者

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 JavaScript

XMLHttpRequest 对象用于在后台与服务器交换数据。
创建语法:xmlhttp=new XMLHttpRequest();

三、进阶

1.XML 命名空间(XML Namespaces)

  1. XML 命名空间提供避免元素命名冲突的方法。两个不同xml文档一起使用时,内容不同,但定义的元素相同。如:<table>元素发生命名冲突时
    使用前缀来避免命名冲突:
<h:table>
   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>
<f:table>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>
  1. 使用命名空间
    添加一个 xmlns (XML Namespace)属性,为前缀赋予了一个与某个命名空间相关联的限定名称。
    语法:xmlns:namespace-prefix="namespaceURI"
<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>
  1. 默认的命名空间(Default Namespaces)
    语法:xmlns="namespaceURI"
    为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
    在这里插入图片描述
  2. 命名空间的实际应用
    XSL 样式表用于将 XML 文档转换为其他格式

2.XML CDATA

  • 所有 XML 文档中的文本均会被解析器解析。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。
  • PCDATA 指的是被解析的字符数据(Parsed Character Data)。
  • XML 解析器通常会解析 XML 文档中所有的文本。当某个 XML 元素被解析时,其标签之间的文本也会被解析。这是因为 XML 元素可包含其他元素,如:<name><first>Bill</first><last>Gates</last></name>
  • CDATA 部分由 “<![CDATA[” 开始,由 “]]>” 结束:
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
  {
  return 1;
  }
else
  {
  return 0;
  }
}
]]>
</script>

:CDATA 部分不能包含字符串 “]]>”。也不允许嵌套的 CDATA 部分。标记 CDATA 部分结尾的 “]]>” 不能包含空格折行

3.xml编码

  • XML 文档可以包含非 ASCII 字符,比如法语。为了避免错误,需要规定 XML 编码,或者将 XML 文档存为 Unicode。
  • Windows 记事本默认会将文件保存为单字节的 ANSI (ASCII)。如果选取文件菜单中的“另存为”命令,就可以规定双字节 Unicode (UTF-16)。
  • 文件中有这个元素<message>French: êèé</message>下面这些编码都不会报错,若是单字节编码就会出错
<?xml version="1.0" encoding="windows-1252"?> 
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-16"?>
  • 指示编码问题的错误消息

在文本内容中发现非法字符
如果 XML 文档中的某个字符与编码属性不匹配,您就会得到这个错误消息。通常,当 XML文件中含有外国字符,且当文件使用类似记事本的单字节编码编辑器保存,以及没有指定编码属性时,您就会得到这个错误消息。
将当前编码切换为不被支持的指定编码
如果您的文件被保存为 Unicode/UTF-16,但是编码属性被指定为单字节编码(比如Windows-1252、ISO-8859-1 或者UTF-8)时,那么您就会得到这个错误消息。或者当您的文档被保存为单字节编码,但编码属性被指定为双字节编码(比如UTF-16)时,也会得到这个错误消息。

4.服务器上的 XML

  • XML 文件是类似 HTML 文件的纯文本文件。能够通过标准的 web 服务器轻松地存储和生成 XML。
  • XML 文件在 Internet 服务器上进行存储的方式与 HTML 文件完全相同。
  • XML 可在不安装任何 XML 软件的情况下在服务器端生成。如需从服务器生成 XML 响应,可通过ASP或PHP生成XML响应。注意响应的内容类型必须设置为 “text/xml”。
    .asp文件:
<%
response.ContentType="text/xml"
response.Write("<?xml version='1.0' encoding='ISO-8859-1'?>")
response.Write("<note>")
response.Write("<from>John</from>")
response.Write("<to>George</to>")
response.Write("<message>Don't forget the meeting!</message>")
response.Write("</note>")
%>

.php文件:

<?php
header("Content-type:text/xml");
echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
echo "<note>";
echo "<from>John</from>";
echo "<to>George</to>";
echo "<message>Don't forget the meeting!</message>";
echo "</note>";
?>
  • XML 可在不安装任何 XML 软件的情况下从数据库生成。如需从服务器生成 XML 数据库响应,只需简单地编写一些代码,并把它在服务器上保存为 ASP 文件。
  • 在服务器上通过 XSLT 转换 XML
<%
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("simple.xml"))

'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("simple.xsl"))

'Transform file
Response.Write(xml.transformNode(xsl))
%>
  • 通过 ASP 把 XML 保存为文件
<%
text="<note>"
text=text & "<to>George</to>"
text=text & "<from>John</from>"
text=text & "<heading>Reminder</heading>"
text=text & "<body>Don't forget the meeting!</body>"
text=text & "</note>"

set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(text)

xmlDoc.Save("test.xml")
%>

5.XML DOM

  • XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。
  • DOM 把 XML 文档视为一种树结构。通过这个 DOM 树,可以访问所有的元素。可以修改它们的内容(文本以及属性),而且可以创建新的元素
  • 元素,以及它们的文本和属性,均被视为节点。
  • 获取元素的值:
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
txt=x.nodeValue;
  • 获取属性的值:
txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");
  • 改变元素的值:
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Easy Cooking";
  • 改变属性的值
    setAttribute() 方法可用于改变已有属性的值,或创建一个新属性。
x=xmlDoc.getElementsByTagName("book");
for(i=0;i<x.length;i++)
  {
  x[i].setAttribute("edition","first");
  }
  • 创建元素
    createElement() --创建新的元素节点。
    createTextNode() --创建新的文本节点。
    appendChild() --向节点添加子节点(在最后一个子节点之后)。
  • 删除元素
    removeChild() 方法删除指定的节点(或元素)。

XML相关技术

XHTML
更严格更纯净的基于 XML 的 HTML 版本。
XML DOM
访问和操作 XML 的标准文档模型。
XSLT
XSL 包含三个部分:

  • XSLT - 把 XML 转换为其他格式,比如 HTML
  • XSL-FO - 用于格式化 XML 文档的语言
  • XPath - 用于在 XML 文档中导航的语言

XQuery
基于 XML 的用于查询 XML 数据的语言。
DTD
用于定义 XML 文档中的合法元素的标准。
XSD
XML Schema。基于 XML 的 DTD 替代物。
XLink
在 XML 文档中创建超级链接的语言。
XPointer
允许 XLink 超级链接指向 XML 文档中更多具体的部分。
XForms
使用 XML 定义表单数据。
SOAP
允许应用程序在 HTTP 之上交换信息的基于 XML 的协议。
WSDL
用于描述网络服务的基于 XML 的语言。
RDF
用于描述网络资源的基于 XML 的语言。
RSS
聚合新闻以及类新闻站点内容的格式。
WAP
用于在无线设备上(比如移动电话)显示内容的一种基于 XML 的语言。
SMIL
描述视听呈现的语言。
SVG
使用 XML 格式定义图形。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值