查看: 7524|回复: 2
打印 上一主题 下一主题

XSLT 2.0应用实践

[复制链接]
跳转到指定楼层
1#
发表于 2007-10-11 14:37:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
现在, XSLT 2.0 已经不再只是一个理论上的标准了,有很多免费软件都可以帮助您发挥出 XSLT 2.0 的力量,借助这些软件您可以在软件开发中应用 XSLT 2.0 。这篇文章将向您介绍如何使用这些软件来应用 XSLT2.0 。

几周以前,我收到一位朋友的来信,提到了几年前我开发的软件,在这个软件中我使用了 XSL 样式表,我以前曾经写过文章讲解样式表的使用方法。现在,我的这位朋友将要利用 XSLT2.0 的新特色对样式表进行升级,这引起了我的兴趣。

令人惊讶的是,我以前并没有考虑过样式表本身,而是在考虑如何应用样式表。这是因为原来的软件是用 C# 写的,现在很多开发者都在等待微软发布最新版本的 MSXML 来支持最新的标准,因为纸面上的标准是没有任何价值的,除非有实际的工作实例作为参考。

如果您曾经为美国专利局工作过,那么按照这种思路进行思考:发布一种没有人知道怎么进行构建的产品专利有什么意义呢?实际上,除非您向风险投资 推销雾件或 标记技术领域的专利,空有想法只能做到这种程度了,那么下面让我们来看看如何在实际工作中使用 XSLT2.0 。

软件资源

现在有很多现成的工具可以选择,首先,您需要微软的 Visual C# Express 来编写 .NET 代码,但是微软并没有提供 XSLT 的处理器,因此我们需要从 Altova 获取 XSLT 的处理工具。 Altova 是 XMLSpy 以及很多 XML 相关产品的软件生产商。

且慢,先不用拿出您的支票本,我们所使用的来自 Altova 的软件是免费的—— AltovaXML 2007 ,该产品包含了 XML 检验工具、 XSLT1.0 处理器、 XSLT2.0 处理器和 XQuery 处理器。我们最感兴趣的部分是 XSLT2.0 的处理功能,而微软的 MSXML 中恰好没有提供 XSLT2.0 的支持。

关于微软 Visual C# Express 的安装可以参考以前的技术文章,这里就不再重复了,我们来介绍介绍 AltovaXML 2007 的安装,其实该过程也很简单,点击了安装文件并按照提示前进就可以了,图片 A 和 B 展示了您在安装过程中会看到的安装屏幕截图。

图片 A ——安装过程


图片 B ——安装过程的其他部分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
2#
 楼主| 发表于 2007-10-11 14:38:09 | 只看该作者
台州网址导航
在安装了 AltovaXML 2007 之后,使用 XSLT2.0 起来也很简单,只需要添加一个引用即可,如图片 C 所示。

图片 C ——添加一个引用


现在预备知识已经讲解完了,我们现在来创建一个 C# 程序,列表 A 是 XML 文档,列表 B 是 XSLT 文档,列表 C 是我们使用的 C# 程序代码。

列表 A —— XML 文档

<?xml version="1.0" encoding="UTF-8"?>

< world >

<country name="Canada" continent="North America">

< city> Toronto</city>

< city> Vancouver</city>

</country>

<country name="Jamaica" continent="North America">

< city> Kingston</city>

< city> Ocho Rios</city>

</country>

<country name="United States" continent="North America">

< city> Allentown</city>

< city> Mobile</city>

</country>

<country name="United Kingdom" continent="Europe">

< city> London</city>

< city> Dundee</city>

</country>

<country name="France" continent="Europe">

< city> Paris</city>

< city> Nice</city>

</country>

<country name="Japan" continent="Asia">

< city> Tokyo</city>

< city> Osaka</city>

</country>

</world>

列表 B —— XSLT2.0 样式表

<?xml version="1.0" encoding="UTF-8"?>

< xsl:stylesheet version="2.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:fo="

http://www.w3.org/1999/XSL/Format"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:fn="

http://www.w3.org/2005/xpath-functions"xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">

< xsl :template match="/">

< xsl :element name="world">

< xsl :for -each-group select="//country" group-by="@continent">

< xsl :sort select="@continent" data-type="text" order="ascending"/>

< xsl :variable name="continent" select="@continent"/>

< xsl :apply -templates select="//country[@continent = $continent]" mode="group">

< xsl :sort select="@name" data-type="text" order="ascending"/>

</ xsl :apply -templates>

</ xsl :for -each-group>

</ xsl :element >

</ xsl :template >

< xsl :template match="*" mode="group">

< xsl :copy -of select="."/>

</ xsl :template >

</ xsl :stylesheet >
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
3#
 楼主| 发表于 2007-10-11 14:39:21 | 只看该作者
台州网址导航
列表 C —— C# 程序

using System;

using System.Collections.Generic ;

using System.ComponentModel ;

using System.Data ;

using System.Drawing ;

using System.Text ;

using System.Windows.Forms ;

namespace WindowsApplication1

{

publicpartialclassForm1 : Form

{

public Form1()

{

InitializeComponent ( );

}

privatevoid Form1_Load(object sender, EventArgs e)

{

AltovaXMLLib.ApplicationClass objAltova = new AltovaXMLLib.ApplicationClass ( );

textBox1.Text = Application.StartupPath + " .. ..world2.xml";

textBox2.Text = Application.StartupPath + " .. ..grouping2.xsl";

objAltova.XSLT2.InputXMLFileName = textBox1.Text;

objAltova.XSLT2.XSLFileName = textBox2.Text;

textBox3.Text = objAltova.XSLT2.ExecuteAndGetResultAsString( );

}

}

}

示例

在以上的代码中,我突出强调了这篇文章的主题——使用 AltovaXML 2007 的 XSLT2.0 功能。表 A 展示了应用到 XSLT2.0 的方法,表 B 展示了适用的属性。

表 A ——方法

方法
说明

Execute
对当前 XML 文档应用 XSL 样式表,并将结果写入程序提供的文件。

AddExternalParameter
在 XSL 样式表上添加一个参数值。

ClearExternalParameterList
清除所有 XSL 样式表参数。

ExecuteAndGetResultAsString
对当前 XML 文档应用 XSL 样式表,并返回结果字符串。


表 B ——属性

方法
说明

InputXMLFileName
设定需要转换的 XML 文件名。

InputXMLFromText
从字符串获取 需要转换的 XML 文件名。

LastErrorMessage
最后的错误信息字符串。

XSLFileName
设定 XSLT 样式表的文件名。

XSLFromText
从字符串获取样式表的文件名。

XSLStackSize
样式表中允许的最大递归深度,默认是是 1000 ,最小值是 100.


结果

应用以上所有的技术,我们得到的结果看上去应当和图片 D 差不多。

图片 D ——结果


下一步如何开展

这个例子已经显示出 XSLT2.0 已经具备实际应用的价值了,尽管这个例子本身平淡无奇,但是通过免费资源,我们已经可以很好地利用 XSLT2.0 的强大功能了。

但是在真正的商业环境中,您可能需要购买一些相关的参考资料, Michael Kay 的 XSLT 2.0 Programmer's Reference ( XSLT2.0 程序员参考指南)是一个不错的选择;另外,您可能还要花些钱在 XMLSpy 的完整版本上,不过放心,在真正的应用软件上, XMLSpy 所发挥出的功能是值得您进行投资的。
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表