gpt4 book ai didi

c# - XSLT 扩展对象方法允许的 .NET 返回类型是什么?

转载 作者:可可西里 更新时间:2023-11-01 09:06:02 25 4
gpt4 key购买 nike

.NET 允许使用所谓的扩展对象来扩展 XSLT。非常方便,非常方便。您可以通过创建一个类来实现:

public class VeryHandyExtensionFunctions
{
public string VerySmartStringConcat(XPathNodeIterator NodeList)
{
return "some very smart string concat based on NodeList";
}
}

等待一些魔法(见下文)你可以将 VerySmartStringConcat 作为你的 xslt 的一部分:

<xsl:value-of select="someprefix:VerySmartStringConcat(nodes[@withsomeattribute])"/>

要实现它,唯一要做的就是使用 XsltArgumentList 将扩展类(上面的 VeryHandyExtensionFunctions)的实例传递给 XslCompiledTransform 类:

XsltArgumentList xsltArg = new XsltArgumentList();
xsltArg.AddExtensionObject("SomeUriResolvingToSomePrefix",new VeryHandyExtensionFunctions);
XslCompiledTransform xslTransform;
XmlWriter W = XmlWriter.Create(SomeTarget, Xslt.OutputSettings);
xslTransform.Transform(SomeXmlDocument, xsltArg, W);

.NET 在弄清楚如何将 XML 类型转换为扩展函数的输入参数和返回类型方面相当聪明。但是,每隔一段时间它就会提示不支持类型。支持哪些类型?

最佳答案

经过一些研究,我在 http://msdn.microsoft.com/en-us/magazine/bb986125.aspx 上找到了这个:

3C XPath 类型 -> 等效的 .NET 类(类型)
字符串 -> System.String
bool 值 -> System.Boolean
数字 -> System.Double
结果树片段 -> System.Xml.XPath.XPathNavigator
节点集 -> System.Xml.XPath.XPathNodeIterator

关于c# - XSLT 扩展对象方法允许的 .NET 返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com