ESB最常见的用途是将传入或者传出的消息从一种格式转换到另一种格式,在ESB中我们利用xslt文件实现。
1.什么是XSLT?
首先提到XSLT不得不提到XSL,XSL指扩展样式表语言(EXtensible Stylesheet Language).
在计算机科学中,XSLT是扩展样式表转换语言(ExtensibleStylesheetLanguage Transformations)的简称,这是一种对XML文档进行转化的语言,XSLT中的T代表英语中的“转换”(transformation)。它是XSL(Extensible stylesheet language)规范的一部分。
我们可以这样理解XSL
CSS = HTML 样式表
HTML 使用预先定义的标签,标签的意义很容易被理解。
HTML 元素中的<table> 元素定义表格- 并且浏览器清楚如何显示它。
向HTML 元素添加样式是很容易的。通过CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。
XSL = XML 样式表
XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解。<table> 元素意味着一个HTML 表格,一件家具,或是别的什么东西- 浏览器不清楚如何显示它。
XSL 可描述如何来显示XML 文档!
XSL - 不仅仅是样式表语言
XSL 包括三部分:
1.XSLT一种用于转换 XML文档的语言。
2.XPath一种用于在 XML文档中导航的语言。
3.XSL-FO一种用于格式化XML 文档的语言。
在ESB中我们用的最多的是XSLT和Xpath。
但是XSLT是XSL中最重要的部分。
正确的样式表声明
根据W3C 的XSLT 标准,声明XSL 样式表的正确方法是:
如需访问XSLT 的元素、属性以及特性,我们必须在文档顶端声明XSLT 命名空间。
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"指向了官方的 W3CXSLT 命名空间。如果您使用此命名空间,就必须包含属性 version="1.0"。
下面我们就举一个实例说明xslt是怎样起作用的。
1.我们先创建一个XSL样式表,note.xsl
note.xsl代码如下:
<?xml version="1.0"encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0“
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Note List</h2>
<table border="1">
<trbgcolor="#9acd32">
<thalign="left">TO</th>
<thalign="left">FROM</th>
<thalign="left">MESSAGE</th>
</tr>
<xsl:for-each select=“noteList/note">
<tr>
<td><xsl:value-of select=“to"/></td>
<td><xsl:value-of select=“from"/></td>
<td><xsl:value-of select=“body"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Note.xml代码如下
<?xmlversion="1.0"?>
<noteList>
<note>
<to>123</to>
<from>123</from>
<heading>Reminder</heading>
<body>Don‘tforget the 红烧 Meat!</body>
</note>
<note>
<to>123</to>
<from>嫂子</from>
<heading>Reminder</heading>
<body>Don‘tforget 换尿布!</body>
</note>
<note>
<to>123</to>
<from>淘宝彩票</from>
<heading>Reminder</heading>
<body>亲,你中大奖了!</body>
</note>
<note>
<to>123</to>
<from>淘宝彩票</from>
<heading>Reminder</heading>
<body>亲,你中大奖了!</body>
</note>
<note>
<to>123</to>
<from>淘宝彩票</from>
<heading>Reminder</heading>
<body>亲,你中大奖了!</body>
</note>
</noteList>
下面我们把 xsl 连接到 xml 文件
<?xml version="1.0"?>
<?xml-stylesheet type=“text/xsl”href=“note.xsl"?>
<noteList>
<note>
<to>123</to>
<from>123</from>
<heading>Reminder</heading>
<body>Don‘tforget the 红烧 Meat!</body>
</note>
<note>
<to>123</to>
<from>嫂子</from>
<heading>Reminder</heading>
<body>Don‘tforget 换尿布!</body>
</note>
<note>
<to>123</to>
<from>淘宝彩票</from>
<heading>Reminder</heading>
<body>亲,你中大奖了!</body>
</note>
<note>
<to>123</to>
<from>淘宝彩票</from>
<heading>Reminder</heading>
<body>亲,你中大奖了!</body>
</note>
<note>
<to>123</to>
<from>淘宝彩票</from>
<heading>Reminder</heading>
<body>亲,你中大奖了!</body>
</note>
</noteList>
用浏览器打开note.xml可以看到图2.2所示
到这里有同学该问了,你这是xsl文件,怎么没有xslt文件呢?
其实在使用中后缀名互相改的,.xslt可以改成 .xsl,但是二者在处理xml文档时的顺序略有区别。用兴趣的同学可以研究一下