考试终于考好了,休息了一天然后继续以前未完成的struts框架学习。其实我知道怎么用config.xml。就是没搞懂为什么config.xml能够把MVC给联系起来,于是决定复习一下XML。
XML 可用于各种不同的应用程序,但其实质是:XML 是一种表示数据的方式。
1。文档定义类型和命名空间
1.1 XML的强大之处在于它可以自己定义标记,但是需要一个文档来定义标记的含义,这样解析器才能核查数据是否正确。这个文档定义类型被成为(Document Type Definition)DTD.
比方说一个XML文件
<peson name="john" sex="male"/>
里有个sex属性,那性别的话除了男就是女了,解析器本来是不知道sex是性别的意思,那属性值怎么填都不会错的。如果想让解析器知道sex值只能是男或女,那就要定义DTD
<!DOCTYPE 根元素 [
<!ELEMENT peson EMPTY>
<!ATTLIST peson
name CDDATA #REQUIRED
sex (MALE | FEMALE) #REQUIRED
>
]>
我其实并不喜欢DTD,DTD和XML怎么看都很不舒服。
1.2 命名空间 主要目的是为了避免(元素名相同,内容不同)。不过前面翻阅IBM资料库的时候一篇文章里写命名空间可能要被W3C取消掉了。
2。用CSS和XSL显示XML文档
2.1 由于XML主要是用来描述数据的,所以在显示数据方面没有HTML那么直接,想要达到HTML那样的效果,就需要CSS和XSL样式表。
写2个例子一看就明白了:
<?xml version="1.0" encoding="UTF-8"?>
<!--引用一个外部CSS样式表-->
<?xml:stylesheet type="text/css" href="test.css"?>
<!--引用一个xsl样式表-->
<?xml:stylesheet type="text/xsl" href="test.xsl"?>
<Resume>
<ID id="1">
<Name>John</Name>
<Sex>male</Sex>
<Age>22</Age>
<Skill>IT</Skill>
</ID>
<ID id="2">
<Name>Tom</Name>
<Sex>male</Sex>
<Age>25</Age>
<Skill>Worker</Skill>
</ID>
</Resume>
<!--test.css-->
Resume{display: block;}
id{display: block;}
Name{display: block; font-size:120%;}
Sex{display:red; text-indent:2em}
Skill{ display:red; text-indent:2em}
Age{ display:red; text-indent:2em}
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="Resume">
<html>
<head>
<title>简历</title>
</head>
<body>
<xsl:for-each select="ID">
<font color="red"><xsl:value-of select="Name"/></font><br></br>
<xsl:value-of select="Sex"/><br></br>
<xsl:value-of select="Age"/><br></br>
<xsl:value-of select="Skill"/><br></br>
<p></p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSL语法还是比较简单的,可以说一看就明白。两者比较一下,还是XSL直观,灵活一点,不过还是不方便,这也是为什么HTML还如此鼎盛的原因。
2.2 简单介绍下XSL的语法
2.21 XSL中最重要的概念就是模板,它是由一个一个模板组成。
//定义模板
<xsl:template match="/">
....
<xsl:apply-templates select="Resume" />//调用该模板,有点象调用方法();
.....
</xsl:template>
//(方法定义)
<xsl:template match="Resume">
......
</xsl:template>
2.22 判断语法
循环语句
<xsl:for-each select="元素名称"></xsl:for-each>
条件语句
<xsl:if test=""></xsl:if>
3。文档对象模型DOM和SAX
3.1 DOM把文档作为一个对象,通过编程的方式来查询或改变文档。
DOM是XML在内存中的树状结构,当XML文件被载人解析器中解析后,在内存中就建立了一颗相应的树。
3.2 什么是XML解析器?
解析就是读取文档并将文档分解为能够进行分析的元素的过程。XML解析器是WEB应用程序最基本勾践块。它是有2个基本API组成:DOM 和SAX。
3.3 DOM的优点在于可以进行随机重复访问;缺点就是由于DOM是将XML文档全部载入内存中,所以对内存消耗很大,不适合比较大的XML文档。
3.4 SAX是可扩展标记语言的简单应用程序编程接口。由于SAX解析时不创建显示数据结构,因此它比DOM的效率更好。
不过它的缺点就是只能读只前进。
DOM和SAX的例子以后会添加进来,所以这里就不写了。
将所学到的知道用一张表联系起来,情看:
学习笔记只是简单地叙述了下XML基本内容有哪些技术,至于想更深刻的理解XML。无它,多动手。