Dot*_*ner 2 c# xml asp.net xslt
我的网站项目中有一个xml文件和一个xslt文件.当我运行该站点时,我需要从xslt调用ac#函数并更改xml文件中的值....以下是我的xml文件....我需要添加一个文本(比如"Mr.")in每个名字的前面都是通过ac#code ....添加之后,它应该反映在xml文件中....另外,作为下一步,我需要在xml文件中添加另一个节点(比如年龄)通过另一个c#函数....请注意,应该从我的xslt文件中调用c#函数....任何人都可以帮我一个简单的代码吗?
<?xml version="1.0" encoding="utf-8" ?>
<root>
<employee>
<firstname>Kaushal</firstname>
<lastname>Parik</lastname>
</employee>
<employee>
<firstname>Abhishek</firstname>
<lastname>Swarnkar</lastname>
</employee>
</root>
Run Code Online (Sandbox Code Playgroud)
是的,您可以从.xsl文件中调用C#函数.请参考以下代码.
这是您输入的XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<root>
<employee>
<firstname>Kaushal</firstname>
<lastname>Parik</lastname>
</employee>
<employee>
<firstname>Abhishek</firstname>
<lastname>Swarnkar</lastname>
</employee>
</root>
Run Code Online (Sandbox Code Playgroud)
C#类中的格式化函数如下所示:
public class MyXslExtension
{
public string FormatName(string name)
{
return "Mr. " + name;
}
}
Run Code Online (Sandbox Code Playgroud)
应用以下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:myUtils="pda:MyUtils">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="vQ">Mr. </xsl:variable>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="employee/firstname">
<xsl:element name="firstname">
<xsl:value-of select="myUtils:FormatName(.)" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
和C#Functin调用Formatting函数是这样的:
private void button3_Click(object sender, EventArgs e)
{
XsltArgumentList arguments = new XsltArgumentList();
arguments.AddExtensionObject("pda:MyUtils", new MyXslExtension());
using (StreamWriter writer = new StreamWriter("books1.xml"))
{
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("transform.xslt");
transform.Transform("books.xml", arguments, writer);
}
}
Run Code Online (Sandbox Code Playgroud)
而输出的是:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<root>
<employee>
<firstname>Mr. Kaushal</firstname>
<lastname>Parik</lastname>
</employee>
<employee>
<firstname>Mr. Abhishek</firstname>
<lastname>Swarnkar</lastname>
</employee>
</root>
Run Code Online (Sandbox Code Playgroud)
我已经提到这个链接来回答你的问题.
希望这会帮助你.
如果对你有用,请标记+1.
| 归档时间: |
|
| 查看次数: |
6223 次 |
| 最近记录: |