扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年4月30日
关键字:
列表A——XML文档
<?xml version="1.0" encoding="UTF-8"?>
<world>
<country name="
<city>
<city>
</country>
<country name="
<city>
<city>Ocho Rios</city>
</country>
<country name="
<city>
<city>
</country>
<country name="
<city>
<city>
</country>
<country name="
<city>
<city>Nice</city>
</country>
<country name="
<city>
<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>
列表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所发挥出的功能是值得您进行投资的。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者