我有一个输入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>
“status”的值在所有节点中都是“Single”....我知道如何通过c#代码添加这个静态文本“Single”....但是,我不知道如何添加节点“status” “通过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);
}
}
}
非常感谢您的帮助....