我有一个XML文件,并在我的网站项目的XSLT文件。
xml文件:
<root>
<employee>
<firstname>Kaushal</firstname>
<lastname>Parik</lastname>
</employee>
<employee>
<firstname>Abhishek</firstname>
<lastname>Swarnkar</lastname>
</employee>
</root>
XSLT:
<?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:Concat="urn:XslSample">
<xsl:output method="html" indent="yes"/>
<xsl:template match="root">
<xsl:for-each select="employee">
<![CDATA[Concatenated name is ]]>
<xsl:value-of select="Concat:GetFullName(firstname,lastname)"/>
<xsl:value-of select="age"/>
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
aspx.cs:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.Xml;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
MemoryStream objStream = new MemoryStream();
StreamWriter objWriter = new StreamWriter(objStream, System.Text.Encoding.UTF8);
XPathDocument doc = new XPathDocument(Server.MapPath("XMLFile.xml"));
XslCompiledTransform trans = new XslCompiledTransform();
trans.Load(Server.MapPath("XSLTFile.xslt"));
//create the XslArgumentList and new BookUtils object
XsltArgumentList argList = new XsltArgumentList();
Concat objUtil = new Concat();
//this tells the argumentlist about BookUtils
argList.AddExtensionObject("urn:XslSample", objUtil);
//new XPathNavigator
XPathNavigator nav = doc.CreateNavigator();
//do the transform
trans.Transform(nav, argList, objWriter);
//objWriter.Flush();
objStream.Position = 0;
StreamReader oReader = new StreamReader(objStream);
string strResult = oReader.ReadToEnd();
//objWriter.Close();
//oReader.Close();
Response.Write(strResult);
}
catch (Exception Ex)
{ Response.Write(Ex.Message); }
}
}
public class Concat
{
public Concat()
{ }
public string GetFullName(string firstname, string lastname)
{ return "Mr." + firstname; }
}
当我运行的网站,我需要从XSLT调用C#功能和改变的XML文件中的值....我在每一个名字的前通过C#代码添加文字(比如“先生”)... 。加入后,将其写入输出作为响应,但原始的XML不被修改。 我想,要体现在xml文件....
XML输出需要:
<root>
<employee>
<firstname>Mr.Kaushal</firstname>
<lastname>Parik</lastname>
</employee>
<employee>
<firstname>Mr.Abhishek</firstname>
<lastname>Swarnkar</lastname>
</employee>
</root>
此外,作为下一步,我需要添加另一个节点的XML文件(比如年龄)通过另一C#功能....请注意,C#函数应该从我的XSLT文件被称为....谁能帮我与此简单的代码????
最终的XML要求:
<root>
<employee>
<firstname>Mr.Kaushal</firstname>
<lastname>Parik</lastname>
<age>34</age>
</employee>
<employee>
<firstname>Mr.Abhishek</firstname>
<lastname>Swarnkar</lastname>
<age>30</age>
</employee>
</root>