Пример #1
0
        public virtual void EndElement(string elname)
        {
            IContentHandler handler = _contentHandler;

            if (!_namespaces)
            {
                handler.EndElement("", "", elname);
                return;
            }

            // following code added by MHK to fix bug Saxon 6.1/013
            if (_prefixStack.ProcessName(elname, _nsTemp, false) == null)
            {
                // shouldn't happen
                _errorHandler.Error(new SAXParseException("undeclared name prefix in: " + elname, this));
                _nsTemp[0] = _nsTemp[1] = "";
                elname     = elname.Substring(elname.IndexOf(':') + 1);
            }

            handler.EndElement(_nsTemp[0], _nsTemp[1], elname);

            // previous code (clearly wrong): handler.endElement ("", "", elname);

            // end of MHK addition

            IEnumerator prefixes = _prefixStack.GetDeclaredPrefixes().GetEnumerator();

            while (prefixes.MoveNext())
            {
                handler.EndPrefixMapping((string)prefixes.Current);
            }
            _prefixStack.PopContext();
        }
Пример #2
0
        internal void endElement(string elname)
        {
            IContentHandler handler = contentHandler;

            if (!namespaces)
            {
                handler.EndElement("", "", elname);
                return;
            }

            string localName = string.Empty;
            string uri       = string.Empty;

            processElement(elname, out localName, out uri);
            handler.EndElement(uri, localName, elname);

            ArrayList declared = namespaceSupport.GetDeclaredPrefixes();

            foreach (string prefix in declared)
            {
                handler.EndPrefixMapping(prefix);
            }

            popContext();
        }
Пример #3
0
 /// <summary>
 ///     Write out the list of Namespace declarations.
 /// </summary>
 /// <exception cref="SAXException">
 ///     This method will throw
 ///     an IOException wrapped in a SAXException if
 ///     there is an error writing the Namespace
 ///     declarations.
 /// </exception>
 private void WriteNSDecls()
 {
     IEnumerable prefixes = _nsSupport.GetDeclaredPrefixes();
     foreach (string prefix in prefixes) {
       string uri = _nsSupport.GetUri(prefix);
       if (uri == null) {
     uri = "";
       }
       char[] ch = uri.ToCharArray();
       Write(' ');
       if ("".Equals(prefix)) {
     Write("xmlns=\"");
       } else {
     Write("xmlns:");
     Write(prefix);
     Write("=\"");
       }
       WriteEsc(ch, 0, ch.Length, true);
       Write('\"');
     }
 }