如何能在C#XSLT扩展函数返回一个被用作转义XML XML片段?(How can a C# XSL

2019-10-22 01:57发布

我写它使用C#扩展功能的XSLT。 该函数返回一个XML片段。 事情是这样的:

public string MyFunc(string input)
{
  return "<thisIsXml/>";
}

我这样称呼它:

<value-of select="extensions:MyFunc(.)"/>

它的工作原理,但响应被转义,所以在这样的结果呢:

&lt;thisIsXml&gt;

我不想说-我想这作为注入实际 ,转义XML。 可能?

(这是C#,所以只有XSLT 1.0。)

Answer 1:

该解决方案,似乎是返回一个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();
}

然后我改写了我的扩展函数返回前运行通过函数的字符串。



Answer 2:

构建在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?
标签: c# xml xslt