我有一个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>
我需要输出XML作为
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<root>
<employee>
<firstname>Kaushal</firstname>
<lastname>Parik</lastname>
<status>Single</status>
</employee>
<employee>
<firstname>Abhishek</firstname>
<lastname>Swarnkar</lastname>
<status>Single</status>
</employee>
</root>
的“状态”的值是“单”中的所有节点....我知道如何添加通过C#代码这个静态文本“单” ......但是,我不知道如何添加节点“状态“通过XSLT XML ....当我尝试,它得到的节点下添加‘名字’,而不是在如图所示的预期的地方....请帮助我,我怎么能做到这一点....对XSLT和C#由我使用的代码是,
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:myUtils="pda:MyUtils">
<xsl:output method="xml" indent="yes"/>
<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:element name ="status">
<xsl:value-of select ="Single"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.IO;
public partial class nirav : System.Web.UI.Page
{
public class MyXslExtension
{
public string FormatName(string name)
{
return "Mr. " + name;
}
public int GetAge(string name)
{
int age = name.Count();
return age;
}
}
protected void Page_Load(object sender, EventArgs e)
{
string outputpath = "nirav.xml";
XsltArgumentList arguments = new XsltArgumentList();
arguments.AddExtensionObject("pda:MyUtils", new MyXslExtension());
using (StreamWriter writer = new StreamWriter(outputpath))
{
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("http://localhost:4329/XsltTransform/nirav.xslt");
transform.Transform("http://localhost:4329/XsltTransform/nirav.xml", arguments, writer);
}
}
}
你的帮助是极大的赞赏....