我写它使用C#扩展功能的XSLT。 该函数返回一个XML片段。 事情是这样的:
public string MyFunc(string input)
{
return "<thisIsXml/>";
}
我这样称呼它:
<value-of select="extensions:MyFunc(.)"/>
它的工作原理,但响应被转义,所以在这样的结果呢:
<thisIsXml>
我不想说-我想这作为注入实际 ,转义XML。 可能?
(这是C#,所以只有XSLT 1.0。)
该解决方案,似乎是返回一个XPathNavigator对象,而不是字符串。 您可以从片段形成这些。 我在扩展对象写了这个效用函数:
private XPathNavigator GetFragment(string input)
{
var settings = new XmlReaderSettings()
{
ConformanceLevel = ConformanceLevel.Fragment
};
var doc = new XPathDocument(XmlReader.Create(new StringReader(input), settings));
return doc.CreateNavigator();
}
然后我改写了我的扩展函数返回前运行通过函数的字符串。
构建在C#中System.Xml.XmlDocument或System.Xml.XPath.XPathDocument并返回XPathNavigator
从XmlDocument的或XPathDocument中。 当然在XSLT的然后需要<xsl:copy-of select="extension:MyFunc(.)"/>
文章来源: How can a C# XSLT extension function return an XML fragment that gets used as unescaped XML?