-//\r
-// System.Xml.XmlSignificantWhitespace.cs\r
-//\r
-// Author:\r
-// Duncan Mak (duncan@ximian.com)\r
-//\r
-// (C) Ximian, Inc. http://www.ximian.com\r
-//\r
-\r
-using System;\r
-\r
-namespace System.Xml\r
-{\r
- public class XmlSignificantWhitespace : XmlCharacterData\r
- {\r
- // Constructor\r
- protected internal XmlSignificantWhitespace (string strData, XmlDocument doc)\r
- : base (strData, doc)\r
- {\r
- }\r
- \r
- // Properties\r
- public override string LocalName {\r
- get { return "#significant-whitespace"; }\r
- }\r
-\r
- public override string Name {\r
- get { return "#significant-whitespace"; }\r
- }\r
-\r
- public override XmlNodeType NodeType {\r
- get { return XmlNodeType.SignificantWhitespace; }\r
- }\r
-\r
- [MonoTODO]\r
- public override string Value {\r
- get { return Data; }\r
- set {}\r
- }\r
-\r
- // Methods\r
- public override XmlNode CloneNode (bool deep)\r
- {\r
- return new XmlSignificantWhitespace (Data, OwnerDocument);\r
- }\r
-\r
- [MonoTODO]\r
- public override void WriteContentTo (XmlWriter w)\r
- { \r
- }\r
-\r
- [MonoTODO]\r
- public override void WriteTo (XmlWriter w)\r
- { \r
- }\r
- }\r
-}\r
+//
+// System.Xml.XmlSignificantWhitespace.cs
+//
+// Author:
+// Duncan Mak (duncan@ximian.com)
+//
+// (C) Ximian, Inc. http://www.ximian.com
+//
+
+using System;
+using System.Xml.XPath;
+
+namespace System.Xml
+{
+ public class XmlSignificantWhitespace : XmlCharacterData
+ {
+ // Constructor
+ protected internal XmlSignificantWhitespace (string strData, XmlDocument doc)
+ : base (strData, doc)
+ {
+ }
+
+ // Properties
+ public override string LocalName {
+ get { return "#significant-whitespace"; }
+ }
+
+ public override string Name {
+ get { return "#significant-whitespace"; }
+ }
+
+ public override XmlNodeType NodeType {
+ get { return XmlNodeType.SignificantWhitespace; }
+ }
+
+ internal override XPathNodeType XPathNodeType {
+ get {
+ return XPathNodeType.SignificantWhitespace;
+ }
+ }
+
+ public override string Value {
+ get { return Data; }
+ set {
+ if (IsValidWhitespaceChar (value) == false)
+ throw new ArgumentException ("Invalid whitespace characters.");
+ base.Data = value;
+ }
+ }
+
+ // Methods
+ public override XmlNode CloneNode (bool deep)
+ {
+ return new XmlSignificantWhitespace (Data, OwnerDocument);
+ }
+
+ public override void WriteContentTo (XmlWriter w) {}
+
+ public override void WriteTo (XmlWriter w)
+ {
+ w.WriteWhitespace (Data);
+ }
+
+ private bool IsValidWhitespaceChar (string text)
+ {
+ foreach (char c in text)
+ if ((c != ' ') && (c != '\r') && (c != '\n') && (c != '\t'))
+ return false;
+ return true;
+ }
+ }
+}