feat(jdk8): move files to new folder to avoid resources compiled.
This commit is contained in:
156
jdkSrc/jdk8/org/xml/sax/ext/Attributes2.java
Normal file
156
jdkSrc/jdk8/org/xml/sax/ext/Attributes2.java
Normal file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// Attributes2.java - extended Attributes
|
||||
// http://www.saxproject.org
|
||||
// Public Domain: no warranty.
|
||||
// $Id: Attributes2.java,v 1.2 2004/11/03 22:49:07 jsuttor Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.Attributes;
|
||||
|
||||
|
||||
/**
|
||||
* SAX2 extension to augment the per-attribute information
|
||||
* provided though {@link Attributes}.
|
||||
* If an implementation supports this extension, the attributes
|
||||
* provided in {@link org.xml.sax.ContentHandler#startElement
|
||||
* ContentHandler.startElement() } will implement this interface,
|
||||
* and the <em>http://xml.org/sax/features/use-attributes2</em>
|
||||
* feature flag will have the value <em>true</em>.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p> XMLReader implementations are not required to support this
|
||||
* information, and it is not part of core-only SAX2 distributions.</p>
|
||||
*
|
||||
* <p>Note that if an attribute was defaulted (<em>!isSpecified()</em>)
|
||||
* it will of necessity also have been declared (<em>isDeclared()</em>)
|
||||
* in the DTD.
|
||||
* Similarly if an attribute's type is anything except CDATA, then it
|
||||
* must have been declared.
|
||||
* </p>
|
||||
*
|
||||
* @since SAX 2.0 (extensions 1.1 alpha)
|
||||
* @author David Brownell
|
||||
*/
|
||||
public interface Attributes2 extends Attributes
|
||||
{
|
||||
/**
|
||||
* Returns false unless the attribute was declared in the DTD.
|
||||
* This helps distinguish two kinds of attributes that SAX reports
|
||||
* as CDATA: ones that were declared (and hence are usually valid),
|
||||
* and those that were not (and which are never valid).
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return true if the attribute was declared in the DTD,
|
||||
* false otherwise.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not identify an attribute.
|
||||
*/
|
||||
public boolean isDeclared (int index);
|
||||
|
||||
/**
|
||||
* Returns false unless the attribute was declared in the DTD.
|
||||
* This helps distinguish two kinds of attributes that SAX reports
|
||||
* as CDATA: ones that were declared (and hence are usually valid),
|
||||
* and those that were not (and which are never valid).
|
||||
*
|
||||
* @param qName The XML qualified (prefixed) name.
|
||||
* @return true if the attribute was declared in the DTD,
|
||||
* false otherwise.
|
||||
* @exception java.lang.IllegalArgumentException When the
|
||||
* supplied name does not identify an attribute.
|
||||
*/
|
||||
public boolean isDeclared (String qName);
|
||||
|
||||
/**
|
||||
* Returns false unless the attribute was declared in the DTD.
|
||||
* This helps distinguish two kinds of attributes that SAX reports
|
||||
* as CDATA: ones that were declared (and hence are usually valid),
|
||||
* and those that were not (and which are never valid).
|
||||
*
|
||||
* <p>Remember that since DTDs do not "understand" namespaces, the
|
||||
* namespace URI associated with an attribute may not have come from
|
||||
* the DTD. The declaration will have applied to the attribute's
|
||||
* <em>qName</em>.
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string if
|
||||
* the name has no Namespace URI.
|
||||
* @param localName The attribute's local name.
|
||||
* @return true if the attribute was declared in the DTD,
|
||||
* false otherwise.
|
||||
* @exception java.lang.IllegalArgumentException When the
|
||||
* supplied names do not identify an attribute.
|
||||
*/
|
||||
public boolean isDeclared (String uri, String localName);
|
||||
|
||||
/**
|
||||
* Returns true unless the attribute value was provided
|
||||
* by DTD defaulting.
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return true if the value was found in the XML text,
|
||||
* false if the value was provided by DTD defaulting.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not identify an attribute.
|
||||
*/
|
||||
public boolean isSpecified (int index);
|
||||
|
||||
/**
|
||||
* Returns true unless the attribute value was provided
|
||||
* by DTD defaulting.
|
||||
*
|
||||
* <p>Remember that since DTDs do not "understand" namespaces, the
|
||||
* namespace URI associated with an attribute may not have come from
|
||||
* the DTD. The declaration will have applied to the attribute's
|
||||
* <em>qName</em>.
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string if
|
||||
* the name has no Namespace URI.
|
||||
* @param localName The attribute's local name.
|
||||
* @return true if the value was found in the XML text,
|
||||
* false if the value was provided by DTD defaulting.
|
||||
* @exception java.lang.IllegalArgumentException When the
|
||||
* supplied names do not identify an attribute.
|
||||
*/
|
||||
public boolean isSpecified (String uri, String localName);
|
||||
|
||||
/**
|
||||
* Returns true unless the attribute value was provided
|
||||
* by DTD defaulting.
|
||||
*
|
||||
* @param qName The XML qualified (prefixed) name.
|
||||
* @return true if the value was found in the XML text,
|
||||
* false if the value was provided by DTD defaulting.
|
||||
* @exception java.lang.IllegalArgumentException When the
|
||||
* supplied name does not identify an attribute.
|
||||
*/
|
||||
public boolean isSpecified (String qName);
|
||||
}
|
||||
332
jdkSrc/jdk8/org/xml/sax/ext/Attributes2Impl.java
Normal file
332
jdkSrc/jdk8/org/xml/sax/ext/Attributes2Impl.java
Normal file
@@ -0,0 +1,332 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// Attributes2Impl.java - extended AttributesImpl
|
||||
// http://www.saxproject.org
|
||||
// Public Domain: no warranty.
|
||||
// $Id: Attributes2Impl.java,v 1.3 2005/02/24 11:20:18 gg156739 Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
|
||||
/**
|
||||
* SAX2 extension helper for additional Attributes information,
|
||||
* implementing the {@link Attributes2} interface.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This is not part of core-only SAX2 distributions.</p>
|
||||
*
|
||||
* <p>The <em>specified</em> flag for each attribute will always
|
||||
* be true, unless it has been set to false in the copy constructor
|
||||
* or using {@link #setSpecified}.
|
||||
* Similarly, the <em>declared</em> flag for each attribute will
|
||||
* always be false, except for defaulted attributes (<em>specified</em>
|
||||
* is false), non-CDATA attributes, or when it is set to true using
|
||||
* {@link #setDeclared}.
|
||||
* If you change an attribute's type by hand, you may need to modify
|
||||
* its <em>declared</em> flag to match.
|
||||
* </p>
|
||||
*
|
||||
* @since SAX 2.0 (extensions 1.1 alpha)
|
||||
* @author David Brownell
|
||||
*/
|
||||
public class Attributes2Impl extends AttributesImpl implements Attributes2
|
||||
{
|
||||
private boolean declared [];
|
||||
private boolean specified [];
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new, empty Attributes2Impl object.
|
||||
*/
|
||||
public Attributes2Impl () {
|
||||
specified = null;
|
||||
declared = null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy an existing Attributes or Attributes2 object.
|
||||
* If the object implements Attributes2, values of the
|
||||
* <em>specified</em> and <em>declared</em> flags for each
|
||||
* attribute are copied.
|
||||
* Otherwise the flag values are defaulted to assume no DTD was used,
|
||||
* unless there is evidence to the contrary (such as attributes with
|
||||
* type other than CDATA, which must have been <em>declared</em>).
|
||||
*
|
||||
* <p>This constructor is especially useful inside a
|
||||
* {@link org.xml.sax.ContentHandler#startElement startElement} event.</p>
|
||||
*
|
||||
* @param atts The existing Attributes object.
|
||||
*/
|
||||
public Attributes2Impl (Attributes atts)
|
||||
{
|
||||
super (atts);
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Implementation of Attributes2
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Returns the current value of the attribute's "declared" flag.
|
||||
*/
|
||||
// javadoc mostly from interface
|
||||
public boolean isDeclared (int index)
|
||||
{
|
||||
if (index < 0 || index >= getLength ())
|
||||
throw new ArrayIndexOutOfBoundsException (
|
||||
"No attribute at index: " + index);
|
||||
return declared [index];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the current value of the attribute's "declared" flag.
|
||||
*/
|
||||
// javadoc mostly from interface
|
||||
public boolean isDeclared (String uri, String localName)
|
||||
{
|
||||
int index = getIndex (uri, localName);
|
||||
|
||||
if (index < 0)
|
||||
throw new IllegalArgumentException (
|
||||
"No such attribute: local=" + localName
|
||||
+ ", namespace=" + uri);
|
||||
return declared [index];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the current value of the attribute's "declared" flag.
|
||||
*/
|
||||
// javadoc mostly from interface
|
||||
public boolean isDeclared (String qName)
|
||||
{
|
||||
int index = getIndex (qName);
|
||||
|
||||
if (index < 0)
|
||||
throw new IllegalArgumentException (
|
||||
"No such attribute: " + qName);
|
||||
return declared [index];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the current value of an attribute's "specified" flag.
|
||||
*
|
||||
* @param index The attribute index (zero-based).
|
||||
* @return current flag value
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not identify an attribute.
|
||||
*/
|
||||
public boolean isSpecified (int index)
|
||||
{
|
||||
if (index < 0 || index >= getLength ())
|
||||
throw new ArrayIndexOutOfBoundsException (
|
||||
"No attribute at index: " + index);
|
||||
return specified [index];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the current value of an attribute's "specified" flag.
|
||||
*
|
||||
* @param uri The Namespace URI, or the empty string if
|
||||
* the name has no Namespace URI.
|
||||
* @param localName The attribute's local name.
|
||||
* @return current flag value
|
||||
* @exception java.lang.IllegalArgumentException When the
|
||||
* supplied names do not identify an attribute.
|
||||
*/
|
||||
public boolean isSpecified (String uri, String localName)
|
||||
{
|
||||
int index = getIndex (uri, localName);
|
||||
|
||||
if (index < 0)
|
||||
throw new IllegalArgumentException (
|
||||
"No such attribute: local=" + localName
|
||||
+ ", namespace=" + uri);
|
||||
return specified [index];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the current value of an attribute's "specified" flag.
|
||||
*
|
||||
* @param qName The XML qualified (prefixed) name.
|
||||
* @return current flag value
|
||||
* @exception java.lang.IllegalArgumentException When the
|
||||
* supplied name does not identify an attribute.
|
||||
*/
|
||||
public boolean isSpecified (String qName)
|
||||
{
|
||||
int index = getIndex (qName);
|
||||
|
||||
if (index < 0)
|
||||
throw new IllegalArgumentException (
|
||||
"No such attribute: " + qName);
|
||||
return specified [index];
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Manipulators
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Copy an entire Attributes object. The "specified" flags are
|
||||
* assigned as true, and "declared" flags as false (except when
|
||||
* an attribute's type is not CDATA),
|
||||
* unless the object is an Attributes2 object.
|
||||
* In that case those flag values are all copied.
|
||||
*
|
||||
* @see AttributesImpl#setAttributes
|
||||
*/
|
||||
public void setAttributes (Attributes atts)
|
||||
{
|
||||
int length = atts.getLength ();
|
||||
|
||||
super.setAttributes (atts);
|
||||
declared = new boolean [length];
|
||||
specified = new boolean [length];
|
||||
|
||||
if (atts instanceof Attributes2) {
|
||||
Attributes2 a2 = (Attributes2) atts;
|
||||
for (int i = 0; i < length; i++) {
|
||||
declared [i] = a2.isDeclared (i);
|
||||
specified [i] = a2.isSpecified (i);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < length; i++) {
|
||||
declared [i] = !"CDATA".equals (atts.getType (i));
|
||||
specified [i] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add an attribute to the end of the list, setting its
|
||||
* "specified" flag to true. To set that flag's value
|
||||
* to false, use {@link #setSpecified}.
|
||||
*
|
||||
* <p>Unless the attribute <em>type</em> is CDATA, this attribute
|
||||
* is marked as being declared in the DTD. To set that flag's value
|
||||
* to true for CDATA attributes, use {@link #setDeclared}.
|
||||
*
|
||||
* @see AttributesImpl#addAttribute
|
||||
*/
|
||||
public void addAttribute (String uri, String localName, String qName,
|
||||
String type, String value)
|
||||
{
|
||||
super.addAttribute (uri, localName, qName, type, value);
|
||||
|
||||
|
||||
int length = getLength ();
|
||||
if(specified==null)
|
||||
{
|
||||
specified = new boolean[length];
|
||||
declared = new boolean[length];
|
||||
} else if (length > specified.length) {
|
||||
boolean newFlags [];
|
||||
|
||||
newFlags = new boolean [length];
|
||||
System.arraycopy (declared, 0, newFlags, 0, declared.length);
|
||||
declared = newFlags;
|
||||
|
||||
newFlags = new boolean [length];
|
||||
System.arraycopy (specified, 0, newFlags, 0, specified.length);
|
||||
specified = newFlags;
|
||||
}
|
||||
|
||||
specified [length - 1] = true;
|
||||
declared [length - 1] = !"CDATA".equals (type);
|
||||
}
|
||||
|
||||
|
||||
// javadoc entirely from superclass
|
||||
public void removeAttribute (int index)
|
||||
{
|
||||
int origMax = getLength () - 1;
|
||||
|
||||
super.removeAttribute (index);
|
||||
if (index != origMax) {
|
||||
System.arraycopy (declared, index + 1, declared, index,
|
||||
origMax - index);
|
||||
System.arraycopy (specified, index + 1, specified, index,
|
||||
origMax - index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Assign a value to the "declared" flag of a specific attribute.
|
||||
* This is normally needed only for attributes of type CDATA,
|
||||
* including attributes whose type is changed to or from CDATA.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param value The desired flag value.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not identify an attribute.
|
||||
* @see #setType
|
||||
*/
|
||||
public void setDeclared (int index, boolean value)
|
||||
{
|
||||
if (index < 0 || index >= getLength ())
|
||||
throw new ArrayIndexOutOfBoundsException (
|
||||
"No attribute at index: " + index);
|
||||
declared [index] = value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Assign a value to the "specified" flag of a specific attribute.
|
||||
* This is the only way this flag can be cleared, except clearing
|
||||
* by initialization with the copy constructor.
|
||||
*
|
||||
* @param index The index of the attribute (zero-based).
|
||||
* @param value The desired flag value.
|
||||
* @exception java.lang.ArrayIndexOutOfBoundsException When the
|
||||
* supplied index does not identify an attribute.
|
||||
*/
|
||||
public void setSpecified (int index, boolean value)
|
||||
{
|
||||
if (index < 0 || index >= getLength ())
|
||||
throw new ArrayIndexOutOfBoundsException (
|
||||
"No attribute at index: " + index);
|
||||
specified [index] = value;
|
||||
}
|
||||
}
|
||||
170
jdkSrc/jdk8/org/xml/sax/ext/DeclHandler.java
Normal file
170
jdkSrc/jdk8/org/xml/sax/ext/DeclHandler.java
Normal file
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// DeclHandler.java - Optional handler for DTD declaration events.
|
||||
// http://www.saxproject.org
|
||||
// Public Domain: no warranty.
|
||||
// $Id: DeclHandler.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* SAX2 extension handler for DTD declaration events.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
|
||||
* for further information.
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This is an optional extension handler for SAX2 to provide more
|
||||
* complete information about DTD declarations in an XML document.
|
||||
* XML readers are not required to recognize this handler, and it
|
||||
* is not part of core-only SAX2 distributions.</p>
|
||||
*
|
||||
* <p>Note that data-related DTD declarations (unparsed entities and
|
||||
* notations) are already reported through the {@link
|
||||
* org.xml.sax.DTDHandler DTDHandler} interface.</p>
|
||||
*
|
||||
* <p>If you are using the declaration handler together with a lexical
|
||||
* handler, all of the events will occur between the
|
||||
* {@link org.xml.sax.ext.LexicalHandler#startDTD startDTD} and the
|
||||
* {@link org.xml.sax.ext.LexicalHandler#endDTD endDTD} events.</p>
|
||||
*
|
||||
* <p>To set the DeclHandler for an XML reader, use the
|
||||
* {@link org.xml.sax.XMLReader#setProperty setProperty} method
|
||||
* with the property name
|
||||
* <code>http://xml.org/sax/properties/declaration-handler</code>
|
||||
* and an object implementing this interface (or null) as the value.
|
||||
* If the reader does not report declaration events, it will throw a
|
||||
* {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
|
||||
* when you attempt to register the handler.</p>
|
||||
*
|
||||
* @since SAX 2.0 (extensions 1.0)
|
||||
* @author David Megginson
|
||||
*/
|
||||
public interface DeclHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* Report an element type declaration.
|
||||
*
|
||||
* <p>The content model will consist of the string "EMPTY", the
|
||||
* string "ANY", or a parenthesised group, optionally followed
|
||||
* by an occurrence indicator. The model will be normalized so
|
||||
* that all parameter entities are fully resolved and all whitespace
|
||||
* is removed,and will include the enclosing parentheses. Other
|
||||
* normalization (such as removing redundant parentheses or
|
||||
* simplifying occurrence indicators) is at the discretion of the
|
||||
* parser.</p>
|
||||
*
|
||||
* @param name The element type name.
|
||||
* @param model The content model as a normalized string.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
*/
|
||||
public abstract void elementDecl (String name, String model)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report an attribute type declaration.
|
||||
*
|
||||
* <p>Only the effective (first) declaration for an attribute will
|
||||
* be reported. The type will be one of the strings "CDATA",
|
||||
* "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY",
|
||||
* "ENTITIES", a parenthesized token group with
|
||||
* the separator "|" and all whitespace removed, or the word
|
||||
* "NOTATION" followed by a space followed by a parenthesized
|
||||
* token group with all whitespace removed.</p>
|
||||
*
|
||||
* <p>The value will be the value as reported to applications,
|
||||
* appropriately normalized and with entity and character
|
||||
* references expanded. </p>
|
||||
*
|
||||
* @param eName The name of the associated element.
|
||||
* @param aName The name of the attribute.
|
||||
* @param type A string representing the attribute type.
|
||||
* @param mode A string representing the attribute defaulting mode
|
||||
* ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if
|
||||
* none of these applies.
|
||||
* @param value A string representing the attribute's default value,
|
||||
* or null if there is none.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
*/
|
||||
public abstract void attributeDecl (String eName,
|
||||
String aName,
|
||||
String type,
|
||||
String mode,
|
||||
String value)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report an internal entity declaration.
|
||||
*
|
||||
* <p>Only the effective (first) declaration for each entity
|
||||
* will be reported. All parameter entities in the value
|
||||
* will be expanded, but general entities will not.</p>
|
||||
*
|
||||
* @param name The name of the entity. If it is a parameter
|
||||
* entity, the name will begin with '%'.
|
||||
* @param value The replacement text of the entity.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #externalEntityDecl
|
||||
* @see org.xml.sax.DTDHandler#unparsedEntityDecl
|
||||
*/
|
||||
public abstract void internalEntityDecl (String name, String value)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report a parsed external entity declaration.
|
||||
*
|
||||
* <p>Only the effective (first) declaration for each entity
|
||||
* will be reported.</p>
|
||||
*
|
||||
* <p>If the system identifier is a URL, the parser must resolve it
|
||||
* fully before passing it to the application.</p>
|
||||
*
|
||||
* @param name The name of the entity. If it is a parameter
|
||||
* entity, the name will begin with '%'.
|
||||
* @param publicId The entity's public identifier, or null if none
|
||||
* was given.
|
||||
* @param systemId The entity's system identifier.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #internalEntityDecl
|
||||
* @see org.xml.sax.DTDHandler#unparsedEntityDecl
|
||||
*/
|
||||
public abstract void externalEntityDecl (String name, String publicId,
|
||||
String systemId)
|
||||
throws SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of DeclHandler.java
|
||||
154
jdkSrc/jdk8/org/xml/sax/ext/DefaultHandler2.java
Normal file
154
jdkSrc/jdk8/org/xml/sax/ext/DefaultHandler2.java
Normal file
@@ -0,0 +1,154 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// DefaultHandler2.java - extended DefaultHandler
|
||||
// http://www.saxproject.org
|
||||
// Public Domain: no warranty.
|
||||
// $Id: DefaultHandler2.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import java.io.IOException;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
|
||||
/**
|
||||
* This class extends the SAX2 base handler class to support the
|
||||
* SAX2 {@link LexicalHandler}, {@link DeclHandler}, and
|
||||
* {@link EntityResolver2} extensions. Except for overriding the
|
||||
* original SAX1 {@link DefaultHandler#resolveEntity resolveEntity()}
|
||||
* method the added handler methods just return. Subclassers may
|
||||
* override everything on a method-by-method basis.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p> <em>Note:</em> this class might yet learn that the
|
||||
* <em>ContentHandler.setDocumentLocator()</em> call might be passed a
|
||||
* {@link Locator2} object, and that the
|
||||
* <em>ContentHandler.startElement()</em> call might be passed a
|
||||
* {@link Attributes2} object.
|
||||
*
|
||||
* @since SAX 2.0 (extensions 1.1 alpha)
|
||||
* @author David Brownell
|
||||
*/
|
||||
public class DefaultHandler2 extends DefaultHandler
|
||||
implements LexicalHandler, DeclHandler, EntityResolver2
|
||||
{
|
||||
/** Constructs a handler which ignores all parsing events. */
|
||||
public DefaultHandler2 () { }
|
||||
|
||||
|
||||
// SAX2 ext-1.0 LexicalHandler
|
||||
|
||||
public void startCDATA ()
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void endCDATA ()
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void startDTD (String name, String publicId, String systemId)
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void endDTD ()
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void startEntity (String name)
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void endEntity (String name)
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void comment (char ch [], int start, int length)
|
||||
throws SAXException
|
||||
{ }
|
||||
|
||||
|
||||
// SAX2 ext-1.0 DeclHandler
|
||||
|
||||
public void attributeDecl (String eName, String aName,
|
||||
String type, String mode, String value)
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void elementDecl (String name, String model)
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void externalEntityDecl (String name,
|
||||
String publicId, String systemId)
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
public void internalEntityDecl (String name, String value)
|
||||
throws SAXException
|
||||
{}
|
||||
|
||||
// SAX2 ext-1.1 EntityResolver2
|
||||
|
||||
/**
|
||||
* Tells the parser that if no external subset has been declared
|
||||
* in the document text, none should be used.
|
||||
*/
|
||||
public InputSource getExternalSubset (String name, String baseURI)
|
||||
throws SAXException, IOException
|
||||
{ return null; }
|
||||
|
||||
/**
|
||||
* Tells the parser to resolve the systemId against the baseURI
|
||||
* and read the entity text from that resulting absolute URI.
|
||||
* Note that because the older
|
||||
* {@link DefaultHandler#resolveEntity DefaultHandler.resolveEntity()},
|
||||
* method is overridden to call this one, this method may sometimes
|
||||
* be invoked with null <em>name</em> and <em>baseURI</em>, and
|
||||
* with the <em>systemId</em> already absolutized.
|
||||
*/
|
||||
public InputSource resolveEntity (String name, String publicId,
|
||||
String baseURI, String systemId)
|
||||
throws SAXException, IOException
|
||||
{ return null; }
|
||||
|
||||
// SAX1 EntityResolver
|
||||
|
||||
/**
|
||||
* Invokes
|
||||
* {@link EntityResolver2#resolveEntity EntityResolver2.resolveEntity()}
|
||||
* with null entity name and base URI.
|
||||
* You only need to override that method to use this class.
|
||||
*/
|
||||
public InputSource resolveEntity (String publicId, String systemId)
|
||||
throws SAXException, IOException
|
||||
{ return resolveEntity (null, publicId, null, systemId); }
|
||||
}
|
||||
221
jdkSrc/jdk8/org/xml/sax/ext/EntityResolver2.java
Normal file
221
jdkSrc/jdk8/org/xml/sax/ext/EntityResolver2.java
Normal file
@@ -0,0 +1,221 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// EntityResolver2.java - Extended SAX entity resolver.
|
||||
// http://www.saxproject.org
|
||||
// No warranty; no copyright -- use this as you will.
|
||||
// $Id: EntityResolver2.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.xml.sax.EntityResolver;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Extended interface for mapping external entity references to input
|
||||
* sources, or providing a missing external subset. The
|
||||
* {@link XMLReader#setEntityResolver XMLReader.setEntityResolver()} method
|
||||
* is used to provide implementations of this interface to parsers.
|
||||
* When a parser uses the methods in this interface, the
|
||||
* {@link EntityResolver2#resolveEntity EntityResolver2.resolveEntity()}
|
||||
* method (in this interface) is used <em>instead of</em> the older (SAX 1.0)
|
||||
* {@link EntityResolver#resolveEntity EntityResolver.resolveEntity()} method.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>If a SAX application requires the customized handling which this
|
||||
* interface defines for external entities, it must ensure that it uses
|
||||
* an XMLReader with the
|
||||
* <em>http://xml.org/sax/features/use-entity-resolver2</em> feature flag
|
||||
* set to <em>true</em> (which is its default value when the feature is
|
||||
* recognized). If that flag is unrecognized, or its value is false,
|
||||
* or the resolver does not implement this interface, then only the
|
||||
* {@link EntityResolver} method will be used.
|
||||
* </p>
|
||||
*
|
||||
* <p>That supports three categories of application that modify entity
|
||||
* resolution. <em>Old Style</em> applications won't know about this interface;
|
||||
* they will provide an EntityResolver.
|
||||
* <em>Transitional Mode</em> provide an EntityResolver2 and automatically
|
||||
* get the benefit of its methods in any systems (parsers or other tools)
|
||||
* supporting it, due to polymorphism.
|
||||
* Both <em>Old Style</em> and <em>Transitional Mode</em> applications will
|
||||
* work with any SAX2 parser.
|
||||
* <em>New style</em> applications will fail to run except on SAX2 parsers
|
||||
* that support this particular feature.
|
||||
* They will insist that feature flag have a value of "true", and the
|
||||
* EntityResolver2 implementation they provide might throw an exception
|
||||
* if the original SAX 1.0 style entity resolution method is invoked.
|
||||
* </p>
|
||||
*
|
||||
* @see org.xml.sax.XMLReader#setEntityResolver
|
||||
*
|
||||
* @since SAX 2.0 (extensions 1.1 alpha)
|
||||
* @author David Brownell
|
||||
*/
|
||||
public interface EntityResolver2 extends EntityResolver
|
||||
{
|
||||
/**
|
||||
* Allows applications to provide an external subset for documents
|
||||
* that don't explicitly define one. Documents with DOCTYPE declarations
|
||||
* that omit an external subset can thus augment the declarations
|
||||
* available for validation, entity processing, and attribute processing
|
||||
* (normalization, defaulting, and reporting types including ID).
|
||||
* This augmentation is reported
|
||||
* through the {@link LexicalHandler#startDTD startDTD()} method as if
|
||||
* the document text had originally included the external subset;
|
||||
* this callback is made before any internal subset data or errors
|
||||
* are reported.</p>
|
||||
*
|
||||
* <p>This method can also be used with documents that have no DOCTYPE
|
||||
* declaration. When the root element is encountered,
|
||||
* but no DOCTYPE declaration has been seen, this method is
|
||||
* invoked. If it returns a value for the external subset, that root
|
||||
* element is declared to be the root element, giving the effect of
|
||||
* splicing a DOCTYPE declaration at the end the prolog of a document
|
||||
* that could not otherwise be valid. The sequence of parser callbacks
|
||||
* in that case logically resembles this:</p>
|
||||
*
|
||||
* <pre>
|
||||
* ... comments and PIs from the prolog (as usual)
|
||||
* startDTD ("rootName", source.getPublicId (), source.getSystemId ());
|
||||
* startEntity ("[dtd]");
|
||||
* ... declarations, comments, and PIs from the external subset
|
||||
* endEntity ("[dtd]");
|
||||
* endDTD ();
|
||||
* ... then the rest of the document (as usual)
|
||||
* startElement (..., "rootName", ...);
|
||||
* </pre>
|
||||
*
|
||||
* <p>Note that the InputSource gets no further resolution.
|
||||
* Implementations of this method may wish to invoke
|
||||
* {@link #resolveEntity resolveEntity()} to gain benefits such as use
|
||||
* of local caches of DTD entities. Also, this method will never be
|
||||
* used by a (non-validating) processor that is not including external
|
||||
* parameter entities. </p>
|
||||
*
|
||||
* <p>Uses for this method include facilitating data validation when
|
||||
* interoperating with XML processors that would always require
|
||||
* undesirable network accesses for external entities, or which for
|
||||
* other reasons adopt a "no DTDs" policy.
|
||||
* Non-validation motives include forcing documents to include DTDs so
|
||||
* that attributes are handled consistently.
|
||||
* For example, an XPath processor needs to know which attibutes have
|
||||
* type "ID" before it can process a widely used type of reference.</p>
|
||||
*
|
||||
* <p><strong>Warning:</strong> Returning an external subset modifies
|
||||
* the input document. By providing definitions for general entities,
|
||||
* it can make a malformed document appear to be well formed.
|
||||
* </p>
|
||||
*
|
||||
* @param name Identifies the document root element. This name comes
|
||||
* from a DOCTYPE declaration (where available) or from the actual
|
||||
* root element.
|
||||
* @param baseURI The document's base URI, serving as an additional
|
||||
* hint for selecting the external subset. This is always an absolute
|
||||
* URI, unless it is null because the XMLReader was given an InputSource
|
||||
* without one.
|
||||
*
|
||||
* @return An InputSource object describing the new external subset
|
||||
* to be used by the parser, or null to indicate that no external
|
||||
* subset is provided.
|
||||
*
|
||||
* @exception SAXException Any SAX exception, possibly wrapping
|
||||
* another exception.
|
||||
* @exception IOException Probably indicating a failure to create
|
||||
* a new InputStream or Reader, or an illegal URL.
|
||||
*/
|
||||
public InputSource getExternalSubset (String name, String baseURI)
|
||||
throws SAXException, IOException;
|
||||
|
||||
/**
|
||||
* Allows applications to map references to external entities into input
|
||||
* sources, or tell the parser it should use conventional URI resolution.
|
||||
* This method is only called for external entities which have been
|
||||
* properly declared.
|
||||
* This method provides more flexibility than the {@link EntityResolver}
|
||||
* interface, supporting implementations of more complex catalogue
|
||||
* schemes such as the one defined by the <a href=
|
||||
"http://www.oasis-open.org/committees/entity/spec-2001-08-06.html"
|
||||
>OASIS XML Catalogs</a> specification.</p>
|
||||
*
|
||||
* <p>Parsers configured to use this resolver method will call it
|
||||
* to determine the input source to use for any external entity
|
||||
* being included because of a reference in the XML text.
|
||||
* That excludes the document entity, and any external entity returned
|
||||
* by {@link #getExternalSubset getExternalSubset()}.
|
||||
* When a (non-validating) processor is configured not to include
|
||||
* a class of entities (parameter or general) through use of feature
|
||||
* flags, this method is not invoked for such entities. </p>
|
||||
*
|
||||
* <p>Note that the entity naming scheme used here is the same one
|
||||
* used in the {@link LexicalHandler}, or in the {@link
|
||||
org.xml.sax.ContentHandler#skippedEntity
|
||||
ContentHandler.skippedEntity()}
|
||||
* method. </p>
|
||||
*
|
||||
* @param name Identifies the external entity being resolved.
|
||||
* Either "[dtd]" for the external subset, or a name starting
|
||||
* with "%" to indicate a parameter entity, or else the name of
|
||||
* a general entity. This is never null when invoked by a SAX2
|
||||
* parser.
|
||||
* @param publicId The public identifier of the external entity being
|
||||
* referenced (normalized as required by the XML specification), or
|
||||
* null if none was supplied.
|
||||
* @param baseURI The URI with respect to which relative systemIDs
|
||||
* are interpreted. This is always an absolute URI, unless it is
|
||||
* null (likely because the XMLReader was given an InputSource without
|
||||
* one). This URI is defined by the XML specification to be the one
|
||||
* associated with the "<" starting the relevant declaration.
|
||||
* @param systemId The system identifier of the external entity
|
||||
* being referenced; either a relative or absolute URI.
|
||||
* This is never null when invoked by a SAX2 parser; only declared
|
||||
* entities, and any external subset, are resolved by such parsers.
|
||||
*
|
||||
* @return An InputSource object describing the new input source to
|
||||
* be used by the parser. Returning null directs the parser to
|
||||
* resolve the system ID against the base URI and open a connection
|
||||
* to resulting URI.
|
||||
*
|
||||
* @exception SAXException Any SAX exception, possibly wrapping
|
||||
* another exception.
|
||||
* @exception IOException Probably indicating a failure to create
|
||||
* a new InputStream or Reader, or an illegal URL.
|
||||
*/
|
||||
public InputSource resolveEntity (
|
||||
String name,
|
||||
String publicId,
|
||||
String baseURI,
|
||||
String systemId
|
||||
) throws SAXException, IOException;
|
||||
}
|
||||
236
jdkSrc/jdk8/org/xml/sax/ext/LexicalHandler.java
Normal file
236
jdkSrc/jdk8/org/xml/sax/ext/LexicalHandler.java
Normal file
@@ -0,0 +1,236 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// LexicalHandler.java - optional handler for lexical parse events.
|
||||
// http://www.saxproject.org
|
||||
// Public Domain: no warranty.
|
||||
// $Id: LexicalHandler.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* SAX2 extension handler for lexical events.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
|
||||
* for further information.
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>This is an optional extension handler for SAX2 to provide
|
||||
* lexical information about an XML document, such as comments
|
||||
* and CDATA section boundaries.
|
||||
* XML readers are not required to recognize this handler, and it
|
||||
* is not part of core-only SAX2 distributions.</p>
|
||||
*
|
||||
* <p>The events in the lexical handler apply to the entire document,
|
||||
* not just to the document element, and all lexical handler events
|
||||
* must appear between the content handler's startDocument and
|
||||
* endDocument events.</p>
|
||||
*
|
||||
* <p>To set the LexicalHandler for an XML reader, use the
|
||||
* {@link org.xml.sax.XMLReader#setProperty setProperty} method
|
||||
* with the property name
|
||||
* <code>http://xml.org/sax/properties/lexical-handler</code>
|
||||
* and an object implementing this interface (or null) as the value.
|
||||
* If the reader does not report lexical events, it will throw a
|
||||
* {@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}
|
||||
* when you attempt to register the handler.</p>
|
||||
*
|
||||
* @since SAX 2.0 (extensions 1.0)
|
||||
* @author David Megginson
|
||||
*/
|
||||
public interface LexicalHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* Report the start of DTD declarations, if any.
|
||||
*
|
||||
* <p>This method is intended to report the beginning of the
|
||||
* DOCTYPE declaration; if the document has no DOCTYPE declaration,
|
||||
* this method will not be invoked.</p>
|
||||
*
|
||||
* <p>All declarations reported through
|
||||
* {@link org.xml.sax.DTDHandler DTDHandler} or
|
||||
* {@link org.xml.sax.ext.DeclHandler DeclHandler} events must appear
|
||||
* between the startDTD and {@link #endDTD endDTD} events.
|
||||
* Declarations are assumed to belong to the internal DTD subset
|
||||
* unless they appear between {@link #startEntity startEntity}
|
||||
* and {@link #endEntity endEntity} events. Comments and
|
||||
* processing instructions from the DTD should also be reported
|
||||
* between the startDTD and endDTD events, in their original
|
||||
* order of (logical) occurrence; they are not required to
|
||||
* appear in their correct locations relative to DTDHandler
|
||||
* or DeclHandler events, however.</p>
|
||||
*
|
||||
* <p>Note that the start/endDTD events will appear within
|
||||
* the start/endDocument events from ContentHandler and
|
||||
* before the first
|
||||
* {@link org.xml.sax.ContentHandler#startElement startElement}
|
||||
* event.</p>
|
||||
*
|
||||
* @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.
|
||||
* (Note that this is not resolved against the document
|
||||
* base URI.)
|
||||
* @exception SAXException The application may raise an
|
||||
* exception.
|
||||
* @see #endDTD
|
||||
* @see #startEntity
|
||||
*/
|
||||
public abstract void startDTD (String name, String publicId,
|
||||
String systemId)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the end of DTD declarations.
|
||||
*
|
||||
* <p>This method is intended to report the end of the
|
||||
* DOCTYPE declaration; if the document has no DOCTYPE declaration,
|
||||
* this method will not be invoked.</p>
|
||||
*
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #startDTD
|
||||
*/
|
||||
public abstract void endDTD ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the beginning of some internal and external XML entities.
|
||||
*
|
||||
* <p>The reporting of parameter entities (including
|
||||
* the external DTD subset) is optional, and SAX2 drivers that
|
||||
* report LexicalHandler events may not implement it; you can use the
|
||||
* <code
|
||||
* >http://xml.org/sax/features/lexical-handler/parameter-entities</code>
|
||||
* feature to query or control the reporting of parameter entities.</p>
|
||||
*
|
||||
* <p>General entities are reported with their regular names,
|
||||
* parameter entities have '%' prepended to their names, and
|
||||
* the external DTD subset has the pseudo-entity name "[dtd]".</p>
|
||||
*
|
||||
* <p>When a SAX2 driver is providing these events, all other
|
||||
* events must be properly nested within start/end entity
|
||||
* events. There is no additional requirement that events from
|
||||
* {@link org.xml.sax.ext.DeclHandler DeclHandler} or
|
||||
* {@link org.xml.sax.DTDHandler DTDHandler} be properly ordered.</p>
|
||||
*
|
||||
* <p>Note that skipped entities will be reported through the
|
||||
* {@link org.xml.sax.ContentHandler#skippedEntity skippedEntity}
|
||||
* event, which is part of the ContentHandler interface.</p>
|
||||
*
|
||||
* <p>Because of the streaming event model that SAX uses, some
|
||||
* entity boundaries cannot be reported under any
|
||||
* circumstances:</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>general entities within attribute values</li>
|
||||
* <li>parameter entities within declarations</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>These will be silently expanded, with no indication of where
|
||||
* the original entity boundaries were.</p>
|
||||
*
|
||||
* <p>Note also that the boundaries of character references (which
|
||||
* are not really entities anyway) are not reported.</p>
|
||||
*
|
||||
* <p>All start/endEntity events must be properly nested.
|
||||
*
|
||||
* @param name The name of the entity. If it is a parameter
|
||||
* entity, the name will begin with '%', and if it is the
|
||||
* external DTD subset, it will be "[dtd]".
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #endEntity
|
||||
* @see org.xml.sax.ext.DeclHandler#internalEntityDecl
|
||||
* @see org.xml.sax.ext.DeclHandler#externalEntityDecl
|
||||
*/
|
||||
public abstract void startEntity (String name)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the end of an entity.
|
||||
*
|
||||
* @param name The name of the entity that is ending.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #startEntity
|
||||
*/
|
||||
public abstract void endEntity (String name)
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the start of a CDATA section.
|
||||
*
|
||||
* <p>The contents of the CDATA section will be reported through
|
||||
* the regular {@link org.xml.sax.ContentHandler#characters
|
||||
* characters} event; this event is intended only to report
|
||||
* the boundary.</p>
|
||||
*
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #endCDATA
|
||||
*/
|
||||
public abstract void startCDATA ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report the end of a CDATA section.
|
||||
*
|
||||
* @exception SAXException The application may raise an exception.
|
||||
* @see #startCDATA
|
||||
*/
|
||||
public abstract void endCDATA ()
|
||||
throws SAXException;
|
||||
|
||||
|
||||
/**
|
||||
* Report an XML comment anywhere in the document.
|
||||
*
|
||||
* <p>This callback will be used for comments inside or outside the
|
||||
* document element, including comments in the external DTD
|
||||
* subset (if read). Comments in the DTD must be properly
|
||||
* nested inside start/endDTD and start/endEntity events (if
|
||||
* used).</p>
|
||||
*
|
||||
* @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.
|
||||
* @exception SAXException The application may raise an exception.
|
||||
*/
|
||||
public abstract void comment (char ch[], int start, int length)
|
||||
throws SAXException;
|
||||
|
||||
}
|
||||
|
||||
// end of LexicalHandler.java
|
||||
99
jdkSrc/jdk8/org/xml/sax/ext/Locator2.java
Normal file
99
jdkSrc/jdk8/org/xml/sax/ext/Locator2.java
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// Locator2.java - extended Locator
|
||||
// http://www.saxproject.org
|
||||
// Public Domain: no warranty.
|
||||
// $Id: Locator2.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.Locator;
|
||||
|
||||
|
||||
/**
|
||||
* SAX2 extension to augment the entity information provided
|
||||
* though a {@link Locator}.
|
||||
* If an implementation supports this extension, the Locator
|
||||
* provided in {@link org.xml.sax.ContentHandler#setDocumentLocator
|
||||
* ContentHandler.setDocumentLocator() } will implement this
|
||||
* interface, and the
|
||||
* <em>http://xml.org/sax/features/use-locator2</em> feature
|
||||
* flag will have the value <em>true</em>.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p> XMLReader implementations are not required to support this
|
||||
* information, and it is not part of core-only SAX2 distributions.</p>
|
||||
*
|
||||
* @since SAX 2.0 (extensions 1.1 alpha)
|
||||
* @author David Brownell
|
||||
*/
|
||||
public interface Locator2 extends Locator
|
||||
{
|
||||
/**
|
||||
* Returns the version of XML used for the entity. This will
|
||||
* normally be the identifier from the current entity's
|
||||
* <em><?xml version='...' ...?></em> declaration,
|
||||
* or be defaulted by the parser.
|
||||
*
|
||||
* @return Identifier for the XML version being used to interpret
|
||||
* the entity's text, or null if that information is not yet
|
||||
* available in the current parsing state.
|
||||
*/
|
||||
public String getXMLVersion ();
|
||||
|
||||
/**
|
||||
* Returns the name of the character encoding for the entity.
|
||||
* If the encoding was declared externally (for example, in a MIME
|
||||
* Content-Type header), that will be the name returned. Else if there
|
||||
* was an <em><?xml ...encoding='...'?></em> declaration at
|
||||
* the start of the document, that encoding name will be returned.
|
||||
* Otherwise the encoding will been inferred (normally to be UTF-8, or
|
||||
* some UTF-16 variant), and that inferred name will be returned.
|
||||
*
|
||||
* <p>When an {@link org.xml.sax.InputSource InputSource} is used
|
||||
* to provide an entity's character stream, this method returns the
|
||||
* encoding provided in that input stream.
|
||||
*
|
||||
* <p> Note that some recent W3C specifications require that text
|
||||
* in some encodings be normalized, using Unicode Normalization
|
||||
* Form C, before processing. Such normalization must be performed
|
||||
* by applications, and would normally be triggered based on the
|
||||
* value returned by this method.
|
||||
*
|
||||
* <p> Encoding names may be those used by the underlying JVM,
|
||||
* and comparisons should be case-insensitive.
|
||||
*
|
||||
* @return Name of the character encoding being used to interpret
|
||||
* * the entity's text, or null if this was not provided for a *
|
||||
* character stream passed through an InputSource or is otherwise
|
||||
* not yet available in the current parsing state.
|
||||
*/
|
||||
public String getEncoding ();
|
||||
}
|
||||
125
jdkSrc/jdk8/org/xml/sax/ext/Locator2Impl.java
Normal file
125
jdkSrc/jdk8/org/xml/sax/ext/Locator2Impl.java
Normal file
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// Locator2Impl.java - extended LocatorImpl
|
||||
// http://www.saxproject.org
|
||||
// Public Domain: no warranty.
|
||||
// $Id: Locator2Impl.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
|
||||
|
||||
package org.xml.sax.ext;
|
||||
|
||||
import org.xml.sax.Locator;
|
||||
import org.xml.sax.helpers.LocatorImpl;
|
||||
|
||||
|
||||
/**
|
||||
* SAX2 extension helper for holding additional Entity information,
|
||||
* implementing the {@link Locator2} interface.
|
||||
*
|
||||
* <blockquote>
|
||||
* <em>This module, both source code and documentation, is in the
|
||||
* Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p> This is not part of core-only SAX2 distributions.</p>
|
||||
*
|
||||
* @since SAX 2.0.2
|
||||
* @author David Brownell
|
||||
*/
|
||||
public class Locator2Impl extends LocatorImpl implements Locator2
|
||||
{
|
||||
private String encoding;
|
||||
private String version;
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new, empty Locator2Impl object.
|
||||
* This will not normally be useful, since the main purpose
|
||||
* of this class is to make a snapshot of an existing Locator.
|
||||
*/
|
||||
public Locator2Impl () { }
|
||||
|
||||
/**
|
||||
* Copy an existing Locator or Locator2 object.
|
||||
* If the object implements Locator2, values of the
|
||||
* <em>encoding</em> and <em>version</em>strings are copied,
|
||||
* otherwise they set to <em>null</em>.
|
||||
*
|
||||
* @param locator The existing Locator object.
|
||||
*/
|
||||
public Locator2Impl (Locator locator)
|
||||
{
|
||||
super (locator);
|
||||
if (locator instanceof Locator2) {
|
||||
Locator2 l2 = (Locator2) locator;
|
||||
|
||||
version = l2.getXMLVersion ();
|
||||
encoding = l2.getEncoding ();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Locator2 method implementations
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Returns the current value of the version property.
|
||||
*
|
||||
* @see #setXMLVersion
|
||||
*/
|
||||
public String getXMLVersion ()
|
||||
{ return version; }
|
||||
|
||||
/**
|
||||
* Returns the current value of the encoding property.
|
||||
*
|
||||
* @see #setEncoding
|
||||
*/
|
||||
public String getEncoding ()
|
||||
{ return encoding; }
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Setters
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Assigns the current value of the version property.
|
||||
*
|
||||
* @param version the new "version" value
|
||||
* @see #getXMLVersion
|
||||
*/
|
||||
public void setXMLVersion (String version)
|
||||
{ this.version = version; }
|
||||
|
||||
/**
|
||||
* Assigns the current value of the encoding property.
|
||||
*
|
||||
* @param encoding the new "encoding" value
|
||||
* @see #getEncoding
|
||||
*/
|
||||
public void setEncoding (String encoding)
|
||||
{ this.encoding = encoding; }
|
||||
}
|
||||
Reference in New Issue
Block a user