Purifier (NekoHTML 1.9.20 Implementation)
Date: 2014-02-13

org.cyberneko.html.filters

## Class Purifier

- java.lang.Object
- - org.cyberneko.html.filters.DefaultFilter
  - - org.cyberneko.html.filters.Purifier

- All Implemented Interfaces:
    HTMLComponent

      public class Purifier
      extends DefaultFilter

  This filter purifies the HTML input to ensure XML well-formedness. The purification process includes:
  - fixing illegal characters in the document, including
    - element and attribute names,
    - processing instruction target and data,
    - document text;
  - ensuring the string "--" does not appear in the content of a comment;
  - ensuring the string "]]>" does not appear in the content of a CDATA section;
  - ensuring that the XML declaration has required pseudo-attributes and that the values are correct; and
  - synthesized missing namespace bindings.

  Illegal characters in XML names are converted to the character sequence "_u####_" where "####" is the value of the Unicode character represented in hexadecimal. Whereas illegal characters appearing in document content is converted to the character sequence "\\u####".

  In comments, the character '-' is replaced by the character sequence "- " to prevent "--" from ever appearing in the comment content. For CDATA sections, the character ']' is replaced by the character sequence "] " to prevent "]]" from appearing.

  The URI used for synthesized namespace bindings is "http://cyberneko.org/html/ns/synthesized/number" where number is generated to ensure uniqueness.

  Version:
    $Id: Purifier.java,v 1.5 2005/02/14 03:56:54 andyc Exp $
  Author:
    Andy Clark

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.String` | `AUGMENTATIONS` Include infoset augmentations.
    `protected boolean` | `fAugmentations` Augmentations.
    `protected boolean` | `fInCDATASection` True if inside a CDATA section.
    `protected NamespaceContext` | `fNamespaceContext` Namespace information.
    `protected boolean` | `fNamespaces` Namespaces.
    `protected java.lang.String` | `fPublicId` Public identifier of doctype declaration.
    `protected boolean` | `fSeenDoctype` True if the doctype declaration was seen.
    `protected boolean` | `fSeenRootElement` True if root element was seen.
    `protected int` | `fSynthesizedNamespaceCount` Synthesized namespace binding count.
    `protected java.lang.String` | `fSystemId` System identifier of doctype declaration.
    `protected static java.lang.String` | `NAMESPACES` Namespaces.
    `protected static HTMLEventInfo` | `SYNTHESIZED_ITEM` Synthesized event info item.
    `static java.lang.String` | `SYNTHESIZED_NAMESPACE_PREFX` Synthesized namespace binding prefix.

    - ### Fields inherited from class org.cyberneko.html.filters.DefaultFilter

      `fDocumentHandler, fDocumentSource`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Purifier()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `characters(XMLString text, Augmentations augs)` Characters.
    `void` | `comment(XMLString text, Augmentations augs)` Comment.
    `void` | `doctypeDecl(java.lang.String root, java.lang.String pubid, java.lang.String sysid, Augmentations augs)` Doctype declaration.
    `void` | `emptyElement(QName element, XMLAttributes attrs, Augmentations augs)` Empty element.
    `void` | `endCDATA(Augmentations augs)` End CDATA section.
    `void` | `endElement(QName element, Augmentations augs)` End element.
    `protected void` | `handleStartDocument()` Handle start document.
    `protected void` | `handleStartElement(QName element, XMLAttributes attrs)` Handle start element.
    `void` | `processingInstruction(java.lang.String target, XMLString data, Augmentations augs)` Processing instruction.
    `protected java.lang.String` | `purifyName(java.lang.String name, boolean localpart)` Purify name.
    `protected QName` | `purifyQName(QName qname)` Purify qualified name.
    `protected XMLString` | `purifyText(XMLString text)` Purify content.
    `void` | `reset(XMLComponentManager manager)` Resets the component.
    `void` | `startCDATA(Augmentations augs)` Start CDATA section.
    `void` | `startDocument(XMLLocator locator, java.lang.String encoding, Augmentations augs)` Start document.
    `void` | `startDocument(XMLLocator locator, java.lang.String encoding, NamespaceContext nscontext, Augmentations augs)` Start document.
    `void` | `startElement(QName element, XMLAttributes attrs, Augmentations augs)` Start element.
    `protected void` | `synthesizeBinding(XMLAttributes attrs, java.lang.String ns)` Synthesize namespace binding.
    `protected Augmentations` | `synthesizedAugs()` Returns an augmentations object with a synthesized item added.
    `protected static java.lang.String` | `toHexString(int c, int padlen)` Returns a padded hexadecimal string for the given value.
    `void` | `xmlDecl(java.lang.String version, java.lang.String encoding, java.lang.String standalone, Augmentations augs)` XML declaration.

    - ### Methods inherited from class org.cyberneko.html.filters.DefaultFilter

      `endDocument, endGeneralEntity, endPrefixMapping, getDocumentHandler, getDocumentSource, getFeatureDefault, getPropertyDefault, getRecognizedFeatures, getRecognizedProperties, ignorableWhitespace, merge, setDocumentHandler, setDocumentSource, setFeature, setProperty, startGeneralEntity, startPrefixMapping, textDecl`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SYNTHESIZED_NAMESPACE_PREFX

          public static final java.lang.String SYNTHESIZED_NAMESPACE_PREFX

      Synthesized namespace binding prefix.
      See Also:
        Constant Field Values

    - #### NAMESPACES

          protected static final java.lang.String NAMESPACES

      Namespaces.
      See Also:
        Constant Field Values

    - #### AUGMENTATIONS

          protected static final java.lang.String AUGMENTATIONS

      Include infoset augmentations.
      See Also:
        Constant Field Values

    - #### SYNTHESIZED_ITEM

          protected static final HTMLEventInfo SYNTHESIZED_ITEM

      Synthesized event info item.

    - #### fNamespaces

          protected boolean fNamespaces

      Namespaces.

    - #### fAugmentations

          protected boolean fAugmentations

      Augmentations.

    - #### fSeenDoctype

          protected boolean fSeenDoctype

      True if the doctype declaration was seen.

    - #### fSeenRootElement

          protected boolean fSeenRootElement

      True if root element was seen.

    - #### fInCDATASection

          protected boolean fInCDATASection

      True if inside a CDATA section.

    - #### fPublicId

          protected java.lang.String fPublicId

      Public identifier of doctype declaration.

    - #### fSystemId

          protected java.lang.String fSystemId

      System identifier of doctype declaration.

    - #### fNamespaceContext

          protected NamespaceContext fNamespaceContext

      Namespace information.

    - #### fSynthesizedNamespaceCount

          protected int fSynthesizedNamespaceCount

      Synthesized namespace binding count.

  - ### Constructor Detail

    - #### Purifier

          public Purifier()

  - ### Method Detail

    - #### reset

          public void reset(XMLComponentManager manager)
                     throws XMLConfigurationException

      Description copied from class: `DefaultFilter`
      Resets the component. The component can query the component manager about any features and properties that affect the operation of the component.
      Overrides:
        `reset` in class `DefaultFilter`
      Parameters:
        `manager` - The component manager.
      Throws:
        `XMLConfigurationException`

    - #### startDocument

          public void startDocument(XMLLocator locator,
                           java.lang.String encoding,
                           Augmentations augs)
                             throws XNIException

      Start document.
      Overrides:
        `startDocument` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### startDocument

          public void startDocument(XMLLocator locator,
                           java.lang.String encoding,
                           NamespaceContext nscontext,
                           Augmentations augs)
                             throws XNIException

      Start document.
      Overrides:
        `startDocument` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### xmlDecl

          public void xmlDecl(java.lang.String version,
                     java.lang.String encoding,
                     java.lang.String standalone,
                     Augmentations augs)
                       throws XNIException

      XML declaration.
      Overrides:
        `xmlDecl` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### comment

          public void comment(XMLString text,
                     Augmentations augs)
                       throws XNIException

      Comment.
      Overrides:
        `comment` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### processingInstruction

          public void processingInstruction(java.lang.String target,
                                   XMLString data,
                                   Augmentations augs)
                                     throws XNIException

      Processing instruction.
      Overrides:
        `processingInstruction` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### doctypeDecl

          public void doctypeDecl(java.lang.String root,
                         java.lang.String pubid,
                         java.lang.String sysid,
                         Augmentations augs)
                           throws XNIException

      Doctype declaration.
      Overrides:
        `doctypeDecl` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### startElement

          public void startElement(QName element,
                          XMLAttributes attrs,
                          Augmentations augs)
                            throws XNIException

      Start element.
      Overrides:
        `startElement` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### emptyElement

          public void emptyElement(QName element,
                          XMLAttributes attrs,
                          Augmentations augs)
                            throws XNIException

      Empty element.
      Overrides:
        `emptyElement` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### startCDATA

          public void startCDATA(Augmentations augs)
                          throws XNIException

      Start CDATA section.
      Overrides:
        `startCDATA` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### endCDATA

          public void endCDATA(Augmentations augs)
                        throws XNIException

      End CDATA section.
      Overrides:
        `endCDATA` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### characters

          public void characters(XMLString text,
                        Augmentations augs)
                          throws XNIException

      Characters.
      Overrides:
        `characters` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### endElement

          public void endElement(QName element,
                        Augmentations augs)
                          throws XNIException

      End element.
      Overrides:
        `endElement` in class `DefaultFilter`
      Throws:
        `XNIException`

    - #### handleStartDocument

          protected void handleStartDocument()

      Handle start document.

    - #### handleStartElement

          protected void handleStartElement(QName element,
                                XMLAttributes attrs)

      Handle start element.

    - #### synthesizeBinding

          protected void synthesizeBinding(XMLAttributes attrs,
                               java.lang.String ns)

      Synthesize namespace binding.

    - #### synthesizedAugs

          protected final Augmentations synthesizedAugs()

      Returns an augmentations object with a synthesized item added.

    - #### purifyQName

          protected QName purifyQName(QName qname)

      Purify qualified name.

    - #### purifyName

          protected java.lang.String purifyName(java.lang.String name,
                                    boolean localpart)

      Purify name.

    - #### purifyText

          protected XMLString purifyText(XMLString text)

      Purify content.

    - #### toHexString

          protected static java.lang.String toHexString(int c,
                                     int padlen)

      Returns a padded hexadecimal string for the given value.

(C) Copyright 2002-2014, Andy Clark, Marc Guillemot. All rights reserved.