您的位置: 旅游网 > 生活

XSLT 2.0应用实践

发布时间:2019-10-17 03:31:49

列表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>

列表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所发挥出的功能是值得您进行投资的。

责任编辑:德东

查看本文国际来源

常德治疗早泄费用
广安治疗卵巢炎方法
中卫白斑疯医院
六安什么医院治牛皮癣
南昌治疗阳痿方法
猜你会喜欢的
猜你会喜欢的