XML

来源:互联网 发布:python 多线程 join 编辑:程序博客网 时间:2024/04/28 07:18

 XML
为什么要学习本模块
数据交换本质上是为了完成商业事务。完成数据交换的挑战在于在有相关商业兴趣的企业或企业内部的组织之间建立标准的接口。而这些企业或组织的数据往往是以完全不同的形式存储的。XML提供以文本形式储存数据的结构,这可以作为数据交换的标准形式或协议。作为一种对各种应用都很必要的强大数据交换形式,XML扮演了一个多面手。 本模块将介绍XML的特征和XML对于传统电子数据交换(EDI)的优点。学生还将学到各种与XML相关的规范,如文档类型定义,XML 模式,可扩展样式表语言转换(XSLT),Xpath,XML文档对象模型,XLink和Xpointer等。在该模块中,学生将学习建立正确而且形式良好的XML文档。然后学习使用级联样式表(CSS)和XSLT来格式化XML文档。然后,学生将学习通过JavaScript脚本使用XML文档对象模型访问XML文档的不同部分。另外,学生还将学习SQL Server 2000的新增功能,这些功能能将XML和SQL Server集成起来。最后,学生将学习可用于在XML文档中建立超链接的XLink 和XPointer 规范。
在结束本模块的学习以后,学生应该能够:
n 设计XML文档
n 使用DTD和XSD语言来定义XML文档的模式和有效性规则
n 编写转换XML文档中的数据的样式表程序
n 使用JavaScript 和DOM编写访问XML文档的程序
n 可以把XML文档和SQL Server 2000结合起来

什么是XML?
可扩展标记语言(Extensible Markup Language,XML)在Web上对数据进行结构化表示的一个方法。你可以使用XML建立自己的标记语言。HTML着眼于数据在Web上的表达。例如,当你使用HTML的<P>标签时,浏览器把它解释成一个段落并显示其中相应的文本。另一方面,XML没有任何预先定义的标签。XML着眼于标签之间的内容。例如,你可以建立自己的标签<CUSTOMER>来描述用户信息。XML是基于文本的格式,允许开发者在不同的应用程序之间描述、传递、交换数据。XML还于数据库和设备无关。它以结构化的文本形式储存数据,任何计算机系统都能容易的使用它。XML还支持UNICODE,该特点使得万维网更趋国际化。


XML会取代HTML吗?
回答是不。XML并不打算取代你学过的任何东西。XML是对HTML的补充。你可以用XML建立自己的标签然后用HTML标签格式化XML文档中的数据。你可以用级联样式表来定义XML文档标签中文本的字体颜色和位置。

XML的主要优点是什么?
XML简化数据交换。XML也减少不同应用之间交换数据的成本。它是不同的软件和硬件平台都能理解的纯文本形式。因此,你不需要任何特定的软件来读取XML数据。XML是灵活的和可扩展的,不象传统的EDI那样有严格的处理限制。XML让你很容易的引入新标签,这样你就可以根据商业需求建立结构化的文档。XML还提供对Unicode的支持。该特征让你可以建立提供多语言支持的应用程序。

什么是XML应用程序?
作为一种数据交换形式,XML在诸如电子商务,供应链管理及综合应用等这些电子化商业网络应用中很好的扮演了重要角色。XML的另一个应用是结构化信息管理,包括数据库的信息。XML还支持媒体独立的发布,允许只编写一次文档,而以多种媒体形式和设备发布。在客户端方面,XML可以根据用户需要建立定制的数据视图。以中间层为例,XML正快速成为在应用程序和各个组件之间进行数据交换的标准格式。例如,微软的.Net构架已经引入了用XML与客户应用程序通信的Web服务。Web服务是能用如超文本传输协议(Hypertext Transfer Protocol ,简记为HTTP)等Internet协议访问的一段代码。Web服务和组件一样,提供一些不需了解其内部执行过程就能访问的功能。但是,组件有一些局限性。它们使用对象模型具体的协议,如Internet Inter-ORB Protocol 、IIOP和Remote Method Invocations、RMI来进行通信。与此相反,Web服务使用标准的Internet协议如HTTP和标准的数据形式(如扩展标记语言(eXtensible Markup Language ,简记为XML))来实现Internet上的通信。

XML和Java技术的关系是什么?
Java是平台无关编程语言。XML是平台无关数据交换形式。Java提供简练的,易维护的代码来处理简练的,可重用的XML数据。另外,XML和Java有很多共同特征,包括都是行业标准、平台无关、可扩展、可重用、以Web为中心以及国际化;这些共同点使它们成为开发Web应用的理想搭档。

 

 

 

第一课
要求:
1. 清楚在一个XML文档中包括的内容.
2. 创建一个形式良好XML文档的规则.

在缺少文档的处理指令(PI)时,XML文档会产生正确的输出结果吗?
会的。PI是可选的。

没有浏览器可以显示XML文档的输出结果吗?
可以。可以建立一个用各种方式,如消息框,显示XML文档的输出结果的应用。你可以用XML文档对象模型(XML Document Object Model ,简记为DOM)来完成这个需求。

XML能被用于什么样的应用中?
XML在如电子商务和综合应用这样的电子化商业Web应用中扮演重要的角色。XML的另一个用途是管理结构化数据,包括数据库的信息。在客户端方面,可以使用XML建立定制的视图来显示数据。

为在XML 文档中插入&(&amp;)符号,你将使用以下选项中哪个?[ d ]
a. &amp;&amp;
b. &amp;lt;
c. &amp;ampersand;
d. &amp;amp;

关于XML 以下陈述中哪个为真? [ b ]
a. XML是基于文本的标记语言,提供存贮数据的预定义标签。
b. XML是一种平台中性的数据交换格式。
c. XML 的数据交换需要 VAN。
d. XML 允许你指出关于数据的格式化指令。

以下代码片段中哪个认为是格式良好的?[ c ]
a. &lt;EMPLOYEE empid=e001&gt;
&lt;EMPNAME&gt; Alice Peterson&lt;/EMPNAME&gt;
&lt;BASICPAY&gt; $2000 &lt;/BASICPAY&gt;
&lt;/EMPLOYEE&gt;
b. &lt;EMPLOYEE empid=“e001”&gt;
&lt;EMPNAME&gt; Alice Peterson&lt;BASICPAY&gt; $2000 &lt;/EMPNAME&gt;
&lt;/BASICPAY&gt;
&lt;/EMPLOYEE&gt;
c. &lt;EMPLOYEE empid=“e001”&gt;
&lt;EMPNAME&gt; Alice Peterson&lt;BASICPAY&gt; $2000 &lt;/BASICPAY&gt;&lt;/EMPNAME&gt;
&lt;/EMPLOYEE&gt;
d. &lt;EMPLOYEE empid=“e001”&gt;
&lt;EMPNAME&gt; Alice Peterson&lt;BASICPAY&gt; $2000 &lt;/BASICPAY&gt;&lt;/EMPNAME&gt;
&lt;/employee&gt;

关于属性的以下陈述中哪个为真? [ d ]
a. 用属性标记XML 文档中数据。
b. 属性是用来标识和描述存贮在XML 文档中数据的基本单位。
c. 属性是与数据块关联的名。
d. 属性提供了其声明的元素的信息。

第二课
要求:
1. 什么是DTD,做什么用的.
2. 什么是元素,属性,
3. 清楚元素的三种类型:empty,unrestricted ,container.
4. 掌握 <!ELEMENT> , <!ATTLIST> 语句的用法。
5. 什么是XSD 。
6. 了解XML 模式支持的数据类型。
7. 掌握在XSD中用 simpleType 元素来创建用户定义的简单类型。
8. 掌握在XSD中用 complexType元素来创建用户定义的复杂类型。
9. 掌握在XSD中用 restriction 元素来指定存储在元素和属性中的值的约束。

REQUIRED属性 与IMPLIED 属性有什么不同?
REQUIRED属性 与IMPLIED属性最主要的区别是: REQUIRED属性在每次使用元素时都必须指定,而IMPLIED属性是可选的

可以为一个枚举值的类型指定一个默认值吗?
可以。你可以为枚举值的类型指定一个默认值。考虑下面的例子:
<!ATTLIST PRODUCT CATEGORY (Toy | Book) “Book”>
在上面的例子中,为元素PRODUCT 建立了一个名为CATEGORY 的属性。该属性的合法的值是Toy 或Book 。该属性的默认值指定为Book 。

在定义DTD时,符号*和+之间有什么不同?
如果使用符号*,元素可以出现0次或多次。而使用符号+时,元素必须至少出现一次。

可以在DTD的任何位置指定元素<!ATTLIST>或必须在相应的元素声明以后指定它?
不需要。你可以在DTD的任何位置使用元素<!ATTLIST>。但是要保证你使用了正确的元素名。


可以给DTD中的元素指定多个ID类型的属性吗?
不可以。你不能在同一个元素上定义多个属性ID。

以下与XML 相关的规格说明中哪个允许你定义XML 文档结构? [ d ]
a. XLink
b. XPointer
c. XSLT
d. XML schemas

名为PRODUCT的元素,包含单个 NAME 元素和一个或多个COLOR 元素,需要在DTD中声明它。为声明PRODUCT元素,你将使用DTD中以下语句中哪个?. [ c ]
a. &lt;!ELEMENT PRODUCT&gt;
b. &lt;!ELEMENT PRODUCT (NAME, COLOR?)&gt;
c. &lt;!ELEMENT PRODUCT (NAME, COLOR+)&gt;
d. &lt;!ELEMENT PRODUCT (NAME, COLOR)&gt;

DTD中,元素声明的内容模型中的星号(*)符号做什么? [ b ]
a. 在所说明的序列中必须使用此元素。
b. 在相应的XML 文档中,可使用该元素零次或多次。
c. 必须至少使用该元素一次,且在相应的XML 文档中可多次出现该元素。
d. 该元素是可选的。如果使用,该元素只能在XML 文档的父元素内出现一次。

第三课
要求:
1. 掌握用 Attribute元素来声明XSD中的属性。
2. 掌握Attribute元素中的属性的使用。
3. 掌握怎样声明和使用全局属性。
4. 什么是名称空间,为什么要使用名称空间。怎样声明名称空间。
5. 了解和使用include 元素来从一个模式中引用另一个模式。

要在属性或元素的声明语句以后马上定义和它相关的自定义数据类型吗?
不需要。使用定义数据类型可以在XSD文件的任何位置定义。数据类型的名称属性用来识别数据类型。因此,不需要在属性或元素的声明语句以后马上定义自定义数据类型

作为命名空间前缀的名称要遵循什么规则吗?
不需要。你可以使用任何字母的组合作为命名空间的前缀。但是,对程序员而言,简短而有意义的名称空间前缀可以节省时间和工作。

在XSD文档中,一个属性被引用的次数有限制吗?
没有,在XSD文档中一个属性可以被引用多次。

 


当use属性 被置为required 时,属性元素的value属性可以为自定义的属性指定一列合法的值吗?
不可以。只有在use属性被置为默认或固定时, value属性才能出现在属性声明语句中。

Include元素和 import元素的区别。
Include元素用来引用一个模式,在该模式中的目标名称空间与包含文档的目标名称空间相同。
import元素用来引用一个模式,在该模式中的目标名称空间与包含文档的目标名称空间不相同。

考察以下陈述: [ a ]
陈述A:用“xsd:attribute” 元素的“ref”属性引用同一个或任何其他XML 模式中声明的用户定义的属性。
陈述 B:你可在属性声明语句中一起使用“name” 和 “ref” 属性。
评价上面陈述:
a. 陈述 A为真,陈述 B为假。
b. 陈述 A为假,陈述 B为真。.
c. 两个陈述都为真。
d. 两个陈述都为假。

考察以下陈述:[ a ]
陈述A:名字空间是防止有同样名的元素之间冲突的一种方法。
陈述 B:名字空间URI与Web URI一样。
评价上面陈述。
a. 陈述 A为真,陈述 B为假。
b. 陈述 A为假,陈述 B为真。
c. 两个陈述都为真。
d. 两个陈述都为假。

第四课
要求:
掌握 sequence , group , choice , all , AttributeGroup 元素在XSD中的应用。

Suzanne 要创建包含“FIRSTNAME” 和 “LASTNAME”元素的名为“name” 的复合类型。她要能以按任何次序使用的方式来组合元素。为声明此复合类型,她应使用以下语句中哪个? [ a ]
a. &lt;xsd:complexType name=&quot;name&quot;&gt;
&lt;xsd:all&gt;
&lt;xsd:element name=&quot;FIRSTNAME&quot; type=&quot;xsd:string&quot;/&gt;
&lt;xsd:element name=&quot;LASTNAME&quot; type=&quot;xsd:string&quot;/&gt;
&lt;/xsd:all&gt;
&lt;/xsd:complexType&gt;
b. &lt;xsd:complexType name=&quot;name&quot;&gt;
&lt;xsd:sequence&gt;
&lt;xsd:element name=&quot;FIRSTNAME&quot; type=&quot;xsd:string&quot;/&gt;
&lt;xsd:element name=&quot;LASTNAME&quot; type=&quot;xsd:string&quot;/&gt;
&lt;/xsd:sequence&gt;
&lt;/xsd:complexType&gt;
c. &lt;xsd:complexType name=&quot;name&quot;&gt;
&lt;xsd:all&gt;
&lt;xsd:element name=&quot;FIRSTNAME&quot; type=&quot;xsd:string&quot;&gt;
&lt;xsd:element name=&quot;LASTNAME&quot; type=&quot;xsd:string&quot;&gt;
&lt;/xsd:all&gt;
&lt;/xsd:complexType&gt;
d. &lt;xsd:complexType name=&quot;name&quot;&gt;
&lt;xsd:all&gt;
&lt;xsd:element name=&quot;FIRSTNAME&quot; type=&quot;xsd:string&quot;/&gt;
&lt;xsd:element name=&quot;LASTNAME&quot; type=&quot;xsd:string&quot;/&gt;
&lt;/xsd:all&gt;
&lt;/xsd:complexType&gt;


第五课
要求:
1. 什么是样式表,它的用途。CSS和XSL的比较。
2. CSS的创建。
3. 清楚和掌握在XSL中 template , apply-templates , sort , for-each , value-of 元素的使用。
4. 掌握模板规则,怎样创建和使用模板。

可以同时使用CSS和XSLT吗?
可以。你可以用XSLT把XML数据转换成一定的结构,如列表和表格,然后将CSS应用于该转换结果以便控制这些结构在适当媒介中的显示方式。

可以在什么地方使用xsl:sort 元素?
xsl:sort可以作为xsl:for-each元素或xsl:apply-templates元素的子元素

为什么使用xsl:apply-templates 元素?
在做基于模板的格式化时使用xsl:apply-templates 元素。xsl:apply-templates 元素告诉XSLT处理机找到相应的xsl:template 。

为在输出中产生不变的文本,可用以下XSLT 元素中哪个? [ c ]
a. value-of
b. template
c. text
d. apply-templates

考察以下陈述: [ c ]
陈述 A:XSLT 是CSS功能的超集。
陈述 B:XSLT是 XML的一种应用。.
评价上面陈述。.
a. 陈述 A为真,陈述 B为假。
b. 陈述 A为假,陈述 B为真。
c. 两个陈述都为真。
d. 两个陈述都为假。

 

你将使用以下语句中哪个集合来处理根节点的所有子节点? [ d ]
a. &lt;xsl:template match= “root”&gt;
&lt;xsl:apply-templates/&gt;
&lt;/xsl:template&gt;
b. &lt;xsl:template match= “*”&gt;
&lt;xsl:apply-templates/&gt;
&lt;/xsl:template&gt;
c. &lt;xsl:template match= “text()”&gt;
&lt;xsl:apply-templates/&gt;
&lt;/xsl:template&gt;
d. &lt;xsl:template match= “/”&gt;
&lt;xsl:apply-templates/&gt;
&lt;/xsl:template&gt;

关于职工的数据存贮在XML文档中。此数据以BASICPAY的递升次序和EMPLOYEECODE 的递降次序出现在浏览器窗口中。为排序职工数据,在XSLT式样单中应使用以下代码片段中哪个? [ d ]
a. &lt;xsl:sort select=“+BASICPAY, -EMPLOYEECODE”&gt;
b. &lt;xsl:sort select=“BASICPAY” datatype=“integer”&gt;
&lt;xsl:sort select=”EMPLOYEECODE” datatype= “string”&gt;
c. &lt;xsl:sort select=“BASICPAY” data-type=“number” order=“ascending”&gt;
&lt;xsl:sort select=“EMPLOYEECODE” data-type=“text” order=“descending”&gt;
d. &lt;xsl:sort select=“BASICPAY” data-type=“number” order=“ascending” /&gt;
&lt;xsl:sort select=“EMPLOYEECODE” data-type=“text” order=“descending” /&gt;

第六课
要求:
1, 在XSL中 if 和choose的使用。
2, 掌握Xpath的表达式,和常用函数的使用。

什么时候要使用* 操作符?
*操作符可用于选择所有元素而不管元素是什么名称。还可以用对两个数值做乘法。

下面的代码表示什么?
STUDENTDTLS/STUDENT[@ID='S001']
给出的代码是XPath表达式的一个例子,它用于检索根元素STUDENTDTLS的子元素STUDENT,而且该元素的ID属性值为S001。

boolean(-100)返回什么?
Boolean(-100)将返回true。

为什么在某些计算中我得到“NaN”?
NaN代表不是数值(Not a Number)。这个值通常在执行文本节点的计算或指定节点的路径不正确时出现。如果有这类错误,检查Xpath表达式。


第七课
要求:
1. 什么是DOM. 它的作用是什么?(用来访问和操纵XML文档).
2. 掌握树形结构,以及它的构成. (由节点构成).
3. 什么是节点?
4. 掌握用来操纵文档的DOM对象,以及各对象中的常用方法和属性:
DOMDocument: 是XML DOM的最高级对象.此对象提供了各种种属性和方法帮助你浏览,查询,修改XML文档的内容和结构.
IXMLDOMNode: 代表XML文档树形结构中的节点.该对象提供了操纵子元素的方法
IXMLDOMNodeList: 能让你遍历节点集.
IXMLDOMParseError: 返回大部分最近发生的错误信息.

你在JavaScript中声明了一个变量empxml。此变量存贮表示格式良好的XML 代码的串。你如何在DOMDocument 对象中加载包含格式良好的XML 代码的串? [ d ]
a. 通过使用load()方法。
b. 通过使用save()方法。
c. 通过使用appendChild()方法。
d. 通过使用loadXML()方法。

 

第八课
要求:
1. XMLSchemaCache: 此对象容纳模式文档集合.这些模式是XML文档必须遵循的特定规则.用于把XSD文档与XML文档相关联.
2. XSLTemplate: 用于包含编译好的XSL文档.
3. IXSLProcessor: 用于把样式表作用于给定的XML文档,它的对象是由XSLTemplate的对象调用 createProcessor()方法来创建的. 使用此对象的imput属性把IXSLProcessor对象与XML文档相关联. 它还提供transform()方法根据XSLT样式表提供的信息来转换XML文档.

Msxml2.FreeThreadedDOMDocument 代表什么?
Msxml2.FreeThreadedDOMDocument 用来建立一个自由线程对象。有两种线程模式,租用线程和自由线程。租用线程模式让所有的对象都再同一个线程上进行单线程存取。自由线程允许多线程存取。在这种模式中,对象可以在任何时候任何线程上执行。

什么是高速缓冲存储器?
高速缓冲存储器是计算机内存的一部分。它由高速静态随机存取存储器(Static Random Access Memory ,简记为SRAM)组成。访问存储在高速缓冲存储器里的信息比访问RAM其他部分的信息要快。

有转换一个单个节点的方法吗?
是的,有。可以使用XMLDOMNode对象的transformNode()方法来转换包含在一个节点和它的所有子节点中的信息。

你创建了两个名为xmlDoc 和 xslStyles的对象。你已把XML文档和XSLT式样单加载到这两个对象。 为在XML 文档中应用XSLT式样单,你将使用以下代码段中哪个?[ a ]
a. var xslt = new ActiveXObject(&quot;Msxml2.XSLTemplate.4.0&quot;);
xslt.stylesheet = xslStyles;
var xslProc = xslt.createProcessor();
xslProc.input = xmlDoc;
xslProc.transform();
b. var xslProc = xmlDoc.createProcessor();
xslProc.input =xslStyles;
xslProc.transform();
c. var xslt = new ActiveXObject(&quot;Msxml2.XSLTemplate.4.0&quot;);
xslt.stylesheet = xslStyles;
var xslProc = new IXSLProcessor();
xslProc.input = xmlDoc;
xslProc.transform();
d. var xslt = new ActiveXObject(&quot;Msxml2.XSLTemplate.4.0&quot;);
xslt.stylesheet = xslStyles;
var xslProc = new IXSLProcessor();
xslProc.transform();


第九课
要求:
1. 掌握用URL查询数据库.
2. 掌握XPATH查询来处理XML文档中的数据.
3. 了解使用系统存储过程 sp_xml_preparedocument和函数OPENXML,把XML数据插入SQL Server 2000的表中.

可以指定哪些字段映射成元素,哪些映射成属性吗?
可以。可以使用SQL查询的EXPLICIT模式或建立XDR 模式并映射每个你需要的字段。例如,如果你把PRODID映射成属性,其余的字段映射成元素。你可以在XDR 模式里建立相应的属性类型和元素类型。


考察以下陈述:[ b ]
陈述A: FOR XML子句的EXPLICIT方式返回嵌套XML元素的查询结果。.
陈述 B:如果你在FOR XML 子句中指出了EXPLICIT 方式,你必须保证所生成的XML 文档是格式良好的和有效的。
评价上面陈述。
a. 陈述 A为真,陈述 B为假。
b. 陈述 A为假,陈述 B为真。
c. 两个陈述都为真。
d. 两个陈述都为假。

职工的材料存贮在EMPLOYEE表中。你已创建了映射到EMPLOYEE 表的XDR 模式。此模式存贮在EMPLOYEES/Schema 文件夹下的名为emp.xml 的文件中。EMPLOYEES 文件夹被映射到包含职工数据的EMPDB数据库。该表的标志列(designation column)被映射到XDR 模式的同名的元素。识别可用于显示作为经理的职工材料的Xpath查询。[ b ]

a. http://localhost/prod.xml/EMPLOYEES/EMPLOYEE
[DESIGNATION=&quot;MANAGER&quot;]?root=root
b. http://localhost/EMPLOYEES/Schema/emp.xml/EMPLOYEE
[DESIGNATION=&quot;MANAGER&quot;]&amp;root=root
c. http://localhost/EMPLOYEES/Schema/emp.xml/
EMPLOYEE[@DESIGNATION=&quot;MANAGER&quot;]&amp;root=root
d. http://EMPLOYEES/Schema/ emp.xml/EMPLOYEES
[DESIGNATION=&quot;MANAGER&quot;]?root=root

原创粉丝点击