asp.net xsl 代码块,能用吗
Posted
技术标签:
【中文标题】asp.net xsl 代码块,能用吗【英文标题】:asp.net xsl code blocks, will it work 【发布时间】:2017-08-17 23:43:29 【问题描述】:更新 请允许我解释一下我正在尝试做的事情。简单地说,我正在尝试使用 xsl 转换来动态生成图像。而已。暂时。
下面是我尝试生成的网页的图示:
这是我得到的 xsl 转换(注意:我还没有使用 xml 部分,我不知道这是否会导致问题):
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
namespace WebApplication1
public partial class _default : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
string transform = GetXsl();
string input = GetXml();
StringWriter sw = new StringWriter();
using (XmlReader xrt = XmlReader.Create(new StringReader(transform)))
using (XmlReader xri = XmlReader.Create(new StringReader(input)))
using (XmlWriter xwo = XmlWriter.Create(sw))
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xrt);
xslt.Transform(xri, xwo);
out11.Innerhtml = sw.ToString();
private string GetXml()
return
@"<?xml version='1.0' encoding='UTF-8'?>
<catalog>
<data id='1' option1='key1' option2='0' />
<data id='2' option1='' option2='1' />
</catalog>
";
private string GetXsl()
return
@"<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match='/'>
<img src='<%= Class1.ImageName(""arg1"") %>' alt='alt text' />
</xsl:template>
</xsl:stylesheet>
";
我在前面代码中遇到的问题是在 GetXsl 方法中(您可能需要向下滚动):
这是堆栈跟踪:
原帖
我可以在 xsl 中使用脚本块吗?
<xsl:template match="mytest">
Todo:
<h3>In progress...</h3>
'<%="hello-world" %>' CAN THIS WORK SOMEHOW
<span id="spnIcon" runat="server" class="fa-1x"></span>
</xsl:template>
【问题讨论】:
How to include javascript file in xslt的可能重复 【参考方案1】:你可以从 xsl 调用 C# 方法
这样你就可以将你想要的东西包装到一个 C# 方法中然后调用它
方法是:
-
声明一个命名空间
在带有命名空间的 xsl 中调用它
运行转换时 - 传入类
类似
定义命名空间
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
xmlns:ext="http://XsltSampleSite.XsltFunctions/1.0">
你的 C# 代码
public class MyXsltExtensionFunctions
public const string Namespace = "http://XsltSampleSite.XsltFunctions/1.0";
public string HelloWorld()
return "Hello World";
在 xls 中
<xsl:template match="mytest">
Todo:
<h3>In progress...</h3>
<xsl:value-of select="ext:HelloWorld()" />
<span id="spnIcon" runat="server" class="fa-1x"></span>
</xsl:template>
调用变换时
XsltArgumentList xal = new XsltArgumentList();
xal.AddExtensionObject(
MyXsltExtensionFunctions.Namespace,
new MyXsltExtensionFunctions());
如需更多详细示例,请查看https://www.intertech.com/Blog/calling-net-functions-from-an-xml-stylesheet/
【讨论】:
以上是关于asp.net xsl 代码块,能用吗的主要内容,如果未能解决你的问题,请参考以下文章
带有 jquery 代码的脚本块应该放在 ASP.NET MVC 母版页的啥位置?
asp.net c# javascript 控件集合无法修改,因为控件包含代码块(即<% ... %>)
如何使我的 ASP.NET 服务器控件将嵌入的代码块作为属性值?