{\r
}\r
\r
+ public RelaxngExceptNameClass Except {\r
+ get { return except; }\r
+ set { except = value; }\r
+ }\r
+\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "anyName", RelaxngGrammar.NamespaceURI);\r
+ if (except != null)\r
+ except.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpNameClass Compile (RelaxngGrammar g)\r
{\r
if (except != null) {\r
return RdpAnyName.Instance;\r
}\r
\r
- public RelaxngExceptNameClass Except {\r
- get { return except; }\r
- set { except = value; }\r
- }\r
-\r
internal override void CheckConstraints (bool rejectAnyName, bool rejectNsName) \r
{\r
if (rejectAnyName)\r
set { except = value; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "nsName", RelaxngGrammar.NamespaceURI);\r
+ if (except != null)\r
+ except.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpNameClass Compile (RelaxngGrammar g)\r
{\r
if (except != null) {\r
set { ns = value; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "name", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteAttributeString ("ns", ns);\r
+ // Here we just skip qname\r
+ writer.WriteString (ncname);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpNameClass Compile (RelaxngGrammar g)\r
{\r
return new RdpName (ncname, ns);\r
{\r
}\r
\r
+ public ArrayList Children {\r
+ get { return names; }\r
+ set { names = value; }\r
+ }\r
+\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "choice", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngNameClass nc in Children)\r
+ nc.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpNameClass Compile (RelaxngGrammar g)\r
{\r
// Flatten names into RdpChoice. See 4.12.\r
return p;\r
}\r
\r
- public ArrayList Children {\r
- get { return names; }\r
- set { names = value; }\r
- }\r
-\r
internal override void CheckConstraints (bool rejectAnyName, bool rejectNsName) \r
{\r
foreach (RelaxngNameClass nc in names)\r
{\r
}\r
\r
+ public ArrayList Names {\r
+ get { return names; }\r
+ set { names = value; }\r
+ }\r
+\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "except", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngNameClass nc in Names)\r
+ nc.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal RdpNameClass Compile (RelaxngGrammar g)\r
{\r
// Flatten names into RdpGroup. See 4.12.\r
}\r
return p;\r
}\r
-\r
- public ArrayList Names {\r
- get { return names; }\r
- set { names = value; }\r
- }\r
}\r
}\r
get { return baseUri; }\r
set { baseUri = value; }\r
}\r
+\r
+ public abstract void Write (XmlWriter write);\r
}\r
\r
public abstract class RelaxngSingleContentPattern : RelaxngPattern\r
set { p = value; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "start", RelaxngGrammar.NamespaceURI);\r
+ if (combine != null)\r
+ writer.WriteAttributeString ("combine", combine);\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return p.Compile (grammar);\r
private RelaxngPatternList patterns = new RelaxngPatternList ();\r
string combine;\r
\r
+ public RelaxngDefine ()\r
+ {\r
+ }\r
+\r
public RelaxngPatternList Patterns {\r
get { return patterns; }\r
}\r
set { combine = value; }\r
}\r
\r
+ public string Name {\r
+ get { return name; }\r
+ set { name = value; }\r
+ }\r
+\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "define", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteAttributeString ("name", name);\r
+ if (combine != null)\r
+ writer.WriteAttributeString ("combine", combine);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
+ internal RdpPattern Compile (RelaxngGrammar grammar)\r
+ {\r
+ return makeSingle (grammar);\r
+ }\r
+\r
private RdpPattern makeSingle (RelaxngGrammar g)\r
{\r
// Flatten patterns into RdpGroup. See 4.12.\r
}\r
return p;\r
}\r
-\r
- public RelaxngDefine ()\r
- {\r
- }\r
-\r
- public string Name {\r
- get { return name; }\r
- set { name = value; }\r
- }\r
-\r
- internal RdpPattern Compile (RelaxngGrammar grammar)\r
- {\r
- return makeSingle (grammar);\r
- }\r
}\r
\r
public class RelaxngInclude : RelaxngElementBase\r
set { ns = value; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "include", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteAttributeString ("href", href);\r
+ foreach (RelaxngStart start in Starts)\r
+ start.Write (writer);\r
+ foreach (RelaxngDefine define in Defines)\r
+ define.Write (writer);\r
+ foreach (RelaxngDiv div in Divs)\r
+ div.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
// compile into div\r
internal RelaxngDiv Compile (RelaxngGrammar grammar)\r
{\r
get { return divs; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "div", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngStart start in Starts)\r
+ start.Write (writer);\r
+ foreach (RelaxngDefine define in Defines)\r
+ define.Write (writer);\r
+ foreach (RelaxngInclude include in Includes)\r
+ include.Write (writer);\r
+ foreach (RelaxngDiv div in Divs)\r
+ div.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal void Compile (RelaxngGrammar grammar)\r
{\r
foreach (RelaxngDiv div in divs)\r
set { this.List [i] = value; }\r
}\r
\r
+ public void Insert (int pos, RelaxngPattern p)\r
+ {\r
+ List.Insert (pos, p);\r
+ }\r
+\r
public void Remove (RelaxngPattern p)\r
{\r
List.Remove (p);\r
get { return RelaxngPatternType.NotAllowed; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "notAllowed", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return RdpNotAllowed.Instance;\r
get { return RelaxngPatternType.Empty; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "empty", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return RdpEmpty.Instance;\r
get { return RelaxngPatternType.Text; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "text", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return RdpText.Instance;\r
get { return RelaxngPatternType.Data; }\r
}\r
\r
+ public RelaxngParamList ParamList {\r
+ get { return paramList; }\r
+ }\r
+\r
+ public RelaxngExcept Except {\r
+ get { return except; }\r
+ set { except = value; }\r
+ }\r
+\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "data", RelaxngGrammar.NamespaceURI);\r
+ if (DatatypeLibrary != null && DatatypeLibrary != String.Empty)\r
+ writer.WriteAttributeString ("xmlns", "data", "http://www.w3.org/2000/xmlns/", DatatypeLibrary);\r
+ writer.WriteStartAttribute ("type", String.Empty);\r
+ writer.WriteQualifiedName (Type, DatatypeLibrary);\r
+ writer.WriteEndAttribute ();\r
+\r
+ foreach (RelaxngParam p in ParamList)\r
+ p.Write (writer);\r
+\r
+ if (Except != null)\r
+ Except.Write (writer);\r
+\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
// RdpParamList rdpl = new RdpParamList ();\r
return new RdpData (new RdpDatatype (DatatypeLibrary, Type, ParamList, grammar.Provider));\r
}\r
\r
- public RelaxngParamList ParamList {\r
- get { return paramList; }\r
- }\r
-\r
- public RelaxngExcept Except {\r
- get { return except; }\r
- set { except = value; }\r
- }\r
-\r
internal override void CheckConstraints () \r
{\r
CheckDatatypeName ();\r
get { return RelaxngPatternType.Value; }\r
}\r
\r
+ public string Value {\r
+ get { return value; }\r
+ set { this.value = value; }\r
+ }\r
+\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "value", RelaxngGrammar.NamespaceURI);\r
+ if (Type != null) {\r
+ writer.WriteStartAttribute ("type", String.Empty);\r
+ if (DatatypeLibrary != null && DatatypeLibrary != String.Empty)\r
+ writer.WriteAttributeString ("xmlns", "data", "http://www.w3.org/2000/xmlns/", DatatypeLibrary);\r
+ writer.WriteQualifiedName (Type, DatatypeLibrary);\r
+ writer.WriteEndAttribute ();\r
+ }\r
+ writer.WriteString (Value);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
Type, null, grammar.Provider), value);\r
}\r
\r
- public string Value {\r
- get { return value; }\r
- set { this.value = value; }\r
- }\r
-\r
internal override void CheckConstraints () \r
{\r
CheckDatatypeName ();\r
\r
public class RelaxngList : RelaxngSingleContentPattern\r
{\r
- IList patterns = new ArrayList ();\r
-\r
internal RelaxngList ()\r
{\r
}\r
get { return RelaxngPatternType.List; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "list", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
\r
public class RelaxngElement : RelaxngSingleContentPattern\r
{\r
RelaxngNameClass nc;\r
- ArrayList patterns = new ArrayList ();\r
\r
public RelaxngElement ()\r
{\r
get { return RelaxngPatternType.Element; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "element", RelaxngGrammar.NamespaceURI);\r
+ nc.Write (writer);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
return new RdpElement (\r
{\r
}\r
\r
+ public RelaxngPattern Pattern {\r
+ get { return p; }\r
+ set { p = value; }\r
+ }\r
+\r
+ public RelaxngNameClass NameClass {\r
+ get { return nc; }\r
+ set { nc = value; }\r
+ }\r
+\r
public override RelaxngPatternType PatternType {\r
get { return RelaxngPatternType.Attribute; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "attribute", RelaxngGrammar.NamespaceURI);\r
+ nc.Write (writer);\r
+ if (p != null)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
private void checkInvalidAttrNameClass (RdpNameClass nc)\r
{\r
string xmlnsNS = "http://www.w3.org/2000/xmlns";\r
RdpText.Instance);\r
}\r
\r
- public RelaxngPattern Pattern {\r
- get { return p; }\r
- set { p = value; }\r
- }\r
-\r
- public RelaxngNameClass NameClass {\r
- get { return nc; }\r
- set { nc = value; }\r
- }\r
-\r
internal override void CheckConstraints () \r
{\r
NameClass.CheckConstraints (false, false);\r
{\r
}\r
\r
+ public string Name {\r
+ get { return name; }\r
+ set { name = value; }\r
+ }\r
+\r
public override RelaxngPatternType PatternType {\r
get { return RelaxngPatternType.Ref; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "ref", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteAttributeString ("name", name);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
// Important!! This compile method only generates stub.\r
return new RdpUnresolvedRef (name, grammar);\r
}\r
\r
- public string Name {\r
- get { return name; }\r
- set { name = value; }\r
- }\r
-\r
internal override void CheckConstraints () \r
{\r
// nothing to check\r
{\r
}\r
\r
+ public string Name {\r
+ get { return name; }\r
+ set { name = value; }\r
+ }\r
+\r
public override RelaxngPatternType PatternType {\r
get { return RelaxngPatternType.ParentRef; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "parentRef", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteAttributeString ("name", name);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = false;\r
return new RdpUnresolvedRef (name, grammar.ParentGrammar);\r
}\r
\r
- public string Name {\r
- get { return name; }\r
- set { name = value; }\r
- }\r
-\r
internal override void CheckConstraints () \r
{\r
// nothing to check\r
{\r
}\r
\r
+ public string Href {\r
+ get { return href; }\r
+ set { href = value; }\r
+ }\r
+\r
+ public string NSContext {\r
+ get { return ns; }\r
+ set { ns = value; }\r
+ }\r
+\r
public override RelaxngPatternType PatternType {\r
get { return RelaxngPatternType.ExternalRef; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "externalRef", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteAttributeString ("href", Href);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
grammar.CheckIncludeRecursion (Href);\r
return ret;\r
}\r
\r
- public string Href {\r
- get { return href; }\r
- set { href = value; }\r
- }\r
-\r
- public string NSContext {\r
- get { return ns; }\r
- set { ns = value; }\r
- }\r
-\r
internal override void CheckConstraints () \r
{\r
// nothing to check\r
get { return RelaxngPatternType.OneOrMore; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "oneOrMore", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
get { return RelaxngPatternType.ZeroOrMore; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "zeroOrMore", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
get { return RelaxngPatternType.Optional; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "optional", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
get { return RelaxngPatternType.Mixed; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "mixed", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
get { return RelaxngPatternType.Choice; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "choice", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
get { return RelaxngPatternType.Group; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "group", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
get { return RelaxngPatternType.Interleave; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "interleave", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal override RdpPattern Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
set { this.value = value; }\r
}\r
\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "param", RelaxngGrammar.NamespaceURI);\r
+ writer.WriteAttributeString ("name", name);\r
+ writer.WriteString (Value);\r
+ writer.WriteEndElement ();\r
+ }\r
+\r
internal RdpParam Compile (RelaxngGrammar grammar)\r
{\r
IsCompiled = true;\r
set { this.List [i] = value; }\r
}\r
\r
+ public void Insert (int pos, RelaxngParam p)\r
+ {\r
+ List.Insert (pos, p);\r
+ }\r
+\r
public void Remove (RelaxngParam p)\r
{\r
List.Remove (p);\r
public RelaxngPatternList Patterns {\r
get { return patterns; }\r
}\r
+\r
+ public override void Write (XmlWriter writer)\r
+ {\r
+ writer.WriteStartElement ("", "except", RelaxngGrammar.NamespaceURI);\r
+ foreach (RelaxngPattern p in Patterns)\r
+ p.Write (writer);\r
+ writer.WriteEndElement ();\r
+ }\r
}\r
\r
public class RelaxngRefPattern\r