5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2005 Novell, Inc. http://www.novell.com
10 using System
.Globalization
;
11 using System
.Collections
;
14 namespace Mono
.Xml
.Ext
16 public class XhtmlWriter
: DefaultXmlWriter
22 public XhtmlWriter (XmlWriter writer
) : base (writer
)
25 localNames
= new Stack ();
26 namespaces
= new Stack ();
29 public override void WriteStartElement (string prefix
, string localName
, string ns
)
31 localNames
.Push (localName
);
33 writer
.WriteStartElement (prefix
, localName
, ns
);
36 public override void WriteEndElement ()
38 WriteWiseEndElement (false);
41 public override void WriteFullEndElement ()
43 WriteWiseEndElement (true);
46 void WriteWiseEndElement (bool full
)
48 string localName
= localNames
.Pop () as string;
49 string ns
= namespaces
.Pop () as string;
50 if (ns
== "http://www.w3.org/1999/xhtml") {
51 switch (localName
.ToLower (CultureInfo
.InvariantCulture
)) {
73 writer
.WriteFullEndElement ();
75 writer
.WriteEndElement ();
79 public class DefaultXmlWriter
: XmlWriter
83 public DefaultXmlWriter (XmlWriter writer
)
88 public override void Close ()
93 public override void Flush ()
98 public override string LookupPrefix (string ns
)
100 return writer
.LookupPrefix (ns
);
103 public override void WriteBase64 (byte [] buffer
, int index
, int count
)
105 writer
.WriteBase64 (buffer
, index
, count
);
108 public override void WriteBinHex (byte [] buffer
, int index
, int count
)
110 writer
.WriteBinHex (buffer
, index
, count
);
113 public override void WriteCData (string text
)
115 writer
.WriteCData (text
);
118 public override void WriteCharEntity (char ch
)
120 writer
.WriteCharEntity (ch
);
123 public override void WriteChars (char [] buffer
, int index
, int count
)
125 writer
.WriteChars (buffer
, index
, count
);
128 public override void WriteComment (string text
)
130 writer
.WriteComment (text
);
133 public override void WriteDocType (string name
, string pubid
, string sysid
, string subset
)
135 writer
.WriteDocType (name
, pubid
, sysid
, subset
);
138 public override void WriteEndAttribute ()
140 writer
.WriteEndAttribute ();
143 public override void WriteEndDocument ()
145 writer
.WriteEndDocument ();
148 public override void WriteEndElement ()
150 writer
.WriteEndElement ();
153 public override void WriteEntityRef (string name
)
155 writer
.WriteEntityRef (name
);
158 public override void WriteFullEndElement ()
160 writer
.WriteFullEndElement ();
163 public override void WriteName (string name
)
165 writer
.WriteName (name
);
168 public override void WriteNmToken (string name
)
170 writer
.WriteNmToken (name
);
173 public override void WriteNode (XmlReader reader
, bool defattr
)
175 writer
.WriteNode (reader
, defattr
);
178 public override void WriteProcessingInstruction (string name
, string text
)
180 writer
.WriteProcessingInstruction (name
, text
);
183 public override void WriteQualifiedName (string localName
, string ns
)
185 writer
.WriteQualifiedName (localName
, ns
);
188 public override void WriteRaw (string data
)
190 writer
.WriteRaw (data
);
193 public override void WriteRaw (char [] buffer
, int index
, int count
)
195 writer
.WriteRaw (buffer
, index
, count
);
198 public override void WriteStartAttribute (string prefix
, string localName
, string ns
)
200 writer
.WriteStartAttribute (prefix
, localName
, ns
);
203 public override void WriteStartDocument (bool standalone
)
205 writer
.WriteStartDocument (standalone
);
208 public override void WriteStartDocument ()
210 writer
.WriteStartDocument ();
213 public override void WriteStartElement (string prefix
, string localName
, string ns
)
215 writer
.WriteStartElement (prefix
, localName
, ns
);
218 public override void WriteString (string text
)
220 writer
.WriteString (text
);
223 public override void WriteSurrogateCharEntity (char lowChar
, char highChar
)
225 writer
.WriteSurrogateCharEntity (lowChar
, highChar
);
228 public override void WriteWhitespace (string ws
)
230 writer
.WriteWhitespace (ws
);
233 public override WriteState WriteState
{
235 return writer
.WriteState
;
239 public override string XmlLang
{
241 return writer
.XmlLang
;
245 public override XmlSpace XmlSpace
{
247 return writer
.XmlSpace
;