随着Internet的发展,越来越多的信息进入互联网,信息的交换、检索、保存及再利用等迫切的需求使HTML这种最常用的标记语言已越来越捉襟见肘。HTML将数据内容与表现融为一体,可修改性、数据可检索性差,而XML借鉴了HTML与数据库、程序语言的优点,将内容与表现分开,不仅使检索更为方便,更主要的是用户之间数据的交换更加方便,可重用性更强。
XML是一种元标记语言,没有许多固定的标记,为WEB开发人员提供了更大的灵活性。当我们使用HTML时,标记只是简单的表示内容的显示形式,而与表示的内容没有任何关联,为文档的进一步处理带来极大的不便。比如要表示个人简历,用HTML的表示方式如下:
姓名禹希初性别男生日1977.5
技能数据库设计与维护、WEB开发
在这里,我们无法从标记TH、TD得知其内容表示什么,如果用XML,相应的文档(文件名:个人简历.xml)就可写成如下形式:
禹希初
男
1977.5
数据库设计与维护、WEB开发
说明:
versio..
[] []
在XSL中引用自身数据的两种方法,如果你使用MsXML解析器,你可以用方法二: 方法一<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" <a href="http://dev.21tx.com/web/xml/" target="_blank">XML</a>ns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mxh="http://xml.sz.luohuedu<a href="http://dev.21tx.com/dotnet/" target="_blank">.net</a>/">
<xsl:template match="/">
<mxh:Root>
<Line Val="1"/>
<Line Val="2"/>
<Line Val="3"/>
</mxh:Root>
<xsl:for-each select="document('')/xsl:stylesheet/xsl:template/mxh:Root/Line">
&l..
[] []
我们在使用XSLT进行XML转换的时候,经常遇到按XML日期类型的数据进行排序的情况,按照默认的排序规则,很难实现正确的排序效果。虽然最新的MsXML3 SP4提供了3种数据类型的排序方式: <xsl:sort
select = string-expression
data-type = { "text" | "number" | Qname }
order = { "ascending" | "descending" }
/> 但好像仍不能满足我们的需要,下面我们就介绍日期类型数据的排序方法。我们的排序方法是基于下面语句的返回值为true的理论的: <script language="JavaScript">
alert(Date.parse("2004/08/09")==Date.parse("2004/8/9"))
</script> 好了,下面就是我们的xsl文件: SortXML.xsl<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http:..
[] []
要在XSL中得到某节点到根节点的带全部路径的节点,可以对该节点的路径进行copy,包括所有节点类型。下面就是具体实现的例子。 GetFullPathNodes.XML<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="GetFullPathNodes.xsl"?>
<DATA>
<x1/>
<x2>
<x21>
<x211>x211</x211>
<x212>x212</x212>
<x213>孟子E章</x213>
</x21>
</x2>
<x3>
<x31/>
</x3>
</DATA> GetFullPathNodes.xsl<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="..
[] []
原著:Jan Egil Refsnes 翻译:阿捷
二.XSL的转换
1.将XML转换成HTMLXSL是如何将XML文档转换成HTML文件的呢?我们来看一个例子,下面是XML文档的一部分:
<?xml version=''1.0'' encoding=''ISO8859-1'' ?><CATALOG><CD><TITLE>Empire Burlesque</TITLE><ARTIST>Bob Dylan</ARTIST><COUNTRY>USA</COUNTRY><COMPANY>Columbia</COMPANY><PRICE>10.90</PRICE><YEAR>1985</YEAR></CD>...
然后我们将下面的XSL文件作为HTML的模板将XML数据转换为HTML文件:
<?xml version='1.0'?><xsl:stylesheet xmlns:xsl=''http://www.w3.org/TR/WD-xsl''><xsl:template match=''/''><html><body><table border=''2'' bgcolor=''yellow''><tr><th>Title</th><th>Artist</th></tr><xsl:fo..
[] []
原著:Jan Egil Refsnes 翻译:阿捷
七. XSL 的控制语句
1.条件语句if...thenXSL同样还有条件语句(呵呵~~好厉害吧,象程序语言一样)。具体的语法是增加一个xsl:if元素,类似这样<xsl:if match=''.[ARTIST='Bob Dylan']''>... some output ...</xsl:if>
上面的例子改写成为:<?xml version='1.0'?><xsl:stylesheet xmlns:xsl=''http://www.w3.org/TR/WD-xsl''><xsl:template match=''/''><html><body><table border=''2'' bgcolor=''yellow''><tr><th>Title</th><th>Artist</th></tr><xsl:for-each select=''CATALOG/CD''><xsl:if match=''.[ARTIST='Bob Dylan']''><tr><td><xsl:value-of select=''TITLE''/></td><td><xsl:value-of select=''ARTIST''/></td></tr></xsl:if></xsl:for-each&g..
[] []
1.XSLT的概念 1.1 什么是XSLT 1.2 为什么要用XSLT 1.3 XSLT的历史 1.4 什么是XPath 1.5 XSLT和CSS的比较 1.6 XSLT和IE5 1.XSLT的概念我们首先来澄清一个概念,大家可能听说过XSL(eXtensible Stylesheet Language),XSL和我们这里说的XSLT从狭义上理解是一样的,而按照W3C的标准,XSLT的说法更严格些,因此我们在文章中统一使用XSLT的称法。它们之间具体的关系我们会在下面讲述。 1.1 什么是XSLTXSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是: XSLT是一种用来转换XML文档结构的语言。 1.2 为什么要用XSLT我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根..
[] []
通过前面两章的介绍,我们已经对XSLT的基本概念和它的转换过程有了一些了解。下面我们一起来学习XSLT的具体语法。说到语法总是比较枯燥的,您可以大体上浏览一遍,等您真正需要使用XSLT的时候,再仔细研究它们。 3.XSLT的元素语法 3.1 xsl:template和xsl:apply-templates 3.2 xsl:value-of 3.3 xsl:for-each 3.4 xsl:if 3.5 Xxsl:choose, when, otherwise 3.6 xsl:sort
3.1 xsl:template和xsl:apply-templates
模板(template)是XSLT中最重要的概念之一。XSLT文件就是由一个一个的模板组成,任何一个XSLT文件至少包含一个模板。模板的概念就象是搭积木;你如果是程序员,也可以将模板看作一个方法,一个类,或者一个模块。它们可以被拼装组合,也可以单独成块,不同的模板控制不同的输出格式。模板(template)由两部分组成:匹配模式(match pattern)和执行。简单的讲模式定义XML源文档中哪一个节点将被模板处理,执行则定义输出的是什么格式。两部分对应..
[] []
经常用for-each来循环读取XML中的某个节点集,但常常需要加上序号这样来做:<xsl:template match=''Book''><xsl:for-each select=''Authors/Author''> <xsl:number value=''position()'' /> <xsl:value-of select=''Name'' /></xsl:for-each></xsl:template> 当然,如果你不满意,想在数字后面加上''.''可以这样: <xsl:number value=''position()'' format=''1.'' /> 甚至,你可以用用图片表示1\2\3等: <xsl:element name=''img''> <xsl:attribute name=''src''>images/n<xsl:number value=''position()'' format=''1'' />.gif</xsl:attribute> <xsl:attribute name=''border''>0</xsl:attribute> </xsl:element>注意:你在images文件夹下腰有类似这样的文件:n1.gif,n2.gif,n3.gif ... ... 假设我们XML如下:<Book> <ID>125353-8993..
[] []
XSLT命令[xml格式转换]1.循环 <xsl:for-each...><xsl:for-each select=''BookList/Item''><tr><th align=''left''> <xsl:value-of select=''.//title'' /></th><td><xsl:value-of select=''.//categroy'' /></td><td><xsl:value-of select=''.//release-date'' /></td><td><xsl:value-of select=''.//author'' /></td><td><xsl:value-of select=''@price'' /></td></tr></xsl:for-each>2.排序 <xsl:sort...>3.条件处理 <xsl:if...>或<xsl:choose...>或<xsl:when...>4.名称模板 <xsl:template name...<xsl:template name...>,<xsl:param...><xsl:with-param...>,<xsl:call-template...>5.编号方式 <xsl:number value format...>
xml文档[Article.xml] <?xml version..
[] []
这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址放到<a>的href属性中去,可是这就是在标签中套标签,是不可以的,查了《Web编程实做教程》,才知道正确的解决方案,现在与大家分享。
此段代码运行需要两张图片:a.gif和b.gif。
my.xml以下内容为程序代码:
<?xml version=''1.0'' encoding=''GB2312''?><?xml-stylesheet type=''text/xsl'' href=''mystyle.xsl''?><Books> <Book ID=''a001''> <Name>网络指南</Name> <Photo>a.gif</Photo> <Homepage>http://www.a.com</Homepage> </Book> <Book ID=''a002''> <Name>局域网技术</Name> <Photo>b.gif</Photo> <Homepage>http://www.b.com</Homepage> </Book></Books>
mystyle.xsl以下内容为程..
[] []
XSL中用count()来取得xml中某种节点的个数list.xml<?xml version=''1.0''?><list> <application> <id>1</id> <state>1</state> <type>111</type> <title>title</title> <applior>applior</applior> <progress> <node> <state>pass</state> <censor>admin</censor> </node> <node> <state>failure</state> <censor>kk</censor> </node> <node> <state>detemind</state> <censor>dq</censor> </node> </progress> <applytime>2006-9-06</applytime> <deadline> <state>delay/ontime</state> <..
[] []
什么是XSLT?
XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:
XSLT是一种用来转换XML文档结构的语言。 为什么要用XSLT?
我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:
(1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。 (2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。
为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是..
[] []
XSLT 中 document() 函数的作用是用来访问扩展XML文档中的节点。 它的语法是 node-set document(object,node-set?)
参数 object (必须): 定义一个链接到XML文档的URI; 参数 node-set (可选):用于解释相对URI。
但在使用中却发现它在 IE 与 Firefox 上有不兼容的问题,object 参数在 IE 中是以 XML 文件为当前路径,但 Firefox 却是以该 XSLT 文件做为当前路径。
我的测试环境是:IE 6.0 (MSXML 3.0) 、Firefox 2.0、XSLT v2.0。
这里是测试的文件:http://www.cnblogs.com/Files/yyw84/yywcnblogs_xml_xslt_20061230201740.rar
把 books.xml 跟 index.xml 放在同一目录下,index.xml 可以正常显示,FF 下不行。把 books.xml 与 index.xslt 放同一目录在 FF 下可正常显示,IE 不行。
除了把 books.xml 存两份或者把 index.xml 、books.xml 和 index.xslt 放同一目录下,现在还想不出更好的解决方..
[] []
[] [] [] [] [] [] []
[] [] [] [] []
版权所有 2006-2008 保留所有权利 湘ICP备06008262号