编程之道

无论是批评的,赞扬的,指着的都请EMAIL给我,你的建议将是我前进的动力! 联系我

XML回忆录-学不可以已

         考试终于考好了,休息了一天然后继续以前未完成的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。无它,多动手。

posted on 2005-08-22 20:33 疯流成性 阅读(468) 评论(0)  编辑  收藏 所属分类: XML


只有注册用户登录后才能发表评论。


网站导航: