using System;\r
using System.Runtime.Serialization;\r
using System.Xml.XPath;\r
+using System.Security.Permissions;\r
\r
namespace System.Xml.Xsl\r
{\r
[Serializable]\r
public class XsltException : SystemException\r
{\r
+ static string CreateMessage (string message, XPathNavigator nav)\r
+ {\r
+ IXmlLineInfo li = nav as IXmlLineInfo;\r
+ int lineNumber = li != null ? li.LineNumber : 0;\r
+ int linePosition = li != null ? li.LinePosition : 0;\r
+ string sourceUri = nav != null ? nav.BaseURI : String.Empty;\r
+ return CreateMessage (lineNumber, linePosition, sourceUri, message);\r
+ }\r
+\r
+ static string CreateMessage (int lineNumber, int linePosition, string sourceUri, string msg)\r
+ {\r
+ if (sourceUri != null)\r
+ msg += " " + sourceUri;\r
+ if (lineNumber != 0)\r
+ msg += " line " + lineNumber;\r
+ if (linePosition != 0)\r
+ msg += ", position " + linePosition;\r
+ return msg;\r
+ }\r
+\r
#region Fields\r
\r
int lineNumber;\r
\r
#region Constructors\r
\r
+#if NET_2_0\r
+ public XsltException ()\r
+ : base (String.Empty, null)\r
+ {\r
+ }\r
+\r
+ public XsltException (string message)\r
+ : base (message, null)\r
+ {\r
+ }\r
+#endif\r
+\r
public XsltException (string message, Exception innerException)\r
: base (message, innerException)\r
{\r
}
internal XsltException (string message, Exception innerException, int lineNumber, int linePosition, string sourceUri)
- : base (message, innerException)\r
+ : base (CreateMessage (lineNumber, linePosition, sourceUri, message), innerException)\r
{\r
this.lineNumber = lineNumber;\r
this.linePosition = linePosition;\r
}\r
\r
internal XsltException (string message, Exception innerException, XPathNavigator nav)
- : base (message, innerException)\r
+ : base (CreateMessage (message, nav), innerException)\r
{\r
IXmlLineInfo li = nav as IXmlLineInfo;\r
this.lineNumber = li != null ? li.LineNumber : 0;\r
get { return linePosition; }\r
}\r
\r
+#if NET_2_0\r
+#else\r
public override string Message {\r
get {\r
string msg = base.Message;\r
return msg;\r
}\r
}\r
+#endif\r
\r
public string SourceUri {\r
get { return sourceUri; }\r
\r
#region Methods\r
\r
+#if NET_2_0\r
+ [SecurityPermission (SecurityAction.LinkDemand,\r
+ Flags=SecurityPermissionFlag.SerializationFormatter)]\r
+#endif\r
public override void GetObjectData (SerializationInfo info, StreamingContext context)\r
{\r
base.GetObjectData (info, context);\r