问题描述
我有一个XML文件,并在我的网站项目的XSLT文件。当我运行的网站,我需要从XSLT调用C#的功能和改变的XML文件中的值....下面给出的是我的xml文件....我需要添加一个文本(例如先生)的通过交流#code每个名字前面加....之后,它应该体现在xml文件中....另外,作为下一步,我需要添加另一个节点在XML文件(比如年龄)通过另一个C#功能....请注意,C#函数应该从我的XSLT文件被称为....谁能帮我用一个简单的code这个????
<?XML版本=1.0编码=UTF-8&GT?;
<根和GT;
<员工>
<&名字GT; Kaushal< /姓名>
<&姓氏GT; Parik< /姓氏>
< /员工>
<员工>
<&名字GT;&阿布舍克LT; /姓名>
<&姓氏GT; Swarnkar< /姓氏>
< /员工>
< /根>
是的,你可以调用从的.xsl文件C#的功能。请参考以下code。
这是您的输入XML文件:
<?XML版本=1.0编码=UTF-8&GT?;
<?xml样式表类型=文/ XSL的href =cdcatalog.xsl&GT?;
<根和GT;
<员工>
<&名字GT; Kaushal< /姓名>
<&姓氏GT; Parik< /姓氏>
< /员工>
<员工>
<&名字GT;&阿布舍克LT; /姓名>
<&姓氏GT; Swarnkar< /姓氏>
< /员工>
< /根>
在C#类格式化函数是这样的:
公共类MyXslExtension
{
公共字符串FORMATNAME(字符串名称)
{
返回先生+名称;
}
}
应用以下的xsl:
<?XML版本=1.0编码=UTF-8&GT?;
<的xsl:样式版本=1.0的xmlns:XSL =http://www.w3.org/1999/XSL/Transform
的xmlns:msxsl =瓮:架构 - 微软COM:XSLT排除-result- prefixes =msxsl
的xmlns:myUtils =掌上电脑:MyUtils>
< XSL:输出方法=XML缩进=YES/>
< XSL:变量名=VQ>先生。 < / XSL:变量>
<的xsl:模板匹配=@ * |节点()>
< XSL:复制>
< XSL:申请模板选择=@ * |节点()/>
< / XSL:复制>
< / XSL:模板>
<的xsl:模板匹配=员工/名字>
< XSL:元素名称=名字>
<的xsl:value-of的选择=myUtils:FORMATNAME()/>
< / XSL:组件>
< / XSL:模板>
< / XSL:样式>
和C#载体作用调用格式化函数是这样的:
私人无效button3_Click(对象发件人,EventArgs的发送)
{
争论的XsltArgumentList =新的XsltArgumentList();
arguments.AddExtensionObject(PDA:MyUtils,新MyXslExtension()); 使用(StreamWriter的作家=新的StreamWriter(books1.xml))
{
XslCompiledTransform变换=新XslCompiledTransform();
transform.Load(transform.xslt);
transform.Transform(books.xml中,争论,作家);
}
}
而放出来的是:
<?XML版本=1.0编码=UTF-8&GT?;
<?xml样式表类型=文/ XSL的href =cdcatalog.xsl&GT?;
<根和GT;
<员工>
<&名字GT;先生。 Kaushal< /姓名>
<&姓氏GT; Parik< /姓氏>
< /员工>
<员工>
<&名字GT;先生。阿布舍克< /姓名>
<&姓氏GT; Swarnkar< /姓氏>
< /员工>
< /根>
我已经提到回答你题。
希望这会帮助你。结果
请注明+1,如果它是对你有用....
I have a xml file and an xslt file in my website project. When I run the site, I need to call a c# function from xslt and alter the values in xml file.... Given below is my xml file.... I need to add a text (say "Mr.") in front of every firstname through a c# code.... After adding, it should reflect in the xml file.... Also, as a next step, I need to add another node in the xml file (say age) through another c# function.... Please note that the c# function should be called from my xslt file.... Can anyone help me with a simple code for this????
<?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>
Yes, you can call C# function from .xsl file. Please refer following code.
This is your input XML File:
<?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>
Formatting function in a C# class is like this:
public class MyXslExtension
{
public string FormatName(string name)
{
return "Mr. " + name;
}
}
Apply following 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>
And C# Functin to call Formatting function is like this:
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);
}
}
And the out put is:
<?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>
I have referred this link to answer your question.
Hope this will help you.
Please mark +1 if it is useful to you....
这篇关于通过调用XSLT C#的功能改变的xml文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!