使用XSLT转换XML数据并传递参数

1.首先要做xsd文档中定义一个全局变量 使用<xsl:param />标签进行声明

2.C#代码中使用XslCompiledTransform中的AddParam方法添加参数,

   XslCompiledTransform 类的Transform方法中传递XslCompiledTransform对象

 

XML:

      

View Code
<?xml version='1.0'?>
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>

XSL:

View Code
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<!--设置参数-->
<xsl:param name="discount" select=".10"/>
<xsl:template match="bookstore">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>ISBN</TD>
<TD>Title</TD>
<TD>Price</TD>
<TD>Calculated Discount</TD>
</TR>
<xsl:apply-templates select="book"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="book">
<TR>
<TD>
<xsl:value-of select="@ISBN"/>
</TD>
<TD>
<xsl:value-of select="title"/>
</TD>
<TD>
<xsl:value-of select="price"/>
</TD>
<TD>
<xsl:value-of select="price * ($discount)"/>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>

C# 代码:

  

View Code
        string xmlpath = Request.PhysicalApplicationPath +
@"\App_Data\Books.xml";
string xslpath = Request.PhysicalApplicationPath +
@"\App_Data\Books.xsl";
XPathDocument xpathDoc = new XPathDocument(xmlpath);
XslCompiledTransform transform = new XslCompiledTransform();
XsltArgumentList argsList = new XsltArgumentList();
argsList.AddParam("discount","",".15");
transform.Load(xslpath);
transform.Transform(xpathDoc,argsList, Response.Output);

 

源代码

 

转载于:https://www.cnblogs.com/WilliamJiang/archive/2012/03/03/2378543.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Go 语言中的 `github.com/lestrrat-go/libxml2/xslt` 包来实现 XSL 转换。这个包是 `libxml2` 库的 Go 语言绑定,可以用来解析和转换 XML 文件。 以下是一个简单的示例,演示如何使用 `xslt` 包将一个 XML 文件转换为 HTML 格式: ```go package main import ( "fmt" "os" xslt "github.com/lestrrat-go/libxml2/xslt" ) func main() { // 打开 XSL 文件 xslFile, err := os.Open("style.xsl") if err != nil { panic(err) } defer xslFile.Close() // 打开 XML 文件 xmlFile, err := os.Open("input.xml") if err != nil { panic(err) } defer xmlFile.Close() // 创建 XSLT 转换xsltProcessor, err := xslt.ParseStylesheet(xslFile) if err != nil { panic(err) } defer xsltProcessor.Free() // 创建 XML 文档对象 xmlDoc, err := xslt.ParseXMLReader(xmlFile) if err != nil { panic(err) } defer xmlDoc.Free() // 执行转换 htmlDoc, err := xsltProcessor.Apply(xmlDoc) if err != nil { panic(err) } defer htmlDoc.Free() // 输出转换后的 HTML fmt.Println(htmlDoc.String()) } ``` 其中,`style.xsl` 是 XSL 文件,`input.xml` 是待转换XML 文件。在代码中,我们首先打开这两个文件,然后分别使用 `xslt.ParseStylesheet` 和 `xslt.ParseXMLReader` 函数创建 XSLT 转换器和 XML 文档对象。接着,我们将 XML 文档对象传递给 XSLT 转换器的 `Apply` 方法,执行转换操作。最后,我们可以通过调用 `htmlDoc.String()` 方法来获取转换后的 HTML 字符串,并输出它。 请注意,本示例仅用于演示基本的 XSL 转换流程。在实际应用中,您可能需要根据具体需求进行更复杂的 XSLT 转换操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值