我是一个有用的助手,可以为您翻译文本。
XSL新手但完全卡住了!
我有一个转换,使用C#脚本函数格式化日期,在VS 2008中运行“显示XML输出”时,这个工作正常,输出正是我想要的。
然而,当我尝试使用代码运行时,我收到以下错误:
未定义或导入预定义类型'System.Object'
调用转换的功能看起来像这样,它非常基础,在我开始使用脚本之前就能正常工作。
public static string RunXSLT(string xsltFile, string inputXML)
{
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load(xsltFile, settings, null);
StringReader sReader = new StringReader(inputXML);
XmlTextReader xmlTextReader = new XmlTextReader(sReader);
//Create an XmlTextWriter which outputs to memory stream
Stream stream = new MemoryStream();
XmlWriter xmlWriter = new XmlTextWriter(stream,> System.Text.Encoding.UTF8);
transform.Transform(xmlTextReader, xmlWriter);
stream.Position = 0;
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(stream);
return XmlDoc.OuterXml;
}
XSL转换是这样的...
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:nlbExtension="urn:nlbExtension"
exclude-result-prefixes="msxsl nlbExtension">
<xsl:output method="xml" indent="yes"/>
<msxsl:script implements-prefix="nlbExtension" language="C#">
<![CDATA[
public string FormatDateTime(string xsdDateTime, string format)
{
DateTime date = DateTime.Parse(xsdDateTime);
return date.ToString(format);
}
]]>
</msxsl:script>
<xsl:template match="/">
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
<xsl:for-each select="./Collection/Content" >
<url>
<loc>http://www.nlb.org<xsl:value-of select="./QuickLink/text()"/></loc>
<lastmod><xsl:value-of select="./DateModified/text()" /></lastmod>
</url>
</xsl:for-each>
</urlset>
</xsl:template>
</xsl:stylesheet>
XmlConvert.ToDateTime
。 - Marc Gravell<urlset
上缺少一个>
- 这只是一个打字错误吗?这让我对其他可能的复制/粘贴错误持谨慎态度... - Marc Gravell