我有一些抛出 XslTransformException 的代码。这是所需的行为(XSL 包含一个 xsl:message 元素,其中 @terminate 设置为 yes)。
我试图在我的代码中捕获此异常,但找不到包含此异常类的程序集,并且在 MSDN 中找不到有关此异常的任何文档以了解合适的继承类(即避免使用我的 catch 块中的 Exception 类)。
我引用了 System.Xml 和 Sytem.Xml.Linq 程序集,并具有以下 using 语句:
using System.Xml;
using System.Xml.Xsl;
例外是在 System.Xml.Xsl 命名空间中;IE:
System.Xml.Xsl.XslTransformException
知道我需要参考哪个程序集吗?
编辑: 根据要求,请在下面找到重现此异常的示例代码:
using System;
using System.Xml;
using System.Xml.Xsl;
using System.Text;
namespace StackOverflowDemo
{
class Program
{
static void Main(string[] args)
{
XmlDocument xmsl = new XmlDocument();
xmsl.LoadXml("<?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\"><xsl:output method=\"xml\" indent=\"yes\"/><xsl:template match=\"@* | node()\"><xsl:message terminate=\"yes\">this should throw an exception</xsl:message><xsl:copy><xsl:apply-templates select=\"@* | node()\"/></xsl:copy></xsl:template></xsl:stylesheet>");
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(xmsl.CreateNavigator());
XmlDocument xml = new XmlDocument();
xml.LoadXml("<root />");
StringBuilder sb = new StringBuilder();
XmlWriter writer = XmlWriter.Create(sb);
/*
try
{
*/
xsl.Transform(xml.CreateNavigator(), writer);
/*
}
catch(XslTransformException e) //<-- this class does not exist
{
Console.WriteLine(e.ToString());
}
*/
}
}
}