《项目管理软件Dotproject使用手册精品资料.doc》由会员分享,可在线阅读,更多相关《项目管理软件Dotproject使用手册精品资料.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目管理软件Dotproject 使用手册第一章简单介绍DotProject DotProject是一个在1996年左右,由开源组织自发组织人员开发的一个开源的项目管理软件系统,基于Web,可以部署于局域网广域网的办公环境中,客户端不需要安装任何软件,只要有IE,Firefox,Opera等浏览器即可,强大,小巧.被翻译为了大约40多中语言,应用于100多个国家,可见它的简单易用的程度.DotProject具有以下的特色:1. 可运作于多种的作业平台:DotProject 这套软件所使用的开发工具,皆是兼容性很高的工具,MySQL很容连结多种语言,也可以在很多种作业系统下运作好,可以在多种平台
2、上面运。2. Web Server Base:由于是以JavaScript、PHP 的工具所开发出的工具,所以可以支持项目成员在同的地点,都可以更新、掌握项目进,适合用于群体使用,很符合项目管的需求。3. 可制作出多种同的报表及图表,将项目中繁多的资作适当的处。4. 本软件属于开放原始码(open source code)的软件,提供免费使用。5. 本软件的功能界面,可以透过同的步骤操作相同的功能;并且软件设计者,将相关的功能配置在同一个操作画面,让使用者可以必另外绕道选择功能安装dotproject的基本环境:windowsXP 或者 Windows Server系列 OSLinux /Un
3、ix OS只要能够跑AMP的OS,都可以(AMP指Apache,Mysql,PHP)第二章 管理模块2-1 安全管理:新建用户与角色设定当项目管系统要正式可以运作前,给每位使用者合法的登入身分,设定其使用权限是非常重要的一项工作,透过此一程序,组织得以确保每位使用者皆在授权范围内使用这些资,维护组织及客户的权益,保护商业机密,使项目管的运作过程可以顺。 新增使用者作法:用户管添加用户填入基本资设定名称及密码 设定角色提交首先,点选系统工作上用户管理再点选右上角添加用户,将会出现一些使用者的基本资表格,系统会请你填入该使用者的一些基本资,系统会依这些资所呈现的属性将使用者分类,以作为软件运作的基
4、础。如: 当我们填入某使用者隶属于某公司之后,该使用者便成为该公司可分配任务的人。由于项目管需要成员间频繁的互动,此时键入的联络资(电子邮件、电话)便作为系统预设的的沟通管道,另一项工作是为使用者设定其登入的名称及密码修改用户资料删除用户打开用户管理,在用户表的第一栏中有中左边红线部分所示, 从左到右为修改用户基本资料,为修改用户权限及角色,为删除该用户2-1 安全管理:设定用户权限系统用户权限分为以下四种:系统管理员,项目人员,访客,匿名。他们的角色设定如下表示:角 色权 限适 用 对 象权限系统管员全功能公司内部的系统管者、项目经大小项目人员除管功能供货商、项目成员访客外部访客应有的查看存
5、取功能顾客名仅能查看公司权限最低的访客统管员的权限,就是在这个软件里面所有的功能皆可以使用,除项目管会用到的日历、项目、任务的功能(称之为非管模块),再加上用户管及系统管的功能(称为管模块)。而项目成员的权限则是在非管模块下可做新增、删除及修改的动作, (请注意:项目成员及其以下权限登入的画面中,并会显示管模块的选项让使用者点选)而访客则是可以储存和查看在非管模块下的资 ,当访客点选超越其权限所可以浏览的资时,画面并会显示任何资。名则是一种仅让人登入,却几乎无法察看任何资的角色,系统预设此角色的用意,应是让系统管员在此基础上往上增加权限。至于如何对权限作进一步的设定,将会在下面作更详尽的介绍。
6、权限设定的项目及方式:可设定的项目可设定的方式备注说明公司讨论区存取可以可以看见这个项目,禁止某人存取文件,那么他的页面上并会显示文件的功能可以点选专案问题追踪查看可以点阅此选项来看。我今天设定禁止某人查看的话 ,就是当某人点选文件时,文件的内容会是空白的。任务使用者管新增日历系统管删除文件联络人修改系统权限如下:1在用户管理界面的用户表中点,进入用户权限管理界,(如图2- 1- 3)在增加权限那栏中,点模块右侧的下拉清单,选择所要增加的权限。由于此系统中所有的功能皆与公司有密切的连接,不管在项目任务日志等主要功能中,都以点选公司作为筛选依据,只要禁止用户选其他公司,便可防止用户看到其他公司的
7、资料2想要删除已设定的权限,只要在左半边的窗口,找到该设定,点选该项后面设定后的垃圾桶图示即可。经过此一设定,当此用户登入时,即使他在项目处选择全部的公司,他还是只能看见属于他们公司自己的项目2 2系统管理在系统管中,有许多可以让系统管员自修改的系统设定,如电子邮件的主机、操作接口、和工作时数等,其中有些修改必须牵涉关连式资库的语法,在此多做介绍工作时数与天数的设定在项目管过程中,时间是一个很重要的因素,我们以事先定义好的工作时数为标准,再比较实际的工作时数与预期的差异,来衡目前项目是否跟上进,本系统具备一项功能:当你输入一项工作所需耗费的小时数和起始日期,系统便可以帮你计算该项工作应该完工的
8、日期,其运算公式如下: 完成日期开始日期工作时数每日工作时数其中,每日工作时数与每周工作天数,可由管理者自行设定。(低版本中没有发现)设定方式如下:1打开系统管理的系统配置,将页面往下拉,直到daily_working_hours_title的选项,这个项目即为每日工作时间,系统预设的每日工作时间为八小时,可依照自己的需要,在该选项的框格里直接键入想要的工作时数。2一样在系统配置中往下,直到cal_working_days_title的选项,此项目为每周工作天数,0代表星期日假设一个星期工作七天,只需要在后面的框格中键入1,2,3,4,5,6,0即可,而系统原本预设工作天数为一周五天。用户个性
9、化设置 设置系统界面基本的显示格式,其缺省设置如图2-1-4所示:图2 1 4 自定义范围编辑在这个界面中是添加公司项目任务日历,点开图中的就会打开一个界面,可以在其上添加模块查看模块打开模块中的查看模块,修改模块用于激活模块,修改模块的“菜单状态”用于决定是否在导航菜单中显示模块的链接(如图2- 1 - 5)用户角色此本系统提供的四种角色模板外,还须要其它典型的角色,可自设定一种新的角色,选择其权限。但在此要注意的是,这种角色的设定并无法达到以上那种进阶权限设定的细微程,仅能针对整组模块进全面的禁止或是允许,能够针对单一公司或是文件进设定。其设定做法如下:系统管理用户角色,便会出现如图2-
10、1- 6所示界面,在图中红线框住部分中填入所需角色ID和概述,点击添加,点可对用户进行权限设定第三章 项目初始功能设置一个成功的项目,初始的规划是很重要的,虽然通常实际状况难免有出所出入,但是好的规划却可低确定性对项目绩效的影响。3- 1 建立公司部门建立公司公司 新建公司 添加资料 提交进入系统后,打开公司,便会出现如图3-1 -1所示,就可以针对公司填入相关资料,打开右上角的新建公司,就会出现如图3- 1 -2所示的画面,填入基本资料,点提交,新建的公司就会出现在图3-1 -1中在如图3- 1-1中,可看到公司类型有客户、厂商、供应商、顾问、政府、公司内部,点选公司名称,便可看到该公司的状
11、况点选公司名称后,就会出现图3 1 3的画面,进入浏览公司界面,上半部分是公司的详细信息,下半部分是部门、用户、联系人和项目信息。在这个界面中点新建公司就会出现如图3- 1 2 所示界面。建立部门建立部门可在浏览公司界面中点选部门,在此界面中,可打开右上角的部门下来清单选择要查看的部门名称,就可看到其详细信息。点新建部门(如图3-1-4),就进入如图3-1-5所示界面,可在其中填入要建部门的资料还可以在浏览公司界面中选部门那一栏,点其右下角的新建部门3 2建立联络任务 进入系统后,点选联系人就可进入如图3-2-1所示界面,点选右上角的新建联系人,出现图3 2 2 所示画面,在其中填入相应资料,
12、点提交即可。然后在图3-2-1中就可看到相应信息。若想快速找出某人的信息,在搜索栏中填入姓名,回车即可直接点联系人帐号,就能看到用户资料。若要修改联系人资料,直接点联系人帐号后的修改就连接到了同图3-2-2相同页面。而点联系人油箱地址就可给他发邮件。点就可导出联系人卡片(如图3-2-3),但用中文出现的就是乱码3 3项目与任务规划项目进入系统项目页面(图3-3-1),在这个页面中有很多标签(全部、未定义、已提议、计划中、进行中、暂停、完成、摸板、已完成、甘特),点开每个标签,都会出现相应的项目。以全部标签为例(图3-3-1),标签旁的数字是显示项目数目,颜色那一栏是项目完成的百分比,项目的状态
13、有计划中、进行中、未定义、已提议、暂停、完成、摸板、已完成。在这个标签中可一览所有的项目的开始时间、结束时间、实际时间、优先级、所有者、状态直接点击项目名称,出来的是该项目的详细信息和它的全部任务(如图3-3-2)新建项目:方法一:项目 新建项目 填入信息 提交新建项目的页面如图3-3-3所示,注意:页面中带*的项(图中红线框住的部分),为必填项!图3 3 3 方法二:公司 公司名称 浏览公司 新建项目 填入信息 提交任务每个项目底下都有很多任务打开系统中任务栏后,会弹出如图3-3-4所示页面,打开用户栏的下拉菜单,选择要查看的用户,可以快速搜索用户的任务。任务过滤器器中有我的任务、我的未完成
14、的任务、所有未完成的任务,在里面可以过滤任务,看起来简单,明了些新建任务:方法一:任务 新建任务 填入信息 保存注意:看图3-3-5和图3-3-6中红色框线,蓝色框线部分。若红色框线中是“” ,则没有新建任务栏进入新建任务界面(图3-3-7),在其上半部分填入任务名称、优先级、进度、状态;下半部分有四个标签:详细信息、日期、依赖、人力资源,均是安排重要任务的设定【详细信息】(如图3-3-8)包括任务所有者、任务类型、能否访问、选择联系人、部门、预算指标、父任务。其中,父任务的功能,选择表示其附属在某一任务下,而成为其子任务,于是在系统会自动的为您设置项目开始的时间。【日期】则是设定任务开始及结
15、束时间(图3-3-9),其中任务开始时间会根据在详细信息和依赖功能中的设定来自动设定开始时间。而完成日期则有两种设定方法。方法一:点完成日期后面的,运用日历选择完成日期,点计算的,系统会自动计算完成期限方法二:在预期的期限中,直接输入完成所需小时,系统会自动计算完成日期和时间【依赖】(图3-3-10)则是设定项目之间的前后关系,是否会互相影响,如有时候要等A 任务完成后,才可执B 任务。在本功能中,可以设定任务之间依赖的关系,运用增减,同时也可以选择是否要通过前置任务设定任务开始时间的功能;此外,可选择依赖项目跟踪功能设定,如果是重要的任务,就要选,以随时掌握任务状态。【人力资源】(图3-3-
16、11)左页面是分配给哪些人,他们该放多少心力在这个任务上;右页面则是是否要通过邮件通知任务人,空白地方则可写附加邮件注释内容。注意:此注释邮件内容容易出现乱码!图3-3-11中红线框住部分,是增加或删除分配给的任务人,方法是:点选想要选择的人,然后按或。而则是通过其下拉菜单来选择任务人该放多少心力在此任务上把【详细信息】、【日期】、【依赖】、【人力资源】填好后,按【保存】,所新建的任务就会出现在图3-3-4的界面上。系统会根据任务的状态(进行中/延误/完成),分别以不同的颜色标识出来,详情见任务栏下方的要点。每个任务下都可再建任务,前者称为父任务,后者称为子任务,两者用虚线连接(见图3-3-1
17、2)方法二:项目(随便一个)项目名称新建任务填入信息保存打开项目界面,随便点一个项目名称,就会出现如图3-3-13所示界面,点其右上角的新建任务,就会进入图3-3-7所示添加任务界面。后面的操作方法见方法一。3 4其他辅助功能 本节将介绍的几个辅助功能是甘特图、报表、人员任务冲突查询。他们是几个重要的辅助功能,无论项目进行到何种状态,均可利用他们发现项目的异常情况,防止错误。在整个项目设计好,准备动工前运用这几个功能来检测项目配置是否得当。在项目进行过程中,可以同步更新显示最新动态,以供项目负责人掌握项目运做状态。下面就开始介绍这几个功能。甘特图(Gantt Chart)甘特图是 1917由美
18、国工程师暨社会学家 Henry L.Gantt 所开发的水平横条图,可当作生产管工具。甘特图常用于项目管,以图形呈现排程表,可协助计划、协调及追踪项目内的特定工作。甘特图的呈现方式多样,可以是方格纸上建的简单图表,也可以是由 Microsoft、Project或 Excel 等项目管应用程序自动建而成的复杂图表。本系统中有很多查看甘特图的方法:方法一:项目甘特(见图3-4-1)方法二:任务甘特(见图3-4-2和图3-4-3)注意:图3-4-1显示的是所有项目的甘特图,而图3-4-3显示的是一个项目底下的所有任务的甘特图甘特图各部分的意思: 在项目执行期间,系统以不同颜色的长条显示,长条中间有灰
19、色的细长条,则表示该项目目前的进度。依赖关系则是在前一个任务的排程的灰色线条之后,用一条虚线连到后一个任务的排程的灰色长条之前。里程碑是项目执行过程中,一项重要阶段的完成,它在甘特图中用表示。而设置一个任务为里程碑是在输入任务是的界面中勾选(见图3-3-7)。使用甘特图管理项目:在一个项目规划好后,系统会自动帮这个项目绘制好甘特图。项目负责人可以查看在同一时间里,是否有过多任务在执行,进而在适当调整。报告报告主要透过系统所设定的功能,产生同目的报告,使得项目负责人得以了解项目相关的信息。查看报告功能的方法:方法一:项目(选择一个)项目名称报表(见图3-4-4、图3-4-5和图3-4-6)方法二
20、:任务报告(见图3-4-7和图3-4-6) 在本系统中提供了十一个报表的功能,但其中有一部分功能未明,点选后未出现任何画面。十一个报表及其说明:报 表说 明allocateduserhours.php解项目每位成员每日被分派到的工作时间,以及生产的状况。completed.php功能未明overall.php解项目任务的完成时数overdue.php解项目所延迟的任务stats.php将项目执的状况,转成化数据显示,可以解每个成员完成任务的况,是准时延迟尚未开始taskenddate.php解项目已完成任务的详细状况,可知最后完成时间tasklist.php可出项目的所有任务,但是可以运用往前
21、或往后查询的功能,解在某期间内项目的状况tasklogs.php解项目中延迟的任务tasksperuser.php解项目所有任务的开始与结束日期upcoming.php功能未明uerperformance.php解成员工作的效 在报表功能上,有些重复的情况,可以自身习惯的功能作为查询与控制的工具。人员任务冲突查询(低版本没有) 显示个别项目成员,在公司内部所负担的任务为哪些,并可分别依同条件检视,快速掌握所欲查询的资。进而调整任务的负责比重。条件选项如图3-4-8中红线框住部分所示。图3 4 8 在系统任务界面,点选每用户的任务,就可进入上图所示页面,即可依检视条件,进一步以符合需求的方式呈现
22、用户负担任务的状况。 在图3-4-8页面中,可以看到每个人所负担的任务,若任务是由两个或两个以上的人所负责的,也会一起在当前任务认领者栏中显示。 若发现有“孤儿任务(即没有人负责的任务)”的情况,可通过可能分配给那一栏,将其分配给任务人。方法是:勾选任务,在当前任务认领者中选择欲分配给的人,在选择比重,选择优先级,然后点即可。 选择宣示分配的时数/周(图3-4-9),可查看是否有人的任务过重。若有人的任务过重,可通过当前任务认领者那一栏的功能,调整他的工作任务。方法:勾选欲重新分配的任务,选择人,选择比重,点(将当前任务分配给选定用户;从任务中去除; 将用户从任务中去除并移交给选定用户)第四章
23、 项目执行与控制 当项目计划配置弄好后,就进入项目的执行与控制阶段。此部分是项目管理的核心,是最复杂,不确定性最高的一部分。一般来说,项目的执行主要是按规划来逐步完成,但在实际过程中难免出现误差,因此需要控制的功能来实时修正偏差。执行与控制功能介绍:项 目功 能 简 介任务针对任务进中做细部的纪录与控制文件交项目进中所需相关文件的档案分享讨论区提供项目成员讨论项目事务日历纪录项目任务的事历,亦可做为私人事历智能搜索快速搜索想要查看的内容备份下载备份Risks有风险的任务4- 1 任务主要功能:任务日志;任务控制功能任务日志在项目进行过程中,为了详细记录项目项目进行的流程,必须做好项目内各项任务
24、的记录,才可能了解项目进行的进度及进行过程中出现的问题,以及时做出修正。此部分的功能有:新增任务日志问题日志纪录总览日志纪录建立任务日志的方法有两种方法一:任务 (点选一个)项目名称 子任务 日志 填入信息更新任务(见图4-1-1、图4-1-2、图4-1-3和图4-1-4)方法二:任务 日志 子任务 日志 填入信息 更新任务(见图4-1-5 注意:在图4-1-4中概述的空白部分是用来写下任务进行过程中的重点与记录。在图4-1-4所示页面中可以依照目前项目进的进,做一个详细的纪录,同时还可以将最新的进通过邮件寄给被分派的任务者、任务联系人、以及项目联系人等等。问题日志记录和总览日志记录 当任务出
25、现小问题或需要注明的情况时,就在图4-1-4所示页面中勾选问题栏,则该笔日志的底色就会是红色的。若想查看某任务的所有日志,只需按下任务日志,就可看到该任务的所有相关日志记录。任务控制功能此部分功能有:搜索 任务过滤器 不同属性的任务 没用户的任务搜索:提供查询任务的功能,有三种方式:直接输入;选取用户;选取公司任务过滤器:提供快速搜寻项目任务的功能,使用户必点选个别任务,即可达到总览任务的功用,适时调整任务的安排。其内建的功能下所示 不同属性的任务:有我要做的/我钉住的项目/显示停止的任务没用户的任务:参见3-4节其他辅助功能中的人员任务冲突查询4- 2 文件在项目进的过程中,跨部门的一个合作
26、里,往往需要交同的档案与文件,于是在这样一个项目管的软件里档案分享的功能便相当的重要 。接下来,将介绍在本系统中文件交换的这项功能。建立文件的方法:文件新建文件填入信息提交(图4-2-1和图4-2-2) 如图在在系统中打开文件,按下新建文件,即进入图4-2-2所示页面,项目参与人员在接口上选出自己负责的项目以及任务,并且填入对该文件的叙述并上传文件后 ,按下确认即可新增一个新的文件档在系统里。 当项目人员想要寻找自己项目的文件时,只需在过滤器上选择自己的项目,即可迅速找出所需的文件。4- 3 讨论区 在本系统的讨论区中,项目管理人可依不同的项目开设多个讨论区,在每个讨论区中又可建立多个不同的话
27、题。通过这项功能管是公司员工或是外部合作者或客户皆可加入讨论并解项目进的状况。 讨论区的界面如图4-3-1所示,讨论区的功能有:新建/删除讨论组 新建/删除讨论话题 订阅讨论区,讨论话题 醒目功能新建/删除讨论组方法:讨论区 新建讨论组 填入信息 提交打开系统中的讨论区(如图4-3-1),然后点选新建讨论组按钮,进入新建讨论组页面(如图4-3-2),在此页面中填入详细信息,按下提交,就可建立一新的讨论区。若讨论区已不需要,点击删除讨论组,就可删除。新建/删除讨论话题新建方法:讨论区 (点选任一个)话题 开始一个新话题填入详细信息 提交 进入讨论去后,可开始一个新的话题,或对原有话题回帖。订阅讨
28、论区,讨论话题订阅方法:进入某讨论区或讨论话题(图4-3-1和图4-3-4) 勾选欲订阅的主题 更新监视项目参与者也可以用更新监视的功能来选取需要的项目讨论区,此项主要益处在于是讨论区过多时,项目参与者可以通过过滤器中我订阅的的选项来快速找出自己所参与讨论的讨论区。单单只是公司内部的人员,其它相关合作的厂商与客户亦可透过此项功能来与公司的人员做合作上的讨论与沟通。 醒目功能 它是未读文章提醒,当项目人员进去讨论区时,发现在所属讨论区灯泡出现,则标示该项目人员在该讨论区有未读文章,这样就可以随时掌握讨论区是否有最新讨论。4- 4 日历本系统的日历,主要给项目人员提供行事历的功能,使用者通过这个行
29、事历来记录每天所要做的事情,以及提醒使用者在该月或该周应当去完成的事情,还可以提供使用者做行程规划。 查看日历 进入日历界面(图4-4-1),展现在面前的是当月的月历,若想查看某天的事情,按下那天的日期,出来的是如图4-4-2所示的页面,还可以通过事件过滤器来查询我的事件/我建立的事件/所有事件新建事件 若想增加日历上的行程记录,打开图4-4-2中的新建事件,进入图4-4-3所示页面,填入信息,点击提交即可。系统提供的事件类型有约会、会议、一般、今天所有事情、年度、提醒单,勾选私人记录还可保护使用者的隐私权。此外,还可以邀请其他人参与,通过来增加或删除邀请参与人,对于提醒他人开会来说,是项很好
30、的功能。4- 5 智能搜索 搜索页面如图4-5-1所示智能搜索的功能:按字节搜索 按组件搜索 高级搜索按字节搜索 在搜索页勾选All words,然后在搜索栏中输入想要搜索的字节(图4-5-2)按组件搜索如图4-5-3,可以勾选想要查看的组件,然后在搜索栏中输入想要查看的事件。高级搜索个人觉得这个智能搜索比较麻烦,建议除非在迫不得已的情况下,不然不要使用智能搜索!4- 6 备份备份的功能是可以下载系统里面连接好的文件。如图4-6-1,可供选择的有表结构和数据、表结构、数据。文件的保存形式有压缩文件、纯文本文件和可扩展文件。选择好那些后,点就可下载文件。4- 7 RisksRisks是记录项目进
31、行过程中延误的项目如图4-7-1点选一个项目名称,进入图4-7-2所示界面,此页面中有详细信息和风险日志。增加风险日志的方法是点击,出现图4-7-3所示界面,在空白地方输入日志,点击Add note。删除风险的方法是在图4-7-2所示页面点delete risk。附录资料:从 XML 生成可与 Ajax 共同使用的 JSON时下,非常流行使用 JavaScript 代码为数据驱动的 Web 应用程序添加互动性。若能将数据编码成 JavaScript Object Notation(JSON)的格式,您就可以更轻松地通过 JavaScript 语言使用它。通过本文,发掘使用 XSLT V2 从
32、XML 数据生成 JSON 的几种不同方法。几年前,许多开发人员很看好 XML、XSLT、Extensible HTML (XHTML)和其他一些基于标记的语言。现在,Asynchronous JavaScript and XML(AJAX)成了新的热点,人们又将目光转向了使用 JavaScript 代码的数据驱动的富 Internet 应用程序。但是开发人员是否已经消除了 XML 和这一新技术之间的鸿沟呢?当然,您可以在 Web 客户机中使用 XML 解析器来读取数据,但这种做法会带来两个问题。第一,出于安全方面的原因,XML 数据只能从与此页面相同的那个域中读取。这虽然不是什么大的限制因素
33、,但它的确会引起部署方面的问题,还会阻碍 DHTML 小部件的创建。第二,读取和解析 XML 会非常慢。另一种做法是让服务器执行 XML 的解析工作,方法是设置服务器,使之向浏览器发送以 JavaScript 代码或时下流行的 JavaScript Object Notation(JSON)编码的数据。本文将展示如下三种使用 XSLT V2 语言和 Saxon XSLT V2 处理器从 XML 数据生成 JSON 的技巧: l 简单编码 l 通过函数调用加载数据 l 编码对象 JSON 简介要学习如何将数据编码成 JSON(它只是 JavaScript 的一个子集),最好的方法是从数据开始。清
34、单 1 显示了书籍列表的一个示例 XML 数据集。清单 1. 基本的图形化图书馆 Code Generation in Action JackHerrington Manning PHP Hacks JackHerrington OReilly Podcasting Hacks JackHerrington OReilly 这个数据集很简单,只包含三本书,每本书都具有惟一的 ID、书名、作者姓名及出版商的名字。(没错,我只选择了我自己的书作为数据集,但能怨我吗?这些书实在是不可多得的节日和生日礼物。)清单 2 显示了这些数据在 JSON 中的效果。清单 2. JSON 中的示例数据集 id:
35、1, title: Code Generation in Action, first: Jack, last: Herrington, publisher: Manning , . 方括号 () 表明这是一个数组。大括号 () 则表明这是一个散列表,该散列表由一组名称和值对组成。在本例中,我创建了一个散列表的数组 用来存储这类结构式数据的一种常见方法。另外一点值得注意的是字符串是通过单引号或双引号被编码的。所以,如果我想用单引号编码 OReilly,我就必须使用反斜杠对它进行转义:OReilly。 这让我编写的这个 XSLT 样式表更为有趣了一些。我并未在本例中放上任何日期,但您也可以通过如下
36、两种方法来编码日期。第一种方法是将日期作为字符串,该字符串必须在后面被解析。第二种方法是将日期作为一个对象,比如:publishdate: new Date( 2006, 6, 16, 17, 45, 0 )这段代码将 publishdate 的值设置为6/16/2006 5:45:00 p.m.。简单编码接下来我将陆续介绍 JSON 编码的几种技巧。第一种也是其中最简单的一种,此样式表如 清单 3 所示。清单 3. simple.xsl 样式表 var g_books = 1, id: ,name: ,first: ,last: ,publisher: ;要理解此样式表,不妨先来看一下 清单
37、 4 所示的输出。清单 4. simple.xsl 的输出var g_books = id: 1,name: Code Generation in Action,first: Jack,last: Herrington,publisher: Manning, id: 2,name: PHP Hacks,first: Jack,last: Herrington,publisher: OReilly, id: 3,name: Podcasting Hacks,first: Jack,last: Herrington,publisher: OReilly;这里,我将名为 g_books 的变量设置为
38、一个包含三个散列表的数组,每个散列表包含关于该书的信息。再回过头来看看 清单 3,您会发现第一个模板匹配 / 路径,它也是首先应用到输入数据集的模板,该模板使用 for-each 循环来遍历每本书。之后,它使用 标记来将文本从该数据输出到 JavaScript 输出代码。对于字符串,我使用名为 js:escape() 的定制函数,它在模板之前定义。该函数使用一个正则表达式将一个单引号标记更改为带有反斜杠的单引号标记。最后一个重要的元素是 标记,它告知处理器要输出的是文本而不是 XML。要检验此过程是否可以正常工作,我加入了一个 simple .html 文件,该文件引用我在 simple.js
39、 保存的 XSL 样式表的输出。这个 HTML 文件如 清单 5 所示。清单 5. simple.html 文件Simple JS loaderdocument.write( Found +g_books.length+ books );.html 文件使用 标记简单地加载已编码了的 JavaScript 代码。之后,第二个 标记将数组的长度写出到浏览器页面,如 图 1 所示。图 1. simple.html 的输出好了!数据文件包含三本书,相应的 JavaScript 文件也包含三本书。它真的可以工作!通过函数加载上述第一个示例很简单,而且在大多数情况下可以发挥其作用,但它存在一些问题。第一个问题是对于数据何时被加载没有任何提示。如果数据是像页面那样被静态加载的,这不成问题。但是如果页面动态创建了一个 标记来按需加载数据,那么就很有必要知道 标记是何时完成的。实现此功能的最好的方法是让编码了的数据调用一个 JavaScript 函数,而不是只设置数据。这个概念很重要,所以我将花一些时间来介绍一下为什么您必须要通过动态生成的 标记来加载数据。页面加载后,从服务器获得数据是 Web 2.0 的核心功能。一种方法是使用 AJAX 机