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; } }