dombuilder.java

来自「JAVA 所有包」· Java 代码 · 共 787 行 · 第 1/2 页

JAVA
787
字号
   * @param localName The local part of the qualified name of the element   * @param name The element name   */  public void endElement(String ns, String localName, String name)          throws org.xml.sax.SAXException  {    m_elemStack.pop();    m_currentNode = m_elemStack.isEmpty() ? null : (Node)m_elemStack.peek();  }  /**   * Set an ID string to node association in the ID table.   *   * @param id The ID string.   * @param elem The associated ID.   */  public void setIDAttribute(String id, Element elem)  {    // Do nothing. This method is meant to be overiden.  }  /**   * Receive notification of character data.   *   * <p>The Parser will call this method to report each chunk of   * character data.  SAX parsers may return all contiguous character   * data in a single chunk, or they may split it into several   * chunks; however, all of the characters in any single event   * must come from the same external entity, so that the Locator   * provides useful information.</p>   *   * <p>The application must not attempt to read from the array   * outside of the specified range.</p>   *   * <p>Note that some parsers will report whitespace using the   * ignorableWhitespace() method rather than this one (validating   * parsers must do so).</p>   *   * @param ch The characters from the XML document.   * @param start The start position in the array.   * @param length The number of characters to read from the array.   * @see #ignorableWhitespace   * @see org.xml.sax.Locator   */  public void characters(char ch[], int start, int length) throws org.xml.sax.SAXException  {    if(isOutsideDocElem()       && com.sun.org.apache.xml.internal.utils.XMLCharacterRecognizer.isWhiteSpace(ch, start, length))      return;  // avoid DOM006 Hierarchy request error    if (m_inCData)    {      cdata(ch, start, length);      return;    }    String s = new String(ch, start, length);    Node childNode;    childNode =  m_currentNode != null ? m_currentNode.getLastChild(): null;    if( childNode != null && childNode.getNodeType() == Node.TEXT_NODE ){       ((Text)childNode).appendData(s);    }    else{       Text text = m_doc.createTextNode(s);       append(text);    }  }  /**   * If available, when the disable-output-escaping attribute is used,   * output raw text without escaping.  A PI will be inserted in front   * of the node with the name "lotusxsl-next-is-raw" and a value of   * "formatter-to-dom".   *   * @param ch Array containing the characters   * @param start Index to start of characters in the array   * @param length Number of characters in the array   */  public void charactersRaw(char ch[], int start, int length)          throws org.xml.sax.SAXException  {    if(isOutsideDocElem()       && com.sun.org.apache.xml.internal.utils.XMLCharacterRecognizer.isWhiteSpace(ch, start, length))      return;  // avoid DOM006 Hierarchy request error    String s = new String(ch, start, length);    append(m_doc.createProcessingInstruction("xslt-next-is-raw",                                             "formatter-to-dom"));    append(m_doc.createTextNode(s));  }  /**   * Report the beginning of an entity.   *   * The start and end of the document entity are not reported.   * The start and end of the external DTD subset are reported   * using the pseudo-name "[dtd]".  All other events must be   * properly nested within start/end entity events.   *   * @param name The name of the entity.  If it is a parameter   *        entity, the name will begin with '%'.   * @see #endEntity   * @see org.xml.sax.ext.DeclHandler#internalEntityDecl   * @see org.xml.sax.ext.DeclHandler#externalEntityDecl   */  public void startEntity(String name) throws org.xml.sax.SAXException  {    // Almost certainly the wrong behavior...    // entityReference(name);  }  /**   * Report the end of an entity.   *   * @param name The name of the entity that is ending.   * @see #startEntity   */  public void endEntity(String name) throws org.xml.sax.SAXException{}  /**   * Receive notivication of a entityReference.   *   * @param name name of the entity reference   */  public void entityReference(String name) throws org.xml.sax.SAXException  {    append(m_doc.createEntityReference(name));  }  /**   * Receive notification of ignorable whitespace in element content.   *   * <p>Validating Parsers must use this method to report each chunk   * of ignorable whitespace (see the W3C XML 1.0 recommendation,   * section 2.10): non-validating parsers may also use this method   * if they are capable of parsing and using content models.</p>   *   * <p>SAX parsers may return all contiguous whitespace in a single   * chunk, or they may split it into several chunks; however, all of   * the characters in any single event must come from the same   * external entity, so that the Locator provides useful   * information.</p>   *   * <p>The application must not attempt to read from the array   * outside of the specified range.</p>   *   * @param ch The characters from the XML document.   * @param start The start position in the array.   * @param length The number of characters to read from the array.   * @see #characters   */  public void ignorableWhitespace(char ch[], int start, int length)          throws org.xml.sax.SAXException  {    if(isOutsideDocElem())      return;  // avoid DOM006 Hierarchy request error    String s = new String(ch, start, length);    append(m_doc.createTextNode(s));  }  /**   * Tell if the current node is outside the document element.   *   * @return true if the current node is outside the document element.   */   private boolean isOutsideDocElem()   {      return (null == m_docFrag) && m_elemStack.size() == 0 && (null == m_currentNode || m_currentNode.getNodeType() == Node.DOCUMENT_NODE);   }  /**   * Receive notification of a processing instruction.   *   * <p>The Parser will invoke this method once for each processing   * instruction found: note that processing instructions may occur   * before or after the main document element.</p>   *   * <p>A SAX parser should never report an XML declaration (XML 1.0,   * section 2.8) or a text declaration (XML 1.0, section 4.3.1)   * using this method.</p>   *   * @param target The processing instruction target.   * @param data The processing instruction data, or null if   *        none was supplied.   */  public void processingInstruction(String target, String data)          throws org.xml.sax.SAXException  {    append(m_doc.createProcessingInstruction(target, data));  }  /**   * Report an XML comment anywhere in the document.   *   * This callback will be used for comments inside or outside the   * document element, including comments in the external DTD   * subset (if read).   *   * @param ch An array holding the characters in the comment.   * @param start The starting position in the array.   * @param length The number of characters to use from the array.   */  public void comment(char ch[], int start, int length) throws org.xml.sax.SAXException  {    append(m_doc.createComment(new String(ch, start, length)));  }  /** Flag indicating that we are processing a CData section          */  protected boolean m_inCData = false;  /**   * Report the start of a CDATA section.   *   * @see #endCDATA   */  public void startCDATA() throws org.xml.sax.SAXException  {    m_inCData = true;    append(m_doc.createCDATASection(""));  }  /**   * Report the end of a CDATA section.   *   * @see #startCDATA   */  public void endCDATA() throws org.xml.sax.SAXException  {    m_inCData = false;  }  /**   * Receive notification of cdata.   *   * <p>The Parser will call this method to report each chunk of   * character data.  SAX parsers may return all contiguous character   * data in a single chunk, or they may split it into several   * chunks; however, all of the characters in any single event   * must come from the same external entity, so that the Locator   * provides useful information.</p>   *   * <p>The application must not attempt to read from the array   * outside of the specified range.</p>   *   * <p>Note that some parsers will report whitespace using the   * ignorableWhitespace() method rather than this one (validating   * parsers must do so).</p>   *   * @param ch The characters from the XML document.   * @param start The start position in the array.   * @param length The number of characters to read from the array.   * @see #ignorableWhitespace   * @see org.xml.sax.Locator   */  public void cdata(char ch[], int start, int length) throws org.xml.sax.SAXException  {    if(isOutsideDocElem()       && com.sun.org.apache.xml.internal.utils.XMLCharacterRecognizer.isWhiteSpace(ch, start, length))      return;  // avoid DOM006 Hierarchy request error    String s = new String(ch, start, length);    CDATASection section  =(CDATASection) m_currentNode.getLastChild();    section.appendData(s);  }  /**   * Report the start of DTD declarations, if any.   *   * Any declarations are assumed to be in the internal subset   * unless otherwise indicated.   *   * @param name The document type name.   * @param publicId The declared public identifier for the   *        external DTD subset, or null if none was declared.   * @param systemId The declared system identifier for the   *        external DTD subset, or null if none was declared.   * @see #endDTD   * @see #startEntity   */  public void startDTD(String name, String publicId, String systemId)          throws org.xml.sax.SAXException  {    // Do nothing for now.  }  /**   * Report the end of DTD declarations.   *   * @see #startDTD   */  public void endDTD() throws org.xml.sax.SAXException  {    // Do nothing for now.  }  /**   * Begin the scope of a prefix-URI Namespace mapping.   *   * <p>The information from this event is not necessary for   * normal Namespace processing: the SAX XML reader will   * automatically replace prefixes for element and attribute   * names when the http://xml.org/sax/features/namespaces   * feature is true (the default).</p>   *   * <p>There are cases, however, when applications need to   * use prefixes in character data or in attribute values,   * where they cannot safely be expanded automatically; the   * start/endPrefixMapping event supplies the information   * to the application to expand prefixes in those contexts   * itself, if necessary.</p>   *   * <p>Note that start/endPrefixMapping events are not   * guaranteed to be properly nested relative to each-other:   * all startPrefixMapping events will occur before the   * corresponding startElement event, and all endPrefixMapping   * events will occur after the corresponding endElement event,   * but their order is not guaranteed.</p>   *   * @param prefix The Namespace prefix being declared.   * @param uri The Namespace URI the prefix is mapped to.   * @see #endPrefixMapping   * @see #startElement   */  public void startPrefixMapping(String prefix, String uri)          throws org.xml.sax.SAXException  {    /*    // Not sure if this is needed or wanted    // Also, it fails in the stree.    if((null != m_currentNode)       && (m_currentNode.getNodeType() == Node.ELEMENT_NODE))    {      String qname;      if(((null != prefix) && (prefix.length() == 0))         || (null == prefix))        qname = "xmlns";      else        qname = "xmlns:"+prefix;      Element elem = (Element)m_currentNode;      String val = elem.getAttribute(qname); // Obsolete, should be DOM2...?      if(val == null)      {        elem.setAttributeNS("http://www.w3.org/XML/1998/namespace",                            qname, uri);      }    }    */  }  /**   * End the scope of a prefix-URI mapping.   *   * <p>See startPrefixMapping for details.  This event will   * always occur after the corresponding endElement event,   * but the order of endPrefixMapping events is not otherwise   * guaranteed.</p>   *   * @param prefix The prefix that was being mapping.   * @see #startPrefixMapping   * @see #endElement   */  public void endPrefixMapping(String prefix) throws org.xml.sax.SAXException{}  /**   * Receive notification of a skipped entity.   *   * <p>The Parser will invoke this method once for each entity   * skipped.  Non-validating processors may skip entities if they   * have not seen the declarations (because, for example, the   * entity was declared in an external DTD subset).  All processors   * may skip external entities, depending on the values of the   * http://xml.org/sax/features/external-general-entities and the   * http://xml.org/sax/features/external-parameter-entities   * properties.</p>   *   * @param name The name of the skipped entity.  If it is a   *        parameter entity, the name will begin with '%'.   */  public void skippedEntity(String name) throws org.xml.sax.SAXException{}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?