protected virtual NameClass ChoiceName() { NameClass nc = null; if (ReadStartElement()) { while (SkipForeignElements()) { NameClass child = ReadNameClass(); if (nc == null) { nc = child; } else { nc = new ChoiceNameClass(nc, child); } } ReadEndElement(); } if (nc == null) { // error: no children ReportError(ERR_NO_CHILD_NAMECLASS); nc = new SimpleNameClass("foo", "bar"); // recover } return(nc); }
protected virtual NameClass ReadNameClassOrNameAttr(bool isAttribute, out bool isEmpty) { string name = GetAttribute("name"); if (name != null) { NameClass nc; // there is @name if (isAttribute && reader.GetAttribute("ns") == null && // there is no @ns name.IndexOf(':') == -1) // name is NCName { nc = new SimpleNameClass(new XmlName("", name)); } else { nc = new SimpleNameClass(ProcessQName(name)); } isEmpty = !ReadStartElement(); return(nc); } isEmpty = !ReadStartElement(); return(ReadNameClass()); }
protected virtual NameClass SimpleName() { if (reader.IsEmptyElement) { ReadStartElement(); // TODO: error message return(new SimpleNameClass("undefined", "undefined")); } else { ReadStartElement(); string name = ReadPCDATA(); if (name == null) { name = "undefined"; } NameClass nc = new SimpleNameClass(ProcessQName(name.Trim())); ReadEndElement(); return(nc); } }