Пример #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 popContext()
 {
     if (namespaces)
     {
         namespaceSupport.PopContext();
     }
 }
Пример #3
0
 /// <summary>
 ///     Write an end tag.
 ///     Pass the event on down the filter chain for further processing.
 /// </summary>
 /// <param name="uri">
 ///     The Namespace URI, or the empty string if none
 ///     is available.
 /// </param>
 /// <param name="localName">
 ///     The element's local (unprefixed) name (required).
 /// </param>
 /// <param name="qName">
 ///     The element's qualified (prefixed) name, or the
 ///     empty string is none is available.  This method will
 ///     use the qName as a template for generating a prefix
 ///     if necessary, but it is not guaranteed to use the
 ///     same qName.
 /// </param>
 /// <exception cref="SAXException">
 ///     If there is an error
 ///     writing the end tag, or if a handler further down
 ///     the filter chain raises an exception.
 /// </exception>
 /// <seealso cref="IContentHandler.EndElement" />
 public override void EndElement(string uri, string localName, string qName)
 {
     if (
       !(_htmlMode && (uri.Equals("http://www.w3.org/1999/xhtml") || uri.Equals(""))
     && (qName.Equals("area") || qName.Equals("base") || qName.Equals("basefont") || qName.Equals("br")
         || qName.Equals("col") || qName.Equals("frame") || qName.Equals("hr") || qName.Equals("img")
         || qName.Equals("input") || qName.Equals("isindex") || qName.Equals("link") || qName.Equals("meta")
         || qName.Equals("param")))) {
       Write("</");
       WriteName(uri, localName, qName, true);
       Write('>');
     }
     if (_elementLevel == 1) {
       Write('\n');
     }
     _cdataElement = false;
     base.EndElement(uri, localName, qName);
     _nsSupport.PopContext();
     _elementLevel--;
 }