预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

从XML生成可与Ajax共同使用的JSON 时下,非常流行使用JavaScript代码为数据驱动的Web应用程序添加互动性。若能将数据编码成JavaScriptObjectNotation(JSON)的格式,您就可以更轻松地通过JavaScript语言使用它。通过本文,发掘使用XSLTV2从XML数据生成JSON的几种不同方法。 几年前,许多开发人员很看好XML、XSLT、ExtensibleHTML(XHTML)和其他一些基于标记的语言。现在,AsynchronousJavaScriptandXML(AJAX)成了新的热点,人们又将目光转向了使用JavaScript代码的数据驱动的富Internet应用程序。但是开发人员是否已经消除了XML和这一新技术之间的鸿沟呢? 当然,您可以在Web客户机中使用XML解析器来读取数据,但这种做法会带来两个问题。第一,出于安全方面的原因,XML数据只能从与此页面相同的那个域中读取。这虽然不是什么大的限制因素,但它的确会引起部署方面的问题,还会阻碍DHTML小部件的创建。第二,读取和解析XML会非常慢。 另一种做法是让服务器执行XML的解析工作,方法是设置服务器,使之向浏览器发送以JavaScript代码或时下流行的JavaScriptObjectNotation(JSON)编码的数据。本文将展示如下三种使用XSLTV2语言和SaxonXSLTV2处理器从XML数据生成JSON的技巧: 简单编码 通过函数调用加载数据 编码对象 JSON简介 要学习如何将数据编码成JSON(它只是JavaScript的一个子集),最好的方法是从数据开始。清单1显示了书籍列表的一个示例XML数据集。 清单1.基本的图形化图书馆 <?xmlversion="1.0"encoding="UTF-8"?> <books> <bookid="1"> <title>CodeGenerationinAction</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>Manning</publisher> </book> <bookid="2"> <title>PHPHacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book> <bookid="3"> <title>PodcastingHacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book> </books> 这个数据集很简单,只包含三本书,每本书都具有惟一的ID、书名、作者姓名及出版商的名字。(没错,我只选择了我自己的书作为数据集,但能怨我吗?这些书实在是不可多得的节日和生日礼物。) 清单2显示了这些数据在JSON中的效果。 清单2.JSON中的示例数据集 [{id:1, title:'CodeGenerationinAction', first:'Jack', last:'Herrington', publisher:'Manning'}, ...] 方括号([])表明这是一个数组。大括号({})则表明这是一个散列表,该散列表由一组名称和值对组成。在本例中,我创建了一个散列表的数组——用来存储这类结构式数据的一种常见方法。 另外一点值得注意的是字符串是通过单引号或双引号被编码的。所以,如果我想用单引号编码O'Reilly,我就必须使用反斜杠对它进行转义:'O\'Reilly'。这让我编写的这个XSLT样式表更为有趣了一些。 我并未在本例中放上任何日期,但您也可以通过如下两种方法来编码日期。第一种方法是将日期作为字符串,该字符串必须在后面被解析。第二种方法是将日期作为一个对象,比如: publishdate:newDate(2006,6,16,17,45,0)这段代码将publishdate的值设置为6/16/20065:45:00p.m.。 简单编码 接下来我将陆续介绍JSON编码的几种技巧。第一种也是其中最简单的一种,此样式表如清单3所示。 清单3.simple.xsl样式表 <?xmlversion="1.0"encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="2.0" xmlns:js="ht