using System.IO;\r
using System.Xml;\r
using Commons.Xml.Relaxng.Derivative;\r
+using Commons.Xml.Relaxng.Rnc;\r
+\r
+#if NET_2_0\r
+using NSResolver = System.Xml.IXmlNamespaceResolver;\r
+#else\r
+using NSResolver = System.Xml.XmlNamespaceManager;\r
+#endif\r
\r
namespace Commons.Xml.Relaxng\r
{\r
set { baseUri = value; }\r
}\r
\r
- public abstract void Write (XmlWriter write);\r
+ public abstract void Write (XmlWriter writer);\r
+\r
+ internal abstract void WriteRnc (RncWriter writer);\r
}\r
\r
public abstract class RelaxngSingleContentPattern : RelaxngPattern\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteStart (this);\r
+ }\r
+\r
internal RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return p.Compile (grammar);\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteDefine (this);\r
+ }\r
+\r
internal RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return makeSingle (grammar);\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteInclude (this);\r
+ }\r
+\r
// compile into div\r
internal RelaxngDiv Compile (RelaxngGrammar grammar)\r
{\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteDiv (this);\r
+ }\r
+\r
internal void Compile (RelaxngGrammar grammar)\r
{\r
foreach (RelaxngDiv div in divs)\r
this.IsCompiled = true;\r
}\r
\r
+ public void WriteCompact (TextWriter writer)\r
+ {\r
+ WriteRnc (new RncWriter (writer));\r
+ }\r
+\r
+ public void WriteCompact (TextWriter writer, NSResolver res)\r
+ {\r
+ WriteRnc (new RncWriter (writer, res));\r
+ }\r
\r
// Internal\r
internal XmlResolver Resolver {\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteNotAllowed (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return RdpNotAllowed.Instance;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteEmpty (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return RdpEmpty.Instance;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteText (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return RdpText.Instance;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteData (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
// RdpParamList rdpl = new RdpParamList ();\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteValue (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteList (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteElement (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return new RdpElement (\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteAttribute (this);\r
+ }\r
+\r
private void checkInvalidAttrNameClass (RdpNameClass nc)\r
{\r
string xmlnsNS = "http://www.w3.org/2000/xmlns";\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteRef (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
// Important!! This compile method only generates stub.\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteParentRef (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = false;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteExternalRef (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
grammar.CheckIncludeRecursion (Href);\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteOneOrMore (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteZeroOrMore (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteOptional (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteMixed (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteChoice (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteGroup (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteInterleave (this);\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
writer.WriteEndElement ();\r
}\r
\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteParam (this);\r
+ }\r
+\r
internal RdpParam Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
p.Write (writer);\r
writer.WriteEndElement ();\r
}\r
+\r
+ internal override void WriteRnc (RncWriter writer)\r
+ {\r
+ writer.WriteDataExcept (this);\r
+ }\r
}\r
\r
internal class RelaxngRefPattern\r