最近一直在学XML,接触到了很多不知道的东东,从XML--->XML schema--->XPath--->XSLT都是非常经典的东西。XML作为一种标准确实有他可取之处。XML schema(XML模式)代替 DTD 定义 XML 文档结构。XPath 是元素的相对位置及路径。XSLT是一种用来转换XML文档结构的语言。
我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:
(1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。
(2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。
为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。这就是我们为什么要学XSTL的原因。
我觉得XSTL不仅仅只包含样式定义,它应该有以下三点:
(1)、一份xml文档
(2)、定义xml样式的schema
(3)、最后就是样式xstl了
结合前面的例子列出如下的例子,希望对各位有用:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--W3C Schema 由 XMLSpy v2006 U 创建 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="students">
<xs:complexType>
<xs:sequence>
<xs:element ref="student" maxOccurs="30"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<!-- 以下的元素是顺序出现的-->
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="agetype"/>
<xs:element name="sex" type="sextype"/>
<xs:element name="mobile" type="mobiletype"/>
</xs:sequence>
<xs:attribute name="no" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="agetype">
<xs:restriction base="xs:int">
<xs:maxInclusive value="150"/>
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sextype">
<xs:restriction base="xs:string">
<xs:enumeration value="男"/>
<xs:enumeration value="女"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mobiletype">
<xs:restriction base="xs:string">
<xs:pattern value="13[0,2,9]\d{8}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
2、xml文件
<?xml version="1.0" encoding="GB2312"?>
<!--xml样式引用-->
<?xml-stylesheet type="text/xsl" href="D:\测试项目\XML_Traning\student_table.xsl"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\测试项目\XML_Traning\student.xsd">
<student no="001">
<name>tony</name>
<age>15</age>
<sex>女</sex>
<mobile>13978561234</mobile>
</student>
<student no="002">
<name>tomin</name>
<age>20</age>
<sex>男</sex>
<mobile>13901234568</mobile>
</student>
</students>
3、xslt的定义 将上面的文档转换为HTML格式的表格形式
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title/>
</head>
<body>
<center>
<table border="1">
<xsl:apply-templates select="//student"/>
</table>
</center>
</body>
</html>
</xsl:template>
<xsl:template match="student">
<xsl:element name="tr">
<xsl:element name="td">
<xsl:value-of select="@no">
</xsl:value-of>
</xsl:element>
<xsl:element name="td">
<xsl:value-of select="name">
</xsl:value-of>
</xsl:element>
<xsl:element name="td">
<xsl:value-of select="age">
</xsl:value-of>
</xsl:element>
<xsl:element name="td">
<xsl:value-of select="sex">
</xsl:value-of>
</xsl:element>
<xsl:element name="td">
<xsl:value-of select="mobile">
</xsl:value-of>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
这样就会显示HTML表格了,可以进行预览。(开发工具 Altova XML Spy 2006 破解版)
附加:在xslt里面也有foreach,if等语句。一下是一个很简单的例题:
<?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="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>the way of for-each using</title>
</head>
<body>
<center>
<table border="1">
<xsl:for-each select="students/student">
<xsl:sort order="ascending" select="age"/>
<tr>
<td>
<xsl:if test="age>=20">
<font color="green">
<xsl:value-of select="name"/>
</font></xsl:if>
<xsl:if test="age <20">
<font color="red">
<xsl:value-of select="name"/>
</font>
</xsl:if>
</td>
<td>
<xsl:value-of select="age"/>
</td>
</tr>
</xsl:for-each>
</table>
</center>
</body>
</html>
</xsl:template>
</xsl:stylesheet>