XslTransformException をスローしているコードがいくつかあります。これは望ましい動作です (XSL には、@terminate が yes に設定された xsl:message 要素が含まれています)。
コードでこの例外をキャッチしようとしていますが、この例外のクラスを含むアセンブリが見つからず、MSDN でこの例外に関するドキュメントを見つけて、適切な継承クラスのアイデアを得ることができません (つまり、使用を避けるため)私のキャッチブロックのクラス例外)。
System.Xml および Sytem.Xml.Linq アセンブリが参照されており、次の using ステートメントがあります。
using System.Xml;
using System.Xml.Xsl;
例外は System.Xml.Xsl 名前空間にあります。すなわち:
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());
}
*/
}
}
}