Javascript & XML

来源:互联网 发布:java 安防监控 编辑:程序博客网 时间:2024/05/15 06:21
1:根元素就是xml中最外层的那个标签,它就类似于HTML的标签<html>,所有的标签都包含在这个标签内部。

2:XML文档的有效性:不仅仅指格式良好的XML文档,而且还必须是遵循文档类型定义(DTD)的文档。

<!ELEMENT elementName (content)><!ATTLIST dog breed CDATA #REQUIRED>
#PCDATA 和 #REQUIRED 前面使用了#号,这是为了避免这些单词被解析为元素的名称


xml文档的结构与我们用DTD定义的文档结构完全匹配,它定义了当前XML文档的结构。

引用DTD文件
<!DOCTYPE myDogs SYSTEM "myDogs.dtd">

IE浏览器和Firefox浏览器都使用XSLT来格式化XML文档的显示
var xmlDoc = document.implementation.createDocument("","",null);  //创建一个空的DOM对象xmlDoc.load("myfile.xml");

元素的名称可以作为CSS的选择器,以使该CSS样式应用在与选择器相匹配的元素之上。CSS中的属性被应用于与选择器相匹配的元素之上。
虽然我们可以通过把CSS与XML关联,将数据显示出来,但是令人遗憾的是,它并没有任何说明来描述这些数据所代表的含义。尽管CSS可以使页面显示的更美观,如果想为我们的数据添加相应的说明,这个时候就应该用到XSL(Extensible Stylesheet Language)可扩展样式语言,将XML文档格式化为一个HTML文档

XSLT是基于模板的样式转换语言,它是一个功能强大的样式转换语言,本质上,它可以将XML文档转换为任何基于文本的语言或其他格式的文本。
需要两个文档一个XML源文档,另一个是XSLT样式表,转换结果将生成一个新的文档;与CSS类似,XSLT也通过转换规则来创建,某一条转换规则将对匹配的元素实行相应的转换。

XSLT的模板规则是什么
一个XSLT文件包含了多个转换模板,一个转换模板包含了如下定义:
1 选择元素:从源文档树中选择元素的标准
2 转换指令:将所抽取的内容进行再构造,以创建结果文档树的指令
  模板规则是构建XSLT转换的关键。一个模板规则包含两个部分:模式和转换模板。模式(通常情况下唯一个元素名称)用以在源文档树中匹配相应的元素,与模式匹配的元素将被执行转换操作。而转换模板定义了如何对匹配的节点进行转换。

位于模板中的HTML标记片段为XSLT处理程序提供了一个对源内容进行重新构造的模板
value-of 元素使用了一个select属性,该属性用以从源文档中选取需要的内容。

如何将XML文档连接到XSL样式表??????
需要使用XML处理器指令,它类似与链接到CSS样式表,只是type属性的值不同而已由text/css到text/xsl

在IE浏览器中获取XML文档
IE浏览器依靠ActiveXObject()对象和MSXML库来获取和打开XML文档。传入一个包含ActiveX对象版本信息的字符串作为参数即可以得到一个XML DOM对象。然后通过XML DOM对象我们就可以操作XML文档,创建了XML DOM对象以后我们就可以使用load()方法来加载一个指定的XML文档。
然后必须确保已经安装了Microsoft MSXML library.

如何判断XML文档何时被加载完成?
在操作XML文档之前,必须确定XML文档是否加载到客户端的浏览器,也就是你是否下载完了源代码。

现在我们有两种载入XML文档的模式,即同步方式和异步方式。对于XML DOM可用async属性来设置载入方式,默认情况下async为true.浏览器继续处理和呈现其后的页面,或者继续进行执行其后的js代码,无需等待XML文档加载完毕。而为false的话,浏览器将暂停页面的执行,直到连接到指定的XML文档元并完全下载。

var xmlDoc = createDocument();xml.async =  false;xmlDoc.load("myfile.xml");
在异步方式,我们可以通过onreadystatechange事件处理器和readyState属性来判断XML文档是否完全载入。

function xmlDoc_readyStateChange(){......}var xmlDoc = createDocument();xmlDoc.onreadystatechange = xmlDoc_readyStateChange;xmlDoc.load("myfile.xml");

在Firefox和Opera浏览器中加载XML文档
它们不需使用类似IE浏览器中的ActiveX外接式组件,DOM已经是Firefox和Opera浏览器和js实现的一部分,可以通过下面方式加载:

var xmlDoc = document.implementation.createDocument("","",null);  //创建一个空的DOM对象xmlDoc.load("myfile.xml");
与IE浏览器不同的是,当在异步方式加载完毕,会触发onload事件处理器