javax/ 40755 0 0 0 11146172411 7217 5 ustar 0 0 javax/xml/ 40755 0 0 0 11146172417 10025 5 ustar 0 0 javax/xml/datatype/ 40755 0 0 0 11304017200 11620 5 ustar 0 0 javax/xml/namespace/ 40755 0 0 0 11157055203 11754 5 ustar 0 0 javax/xml/parsers/ 40755 0 0 0 11304017200 11464 5 ustar 0 0 javax/xml/stream/ 40755 0 0 0 11146172416 11317 5 ustar 0 0 javax/xml/stream/events/ 40755 0 0 0 11146172414 12621 5 ustar 0 0 javax/xml/stream/util/ 40755 0 0 0 11146172415 12273 5 ustar 0 0 javax/xml/transform/ 40755 0 0 0 11304022204 12020 5 ustar 0 0 javax/xml/transform/dom/ 40755 0 0 0 11146172416 12616 5 ustar 0 0 javax/xml/transform/sax/ 40755 0 0 0 11146172417 12633 5 ustar 0 0 javax/xml/transform/stax/ 40755 0 0 0 11146172416 13016 5 ustar 0 0 javax/xml/transform/stream/ 40755 0 0 0 11271410574 13331 5 ustar 0 0 javax/xml/validation/ 40755 0 0 0 11307760075 12161 5 ustar 0 0 javax/xml/xpath/ 40755 0 0 0 11307760705 11153 5 ustar 0 0 org/ 40755 0 0 0 11146172375 6706 5 ustar 0 0 org/apache/ 40755 0 0 0 11146172375 10127 5 ustar 0 0 org/apache/xmlcommons/ 40755 0 0 0 11310364117 12311 5 ustar 0 0 org/w3c/ 40755 0 0 0 11146172407 7376 5 ustar 0 0 org/w3c/css/ 40755 0 0 0 11146172407 10166 5 ustar 0 0 org/w3c/css/sac/ 40755 0 0 0 11146172410 10726 5 ustar 0 0 org/w3c/css/sac/helpers/ 40755 0 0 0 11146172410 12370 5 ustar 0 0 org/w3c/dom/ 40755 0 0 0 11146174440 10154 5 ustar 0 0 org/w3c/dom/bootstrap/ 40755 0 0 0 11146172404 12167 5 ustar 0 0 org/w3c/dom/css/ 40755 0 0 0 11146172406 10744 5 ustar 0 0 org/w3c/dom/events/ 40755 0 0 0 11146172404 11456 5 ustar 0 0 org/w3c/dom/html/ 40755 0 0 0 11146172403 11115 5 ustar 0 0 org/w3c/dom/ls/ 40755 0 0 0 11146172405 10571 5 ustar 0 0 org/w3c/dom/ranges/ 40755 0 0 0 11146172405 11432 5 ustar 0 0 org/w3c/dom/smil/ 40755 0 0 0 11146172406 11120 5 ustar 0 0 org/w3c/dom/stylesheets/ 40755 0 0 0 11146172407 12531 5 ustar 0 0 org/w3c/dom/svg/ 40755 0 0 0 11146172401 10746 5 ustar 0 0 org/w3c/dom/traversal/ 40755 0 0 0 11146172406 12157 5 ustar 0 0 org/w3c/dom/views/ 40755 0 0 0 11146172406 11311 5 ustar 0 0 org/w3c/dom/xpath/ 40755 0 0 0 11146172405 11277 5 ustar 0 0 org/xml/ 40755 0 0 0 11146172374 7505 5 ustar 0 0 org/xml/sax/ 40755 0 0 0 11146172375 10301 5 ustar 0 0 org/xml/sax/ext/ 40755 0 0 0 11146172374 11100 5 ustar 0 0 org/xml/sax/helpers/ 40755 0 0 0 11146172375 11743 5 ustar 0 0 javax/xml/XMLConstants.java 100644 0 0 16233 11146172417 13347 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLConstants.java 584477 2007-10-14 02:44:03Z mrglavas $ package javax.xml; /** *
Utility class to contain basic XML values as constants.
* * @author Jeff Suttor * @version $Revision: 584477 $, $Date: 2007-10-13 22:44:03 -0400 (Sat, 13 Oct 2007) $ * @see Extensible Markup Language (XML) 1.1 * @see Extensible Markup Language (XML) 1.0 (Second Edition) * @see XML 1.0 Second Edition Specification Errata * @see Namespaces in XML 1.1 * @see Namespaces in XML * @see Namespaces in XML Errata * @see XML Schema Part 1: Structures * @since 1.5 **/ public final class XMLConstants { /** *Private constructor to prevent instantiation.
*/ private XMLConstants() { } /** *Namespace URI to use to represent that there is no Namespace.
* *Defined by the Namespace specification to be "".
* * @see * Namespaces in XML, 5.2 Namespace Defaulting */ public static final String NULL_NS_URI = ""; /** *Prefix to use to represent the default XML Namespace.
* *Defined by the XML specification to be "".
* * @see * Namespaces in XML, 3. Qualified Names */ public static final String DEFAULT_NS_PREFIX = ""; /** *The official XML Namespace name URI.
* *Defined by the XML specification to be
* "http://www.w3.org/XML/1998/namespace
".
The official XML Namespace prefix.
* *Defined by the XML specification to be "xml
".
The official XML attribute used for specifying XML Namespace * declarations, {@link #XMLNS_ATTRIBUTE * XMLConstants.XMLNS_ATTRIBUTE}, Namespace name URI.
* *Defined by the XML specification to be
* "http://www.w3.org/2000/xmlns/
".
The official XML attribute used for specifying XML Namespace * declarations.
* *It is NOT valid to use as a
* prefix. Defined by the XML specification to be
* "xmlns
".
W3C XML Schema Namespace URI.
* *Defined to be "http://www.w3.org/2001/XMLSchema
".
*
* @see
* XML Schema Part 1:
* Structures, 2.6 Schema-Related Markup in Documents Being Validated
*/
public static final String W3C_XML_SCHEMA_NS_URI =
"http://www.w3.org/2001/XMLSchema";
/**
*
W3C XML Schema Instance Namespace URI.
* *Defined to be "http://www.w3.org/2001/XMLSchema-instance
".
W3C XPath Datatype Namespace URI.
* *Defined to be "http://www.w3.org/2003/11/xpath-datatypes
".
XML Document Type Declaration Namespace URI as an arbitrary value.
* *Since not formally defined by any existing standard, arbitrarily define to be "http://www.w3.org/TR/REC-xml
".
*/
public static final String XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml";
/**
*
RELAX NG Namespace URI.
* *Defined to be "http://relaxng.org/ns/structure/1.0
".
Feature for secure processing.
* *true
instructs the implementation to process XML securely.
* This may set limits on XML constructs to avoid conditions such as denial of service attacks.
* false
instructs the implementation to process XML according to the letter of the XML specifications
* ignoring security issues such as limits on XML constructs to avoid conditions such as denial of service attacks.
* Indicates a serious configuration error.
* * @author Jeff Suttor * @version $Revision: 569987 $, $Date: 2007-08-27 00:08:46 -0400 (Mon, 27 Aug 2007) $ * @since 1.5 */ public class DatatypeConfigurationException extends Exception { /** Stream Unique Identifier. */ private static final long serialVersionUID = -1699373159027047238L; /** This field is required to store the cause on JDK 1.3 and below. */ private Throwable causeOnJDK13OrBelow; /** Indicates whether this class is being used in a JDK 1.4 context. */ private transient boolean isJDK14OrAbove = false; /** *Create a new DatatypeConfigurationException
with
* no specified detail message and cause.
Create a new DatatypeConfigurationException
with
* the specified detail message.
Create a new DatatypeConfigurationException
with
* the specified detail message and cause.
null
value is permitted, and indicates that the cause is nonexistent or unknown.
*/
public DatatypeConfigurationException(String message, Throwable cause) {
super(message);
initCauseByReflection(cause);
}
/**
* Create a new DatatypeConfigurationException
with
* the specified cause.
null
value is permitted, and indicates that the cause is nonexistent or unknown.
*/
public DatatypeConfigurationException(Throwable cause) {
super(cause == null ? null : cause.toString());
initCauseByReflection(cause);
}
/**
* Print the the trace of methods from where the error
* originated. This will trace all nested exception
* objects, as well as this object.
*/
public void printStackTrace() {
if (!isJDK14OrAbove && causeOnJDK13OrBelow != null) {
printStackTrace0(new PrintWriter(System.err, true));
}
else {
super.printStackTrace();
}
}
/**
* Print the the trace of methods from where the error
* originated. This will trace all nested exception
* objects, as well as this object.
* @param s The stream where the dump will be sent to.
*/
public void printStackTrace(PrintStream s) {
if (!isJDK14OrAbove && causeOnJDK13OrBelow != null) {
printStackTrace0(new PrintWriter(s));
}
else {
super.printStackTrace(s);
}
}
/**
* Print the the trace of methods from where the error
* originated. This will trace all nested exception
* objects, as well as this object.
* @param s The writer where the dump will be sent to.
*/
public void printStackTrace(PrintWriter s) {
if (!isJDK14OrAbove && causeOnJDK13OrBelow != null) {
printStackTrace0(s);
}
else {
super.printStackTrace(s);
}
}
private void printStackTrace0(PrintWriter s) {
causeOnJDK13OrBelow.printStackTrace(s);
s.println("------------------------------------------");
super.printStackTrace(s);
}
private void initCauseByReflection(Throwable cause) {
causeOnJDK13OrBelow = cause;
try {
Method m = this.getClass().getMethod("initCause", new Class[] {Throwable.class});
m.invoke(this, new Object[] {cause});
isJDK14OrAbove = true;
}
// Ignore exception
catch (Exception e) {}
}
private void readObject(ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
try {
Method m1 = this.getClass().getMethod("getCause", new Class[] {});
Throwable cause = (Throwable) m1.invoke(this, new Object[] {});
if (causeOnJDK13OrBelow == null) {
causeOnJDK13OrBelow = cause;
}
else if (cause == null) {
Method m2 = this.getClass().getMethod("initCause", new Class[] {Throwable.class});
m2.invoke(this, new Object[] {causeOnJDK13OrBelow});
}
isJDK14OrAbove = true;
}
// Ignore exception
catch (Exception e) {}
}
}
javax/xml/datatype/DatatypeConstants.java 100644 0 0 16521 11146172413 16271 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: DatatypeConstants.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.datatype;
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
/**
* Utility class to contain basic Datatype values as constants.
* * @author Jeff Suttor * @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $ * @since 1.5 */ public final class DatatypeConstants { /** *Private constructor to prevent instantiation.
*/ private DatatypeConstants() { } /** * Value for first month of year. */ public static final int JANUARY = 1; /** * Value for second month of year. */ public static final int FEBRUARY = 2; /** * Value for third month of year. */ public static final int MARCH = 3; /** * Value for fourth month of year. */ public static final int APRIL = 4; /** * Value for fifth month of year. */ public static final int MAY = 5; /** * Value for sixth month of year. */ public static final int JUNE = 6; /** * Value for seventh month of year. */ public static final int JULY = 7; /** * Value for eighth month of year. */ public static final int AUGUST = 8; /** * Value for ninth month of year. */ public static final int SEPTEMBER = 9; /** * Value for tenth month of year. */ public static final int OCTOBER = 10; /** * Value for eleven month of year. */ public static final int NOVEMBER = 11; /** * Value for twelve month of year. */ public static final int DECEMBER = 12; /** *Comparison result.
*/ public static final int LESSER = -1; /** *Comparison result.
*/ public static final int EQUAL = 0; /** *Comparison result.
*/ public static final int GREATER = 1; /** *Comparison result.
*/ public static final int INDETERMINATE = 2; /** * Designation that an "int" field is not set. */ public static final int FIELD_UNDEFINED = Integer.MIN_VALUE; /** *A constant that represents the years field.
*/ public static final Field YEARS = new Field("YEARS", 0); /** *A constant that represents the months field.
*/ public static final Field MONTHS = new Field("MONTHS", 1); /** *A constant that represents the days field.
*/ public static final Field DAYS = new Field("DAYS", 2); /** *A constant that represents the hours field.
*/ public static final Field HOURS = new Field("HOURS", 3); /** *A constant that represents the minutes field.
*/ public static final Field MINUTES = new Field("MINUTES", 4); /** *A constant that represents the seconds field.
*/ public static final Field SECONDS = new Field("SECONDS", 5); /** * Type-safe enum class that represents six fields * of the {@link Duration} class. */ public static final class Field { /** *String
representation of
Unique id of the field.
* *This value allows the {@link Duration} class to use switch * statements to process fields.
*/ private final int id; /** *Construct a Field
with specified values.
String
representation of Field
* @param id int
representation of Field
*/
private Field(final String str, final int id) {
this.str = str;
this.id = id;
}
/**
* Returns a field name in English. This method
* is intended to be used for debugging/diagnosis
* and not for display to end-users.
*
* @return
* a non-null valid String constant.
*/
public String toString() { return str; }
/**
* Get id of this Field.
* * @return Id of field. */ public int getId() { return id; } } /** *Fully qualified name for W3C XML Schema 1.0 datatype dateTime
.
Fully qualified name for W3C XML Schema 1.0 datatype time
.
Fully qualified name for W3C XML Schema 1.0 datatype date
.
Fully qualified name for W3C XML Schema 1.0 datatype gYearMonth
.
Fully qualified name for W3C XML Schema 1.0 datatype gMonthDay
.
Fully qualified name for W3C XML Schema 1.0 datatype gYear
.
Fully qualified name for W3C XML Schema 1.0 datatype gMonth
.
Fully qualified name for W3C XML Schema 1.0 datatype gDay
.
Fully qualified name for W3C XML Schema datatype duration
.
Fully qualified name for XQuery 1.0 and XPath 2.0 datatype dayTimeDuration
.
Fully qualified name for XQuery 1.0 and XPath 2.0 datatype yearMonthDuration
.
Factory that creates new javax.xml.datatype
Object
s that map XML to/from Java Object
s.
{@link #newInstance()} is used to create a new DatatypeFactory
.
* The following implementation resolution mechanisms are used in the following order:
javax.xml.datatype.DatatypeFactory
",
* exists, a class with the name of the property's value is instantiated.
* Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.
* Object
.
* The Properties
Object
is then queried for the property as documented in the prior step
* and processed as documented in the prior step.
* META-INF/services/java.xml.datatype.DatatypeFactory
.
* Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.
* Class
specified by
* {@link #DATATYPEFACTORY_IMPLEMENTATION_CLASS}, "javax.xml.datatype.DatatypeFactoryImpl
".
* Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.
* Default property name as defined in JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
* *Default value is javax.xml.datatype.DatatypeFactory
.
Default implementation class name as defined in JSR 206: Java(TM) API for XML Processing (JAXP) 1.3.
* *Default value is org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl
.
Protected constructor to prevent instantiation outside of package.
* *Use {@link #newInstance()} to create a DatatypeFactory
.
Obtain a new instance of a DatatypeFactory
.
The implementation resolution mechanisms are defined in this
* Class
's documentation.
DocumentBuilderFactory
*
* @throws DatatypeConfigurationException If the implementation is not
* available or cannot be instantiated.
*/
public static DatatypeFactory newInstance()
throws DatatypeConfigurationException {
try {
return (DatatypeFactory) FactoryFinder.find(
/* The default property name according to the JAXP spec */
DATATYPEFACTORY_PROPERTY,
/* The fallback implementation class name */
DATATYPEFACTORY_IMPLEMENTATION_CLASS);
}
catch (FactoryFinder.ConfigurationError e) {
throw new DatatypeConfigurationException(e.getMessage(), e.getException());
}
}
/**
* @return New instance of a DocumentBuilderFactory
*
* @throws DatatypeConfigurationException If the implementation is not
* available or cannot be instantiated.
*/
public static DatatypeFactory newInstance(String factoryClassName,
ClassLoader classLoader) throws DatatypeConfigurationException {
if (factoryClassName == null) {
throw new DatatypeConfigurationException("factoryClassName cannot be null.");
}
if (classLoader == null) {
classLoader = SecuritySupport.getContextClassLoader();
}
try {
return (DatatypeFactory) FactoryFinder.newInstance(factoryClassName, classLoader);
}
catch (FactoryFinder.ConfigurationError e) {
throw new DatatypeConfigurationException(e.getMessage(), e.getException());
}
}
/**
* Obtain a new instance of a Duration
* specifying the Duration
as its string representation, "PnYnMnDTnHnMnS",
* as defined in XML Schema 1.0 section 3.2.6.1.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration
as:
* duration represents a duration of time. * The value space of duration is a six-dimensional space where the coordinates designate the * Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively. * These components are ordered in their significance by their order of appearance i.e. as * year, month, day, hour, minute, and second. **
All six values are set and available from the created {@link Duration}
* *The XML Schema specification states that values can be of an arbitrary size. * Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. * An {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits * if implementation capacities are exceeded.
* * @param lexicalRepresentationString
representation of a Duration
.
*
* @return New Duration
created from parsing the lexicalRepresentation
.
*
* @throws IllegalArgumentException If lexicalRepresentation
is not a valid representation of a Duration
.
* @throws UnsupportedOperationException If implementation cannot support requested values.
* @throws NullPointerException if lexicalRepresentation
is null
.
*/
public abstract Duration newDuration(final String lexicalRepresentation);
/**
* Obtain a new instance of a Duration
* specifying the Duration
as milliseconds.
XML Schema Part 2: Datatypes, 3.2.6 duration, defines duration
as:
* duration represents a duration of time. * The value space of duration is a six-dimensional space where the coordinates designate the * Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively. * These components are ordered in their significance by their order of appearance i.e. as * year, month, day, hour, minute, and second. **
All six values are set by computing their values from the specified milliseconds
* and are available using the get
methods of the created {@link Duration}.
* The values conform to and are defined by:
The default start instance is defined by {@link GregorianCalendar}'s use of the start of the epoch: i.e., * {@link java.util.Calendar#YEAR} = 1970, * {@link java.util.Calendar#MONTH} = {@link java.util.Calendar#JANUARY}, * {@link java.util.Calendar#DATE} = 1, etc. * This is important as there are variations in the Gregorian Calendar, * e.g. leap years have different days in the month = {@link java.util.Calendar#FEBRUARY} * so the result of {@link Duration#getMonths()} and {@link Duration#getDays()} can be influenced.
* * @param durationInMilliSeconds Duration in milliseconds to create. * * @return NewDuration
representing durationInMilliSeconds
.
*/
public abstract Duration newDuration(final long durationInMilliSeconds);
/**
* Obtain a new instance of a Duration
* specifying the Duration
as isPositive, years, months, days, hours, minutes, seconds.
The XML Schema specification states that values can be of an arbitrary size. * Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. * An {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits * if implementation capacities are exceeded.
* *A null
value indicates that field is not set.
false
to create a negative duration. When the length
* of the duration is zero, this parameter will be ignored.
* @param years of this Duration
* @param months of this Duration
* @param days of this Duration
* @param hours of this Duration
* @param minutes of this Duration
* @param seconds of this Duration
*
* @return New Duration
created from the specified values.
*
* @throws IllegalArgumentException If values are not a valid representation of a Duration
.
* @throws UnsupportedOperationException If implementation cannot support requested values.
*/
public abstract Duration newDuration(
final boolean isPositive,
final BigInteger years,
final BigInteger months,
final BigInteger days,
final BigInteger hours,
final BigInteger minutes,
final BigDecimal seconds);
/**
* Obtain a new instance of a Duration
* specifying the Duration
as isPositive, years, months, days, hours, minutes, seconds.
A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param isPositive Set tofalse
to create a negative duration. When the length
* of the duration is zero, this parameter will be ignored.
* @param years of this Duration
* @param months of this Duration
* @param days of this Duration
* @param hours of this Duration
* @param minutes of this Duration
* @param seconds of this Duration
*
* @return New Duration
created from the specified values.
*
* @throws IllegalArgumentException If values are not a valid representation of a Duration
.
*
* @see #newDuration(
* boolean isPositive,
* BigInteger years,
* BigInteger months,
* BigInteger days,
* BigInteger hours,
* BigInteger minutes,
* BigDecimal seconds)
*/
public Duration newDuration(
final boolean isPositive,
final int years,
final int months,
final int days,
final int hours,
final int minutes,
final int seconds) {
// years may not be set
BigInteger realYears = (years != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) years) : null;
// months may not be set
BigInteger realMonths = (months != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) months) : null;
// days may not be set
BigInteger realDays = (days != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) days) : null;
// hours may not be set
BigInteger realHours = (hours != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) hours) : null;
// minutes may not be set
BigInteger realMinutes = (minutes != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) minutes) : null;
// seconds may not be set
BigDecimal realSeconds = (seconds != DatatypeConstants.FIELD_UNDEFINED) ? BigDecimal.valueOf((long) seconds) : null;
return newDuration(
isPositive,
realYears,
realMonths,
realDays,
realHours,
realMinutes,
realSeconds
);
}
/**
* Create a Duration
of type xdt:dayTimeDuration
by parsing its String
representation,
* "PnDTnHnMnS",
* XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
* whose lexical representation contains only day, hour, minute, and second components.
* This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
All four values are set and available from the created {@link Duration}
* *The XML Schema specification states that values can be of an arbitrary size. * Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. * An {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits * if implementation capacities are exceeded.
* * @param lexicalRepresentation Lexical representation of a duration. * * @return NewDuration
created using the specified lexicalRepresentation
.
*
* @throws IllegalArgumentException If the given string does not conform to the aforementioned specification.
* @throws UnsupportedOperationException If implementation cannot support requested values.
* @throws NullPointerException If lexicalRepresentation
is null
.
*/
public Duration newDurationDayTime(final String lexicalRepresentation) {
if (lexicalRepresentation == null) {
throw new NullPointerException("The lexical representation cannot be null.");
}
// The lexical representation must match the pattern [^YM]*(T.*)?
int pos = lexicalRepresentation.indexOf('T');
int length = (pos >= 0) ? pos : lexicalRepresentation.length();
for (int i = 0; i < length; ++i) {
char c = lexicalRepresentation.charAt(i);
if (c == 'Y' || c == 'M') {
throw new IllegalArgumentException("Invalid dayTimeDuration value: " + lexicalRepresentation);
}
}
return newDuration(lexicalRepresentation);
}
/**
* Create a Duration
of type xdt:dayTimeDuration
using the specified milliseconds as defined in
*
* XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
* whose lexical representation contains only day, hour, minute, and second components.
* This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
All four values are set by computing their values from the specified milliseconds
* and are available using the get
methods of the created {@link Duration}.
* The values conform to and are defined by:
The default start instance is defined by {@link GregorianCalendar}'s use of the start of the epoch: i.e., * {@link java.util.Calendar#YEAR} = 1970, * {@link java.util.Calendar#MONTH} = {@link java.util.Calendar#JANUARY}, * {@link java.util.Calendar#DATE} = 1, etc. * This is important as there are variations in the Gregorian Calendar, * e.g. leap years have different days in the month = {@link java.util.Calendar#FEBRUARY} * so the result of {@link Duration#getDays()} can be influenced.
* *Any remaining milliseconds after determining the day, hour, minute and second are discarded.
* * @param durationInMilliseconds Milliseconds ofDuration
to create.
*
* @return New Duration
created with the specified durationInMilliseconds
.
*
* @see
* XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration
*/
public Duration newDurationDayTime(final long durationInMilliseconds) {
long _durationInMilliseconds = durationInMilliseconds;
if (_durationInMilliseconds == 0) {
return newDuration(true, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, 0, 0, 0, 0);
}
boolean tooLong = false;
final boolean isPositive;
if (_durationInMilliseconds < 0) {
isPositive = false;
if (_durationInMilliseconds == Long.MIN_VALUE) {
_durationInMilliseconds++;
tooLong = true;
}
_durationInMilliseconds *= -1;
}
else {
isPositive = true;
}
long val = _durationInMilliseconds;
int milliseconds = (int) (val % 60000L); // 60000 milliseconds per minute
if (tooLong) {
++milliseconds;
}
if (milliseconds % 1000 == 0) {
int seconds = milliseconds / 1000;
val = val / 60000L;
int minutes = (int) (val % 60L); // 60 minutes per hour
val = val / 60L;
int hours = (int) (val % 24L); // 24 hours per day
long days = val / 24L;
if (days <= ((long) Integer.MAX_VALUE)) {
return newDuration(isPositive, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, (int) days, hours, minutes, seconds);
}
else {
return newDuration(isPositive, null, null,
BigInteger.valueOf(days), BigInteger.valueOf(hours),
BigInteger.valueOf(minutes), BigDecimal.valueOf(milliseconds, 3));
}
}
BigDecimal seconds = BigDecimal.valueOf(milliseconds, 3);
val = val / 60000L;
BigInteger minutes = BigInteger.valueOf(val % 60L); // 60 minutes per hour
val = val / 60L;
BigInteger hours = BigInteger.valueOf(val % 24L); // 24 hours per day
val = val / 24L;
BigInteger days = BigInteger.valueOf(val);
return newDuration(isPositive, null, null, days, hours, minutes, seconds);
}
/**
* Create a Duration
of type xdt:dayTimeDuration
using the specified
* day
, hour
, minute
and second
as defined in
*
* XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
* whose lexical representation contains only day, hour, minute, and second components.
* This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
The XML Schema specification states that values can be of an arbitrary size. * Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. * An {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits * if implementation capacities are exceeded.
* *A null
value indicates that field is not set.
false
to create a negative duration. When the length
* of the duration is zero, this parameter will be ignored.
* @param day Day of Duration
.
* @param hour Hour of Duration
.
* @param minute Minute of Duration
.
* @param second Second of Duration
.
*
* @return New Duration
created with the specified day
, hour
, minute
* and second
.
*
* @throws IllegalArgumentException If any values would create an invalid Duration
.
* @throws UnsupportedOperationException If implementation cannot support requested values.
*/
public Duration newDurationDayTime(
final boolean isPositive,
final BigInteger day,
final BigInteger hour,
final BigInteger minute,
final BigInteger second) {
return newDuration(
isPositive,
null, // years
null, // months
day,
hour,
minute,
(second != null)? new BigDecimal(second):null
);
}
/**
* Create a Duration
of type xdt:dayTimeDuration
using the specified
* day
, hour
, minute
and second
as defined in
*
* XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration.
The datatype xdt:dayTimeDuration
is a subtype of xs:duration
* whose lexical representation contains only day, hour, minute, and second components.
* This datatype resides in the namespace http://www.w3.org/2003/11/xpath-datatypes
.
A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param isPositive Set tofalse
to create a negative duration. When the length
* of the duration is zero, this parameter will be ignored.
* @param day Day of Duration
.
* @param hour Hour of Duration
.
* @param minute Minute of Duration
.
* @param second Second of Duration
.
*
* @return New Duration
created with the specified day
, hour
, minute
* and second
.
*
* @throws IllegalArgumentException If any values would create an invalid Duration
.
*/
public Duration newDurationDayTime(
final boolean isPositive,
final int day,
final int hour,
final int minute,
final int second) {
return newDuration(isPositive,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
day, hour, minute, second);
}
/**
* Create a Duration
of type xdt:yearMonthDuration
by parsing its String
representation,
* "PnYnM",
* XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The datatype xdt:yearMonthDuration
is a subtype of xs:duration
* whose lexical representation contains only year and month components.
* This datatype resides in the namespace {@link javax.xml.XMLConstants#W3C_XPATH_DATATYPE_NS_URI}.
Both values are set and available from the created {@link Duration}
* *The XML Schema specification states that values can be of an arbitrary size. * Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. * An {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits * if implementation capacities are exceeded.
* * @param lexicalRepresentation Lexical representation of a duration. * * @return NewDuration
created using the specified lexicalRepresentation
.
*
* @throws IllegalArgumentException If the lexicalRepresentation
does not conform to the specification.
* @throws UnsupportedOperationException If implementation cannot support requested values.
* @throws NullPointerException If lexicalRepresentation
is null
.
*/
public Duration newDurationYearMonth(final String lexicalRepresentation) {
if (lexicalRepresentation == null) {
throw new NullPointerException("The lexical representation cannot be null.");
}
// The lexical representation must match the pattern [^DT]*.
int length = lexicalRepresentation.length();
for (int i = 0; i < length; ++i) {
char c = lexicalRepresentation.charAt(i);
if (c == 'D' || c == 'T') {
throw new IllegalArgumentException("Invalid yearMonthDuration value: " + lexicalRepresentation);
}
}
return newDuration(lexicalRepresentation);
}
/**
* Create a Duration
of type xdt:yearMonthDuration
using the specified milliseconds as defined in
*
* XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The datatype xdt:yearMonthDuration
is a subtype of xs:duration
* whose lexical representation contains only year and month components.
* This datatype resides in the namespace {@link javax.xml.XMLConstants#W3C_XPATH_DATATYPE_NS_URI}.
Both values are set by computing their values from the specified milliseconds
* and are available using the get
methods of the created {@link Duration}.
* The values conform to and are defined by:
The default start instance is defined by {@link GregorianCalendar}'s use of the start of the epoch: i.e., * {@link java.util.Calendar#YEAR} = 1970, * {@link java.util.Calendar#MONTH} = {@link java.util.Calendar#JANUARY}, * {@link java.util.Calendar#DATE} = 1, etc. * This is important as there are variations in the Gregorian Calendar, * e.g. leap years have different days in the month = {@link java.util.Calendar#FEBRUARY} * so the result of {@link Duration#getMonths()} can be influenced.
* *Any remaining milliseconds after determining the year and month are discarded.
* * @param durationInMilliseconds Milliseconds ofDuration
to create.
*
* @return New Duration
created using the specified durationInMilliseconds
.
*/
public Duration newDurationYearMonth(final long durationInMilliseconds) {
return newDuration(durationInMilliseconds);
}
/**
* Create a Duration
of type xdt:yearMonthDuration
using the specified
* year
and month
as defined in
*
* XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
The XML Schema specification states that values can be of an arbitrary size. * Implementations may chose not to or be incapable of supporting arbitrarily large and/or small values. * An {@link UnsupportedOperationException} will be thrown with a message indicating implementation limits * if implementation capacities are exceeded.
* *A null
value indicates that field is not set.
false
to create a negative duration. When the length
* of the duration is zero, this parameter will be ignored.
* @param year Year of Duration
.
* @param month Month of Duration
.
*
* @return New Duration
created using the specified year
and month
.
*
* @throws IllegalArgumentException If any values would create an invalid Duration
.
* @throws UnsupportedOperationException If implementation cannot support requested values.
*/
public Duration newDurationYearMonth(
final boolean isPositive,
final BigInteger year,
final BigInteger month) {
return newDuration(
isPositive,
year,
month,
null, // days
null, // hours
null, // minutes
null // seconds
);
}
/**
* Create a Duration
of type xdt:yearMonthDuration
using the specified
* year
and month
as defined in
*
* XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration.
A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param isPositive Set tofalse
to create a negative duration. When the length
* of the duration is zero, this parameter will be ignored.
* @param year Year of Duration
.
* @param month Month of Duration
.
*
* @return New Duration
created using the specified year
and month
.
*
* @throws IllegalArgumentException If any values would create an invalid Duration
.
*/
public Duration newDurationYearMonth(
final boolean isPositive,
final int year,
final int month) {
return newDuration(isPositive, year, month,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED);
}
/**
* Create a new instance of an XMLGregorianCalendar
.
All date/time datatype fields set to {@link DatatypeConstants#FIELD_UNDEFINED} or null.
* * @return NewXMLGregorianCalendar
with all date/time datatype fields set to
* {@link DatatypeConstants#FIELD_UNDEFINED} or null.
*/
public abstract XMLGregorianCalendar newXMLGregorianCalendar();
/**
* Create a new XMLGregorianCalendar by parsing the String as a lexical representation.
* *Parsing the lexical string representation is defined in * XML Schema 1.0 Part 2, Section 3.2.[7-14].1, * Lexical Representation.
* *The string representation may not have any leading and trailing whitespaces.
* *The parsing is done field by field so that * the following holds for any lexically correct String x:
** newXMLGregorianCalendar(x).toXMLFormat().equals(x) **
Except for the noted lexical/canonical representation mismatches * listed in * XML Schema 1.0 errata, Section 3.2.7.2.
* * @param lexicalRepresentation Lexical representation of one the eight XML Schema date/time datatypes. * * @returnXMLGregorianCalendar
created from the lexicalRepresentation
.
*
* @throws IllegalArgumentException If the lexicalRepresentation
is not a valid XMLGregorianCalendar
.
* @throws NullPointerException If lexicalRepresentation
is null
.
*/
public abstract XMLGregorianCalendar newXMLGregorianCalendar(final String lexicalRepresentation);
/**
* Create an XMLGregorianCalendar
from a {@link GregorianCalendar}.
* Field by Field Conversion from * {@link GregorianCalendar} to an {@link XMLGregorianCalendar} * | *|
---|---|
java.util.GregorianCalendar field |
* javax.xml.datatype.XMLGregorianCalendar field |
*
ERA == GregorianCalendar.BC ? -YEAR : YEAR |
* {@link XMLGregorianCalendar#setYear(int year)} | *
MONTH + 1 |
* {@link XMLGregorianCalendar#setMonth(int month)} | *
DAY_OF_MONTH |
* {@link XMLGregorianCalendar#setDay(int day)} | *
HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND |
* {@link XMLGregorianCalendar#setTime(int hour, int minute, int second, BigDecimal fractional)} | *
* (ZONE_OFFSET + DST_OFFSET) / (60*1000) * (in minutes) * |
* {@link XMLGregorianCalendar#setTimezone(int offset)}* * | *
*conversion loss of information. It is not possible to represent
* a java.util.GregorianCalendar
daylight savings timezone id in the
* XML Schema 1.0 date/time datatype representation.
To compute the return value's TimeZone
field,
*
this.getTimezone() != FIELD_UNDEFINED
,
* create a java.util.TimeZone
with a custom timezone id
* using the this.getTimezone()
.GregorianCalendar
default timezone value
* for the host is defined as specified by
* java.util.TimeZone.getDefault()
.java.util.GregorianCalendar
used to create XMLGregorianCalendar
*
* @return XMLGregorianCalendar
created from java.util.GregorianCalendar
*
* @throws NullPointerException If cal
is null
.
*/
public abstract XMLGregorianCalendar newXMLGregorianCalendar(final GregorianCalendar cal);
/**
* Constructor allowing for complete value spaces allowed by
* W3C XML Schema 1.0 recommendation for xsd:dateTime and related
* builtin datatypes. Note that year
parameter supports
* arbitrarily large numbers and fractionalSecond has infinite
* precision.
A null
value indicates that field is not set.
XMLGregorianCalendar
to be created.
* @param month of XMLGregorianCalendar
to be created.
* @param day of XMLGregorianCalendar
to be created.
* @param hour of XMLGregorianCalendar
to be created.
* @param minute of XMLGregorianCalendar
to be created.
* @param second of XMLGregorianCalendar
to be created.
* @param fractionalSecond of XMLGregorianCalendar
to be created.
* @param timezone of XMLGregorianCalendar
to be created.
*
* @return XMLGregorianCalendar
created from specified values.
*
* @throws IllegalArgumentException If any individual parameter's value is outside the maximum value constraint for the field
* as determined by the Date/Time Data Mapping table in {@link XMLGregorianCalendar}
* or if the composite values constitute an invalid XMLGregorianCalendar
instance
* as determined by {@link XMLGregorianCalendar#isValid()}.
*/
public abstract XMLGregorianCalendar newXMLGregorianCalendar(
final BigInteger year,
final int month,
final int day,
final int hour,
final int minute,
final int second,
final BigDecimal fractionalSecond,
final int timezone);
/**
* Constructor of value spaces that a
* java.util.GregorianCalendar
instance would need to convert to an
* XMLGregorianCalendar
instance.
XMLGregorianCalendar eon
and
* fractionalSecond
are set to null
A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param year ofXMLGregorianCalendar
to be created.
* @param month of XMLGregorianCalendar
to be created.
* @param day of XMLGregorianCalendar
to be created.
* @param hour of XMLGregorianCalendar
to be created.
* @param minute of XMLGregorianCalendar
to be created.
* @param second of XMLGregorianCalendar
to be created.
* @param millisecond of XMLGregorianCalendar
to be created.
* @param timezone of XMLGregorianCalendar
to be created.
*
* @return XMLGregorianCalendar
created from specified values.
*
* @throws IllegalArgumentException If any individual parameter's value is outside the maximum value constraint for the field
* as determined by the Date/Time Data Mapping table in {@link XMLGregorianCalendar}
* or if the composite values constitute an invalid XMLGregorianCalendar
instance
* as determined by {@link XMLGregorianCalendar#isValid()}.
*/
public XMLGregorianCalendar newXMLGregorianCalendar(
final int year,
final int month,
final int day,
final int hour,
final int minute,
final int second,
final int millisecond,
final int timezone) {
// year may be undefined
BigInteger realYear = (year != DatatypeConstants.FIELD_UNDEFINED) ? BigInteger.valueOf((long) year) : null;
// millisecond may be undefined
// millisecond must be >= 0 millisecond <= 1000
BigDecimal realMillisecond = null; // undefined value
if (millisecond != DatatypeConstants.FIELD_UNDEFINED) {
if (millisecond < 0 || millisecond > 1000) {
throw new IllegalArgumentException(
"javax.xml.datatype.DatatypeFactory#newXMLGregorianCalendar("
+ "int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)"
+ "with invalid millisecond: " + millisecond
);
}
realMillisecond = BigDecimal.valueOf((long) millisecond, 3);
}
return newXMLGregorianCalendar(
realYear,
month,
day,
hour,
minute,
second,
realMillisecond,
timezone
);
}
/**
* Create a Java representation of XML Schema builtin datatype date
or g*
.
For example, an instance of gYear
can be created invoking this factory
* with month
and day
parameters set to
* {@link DatatypeConstants#FIELD_UNDEFINED}.
A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param year ofXMLGregorianCalendar
to be created.
* @param month of XMLGregorianCalendar
to be created.
* @param day of XMLGregorianCalendar
to be created.
* @param timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set.
*
* @return XMLGregorianCalendar
created from parameter values.
*
* @see DatatypeConstants#FIELD_UNDEFINED
*
* @throws IllegalArgumentException If any individual parameter's value is outside the maximum value constraint for the field
* as determined by the Date/Time Data Mapping table in {@link XMLGregorianCalendar}
* or if the composite values constitute an invalid XMLGregorianCalendar
instance
* as determined by {@link XMLGregorianCalendar#isValid()}.
*/
public XMLGregorianCalendar newXMLGregorianCalendarDate(
final int year,
final int month,
final int day,
final int timezone) {
return newXMLGregorianCalendar(
year,
month,
day,
DatatypeConstants.FIELD_UNDEFINED, // hour
DatatypeConstants.FIELD_UNDEFINED, // minute
DatatypeConstants.FIELD_UNDEFINED, // second
DatatypeConstants.FIELD_UNDEFINED, // millisecond
timezone);
}
/**
* Create a Java instance of XML Schema builtin datatype time
.
A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param hours number of hours * @param minutes number of minutes * @param seconds number of seconds * @param timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set. * * @returnXMLGregorianCalendar
created from parameter values.
*
* @throws IllegalArgumentException If any individual parameter's value is outside the maximum value constraint for the field
* as determined by the Date/Time Data Mapping table in {@link XMLGregorianCalendar}
* or if the composite values constitute an invalid XMLGregorianCalendar
instance
* as determined by {@link XMLGregorianCalendar#isValid()}.
*
* @see DatatypeConstants#FIELD_UNDEFINED
*/
public XMLGregorianCalendar newXMLGregorianCalendarTime(
final int hours,
final int minutes,
final int seconds,
final int timezone) {
return newXMLGregorianCalendar(
DatatypeConstants.FIELD_UNDEFINED, // Year
DatatypeConstants.FIELD_UNDEFINED, // Month
DatatypeConstants.FIELD_UNDEFINED, // Day
hours,
minutes,
seconds,
DatatypeConstants.FIELD_UNDEFINED, //Millisecond
timezone);
}
/**
* Create a Java instance of XML Schema builtin datatype time.
* *A null
value indicates that field is not set.
A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param hours number of hours * @param minutes number of minutes * @param seconds number of seconds * @param fractionalSecond value ofnull
indicates that this optional field is not set.
* @param timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set.
*
* @return XMLGregorianCalendar
created from parameter values.
*
* @see DatatypeConstants#FIELD_UNDEFINED
*
* @throws IllegalArgumentException If any individual parameter's value is outside the maximum value constraint for the field
* as determined by the Date/Time Data Mapping table in {@link XMLGregorianCalendar}
* or if the composite values constitute an invalid XMLGregorianCalendar
instance
* as determined by {@link XMLGregorianCalendar#isValid()}.
*/
public XMLGregorianCalendar newXMLGregorianCalendarTime(
final int hours,
final int minutes,
final int seconds,
final BigDecimal fractionalSecond,
final int timezone) {
return newXMLGregorianCalendar(
null, // year
DatatypeConstants.FIELD_UNDEFINED, // month
DatatypeConstants.FIELD_UNDEFINED, // day
hours,
minutes,
seconds,
fractionalSecond,
timezone);
}
/**
* Create a Java instance of XML Schema builtin datatype time.
* *A {@link DatatypeConstants#FIELD_UNDEFINED} value indicates that field is not set.
* * @param hours number of hours * @param minutes number of minutes * @param seconds number of seconds * @param milliseconds number of milliseconds * @param timezone offset in minutes. {@link DatatypeConstants#FIELD_UNDEFINED} indicates optional field is not set. * * @returnXMLGregorianCalendar
created from parameter values.
*
* @see DatatypeConstants#FIELD_UNDEFINED
*
* @throws IllegalArgumentException If any individual parameter's value is outside the maximum value constraint for the field
* as determined by the Date/Time Data Mapping table in {@link XMLGregorianCalendar}
* or if the composite values constitute an invalid XMLGregorianCalendar
instance
* as determined by {@link XMLGregorianCalendar#isValid()}.
*/
public XMLGregorianCalendar newXMLGregorianCalendarTime(
final int hours,
final int minutes,
final int seconds,
final int milliseconds,
final int timezone) {
// millisecond may be undefined
// millisecond must be >= 0 millisecond <= 1000
BigDecimal realMilliseconds = null; // undefined value
if (milliseconds != DatatypeConstants.FIELD_UNDEFINED) {
if (milliseconds < 0 || milliseconds > 1000) {
throw new IllegalArgumentException(
"javax.xml.datatype.DatatypeFactory#newXMLGregorianCalendarTime("
+ "int hours, int minutes, int seconds, int milliseconds, int timezone)"
+ "with invalid milliseconds: " + milliseconds
);
}
realMilliseconds = BigDecimal.valueOf((long) milliseconds, 3);
}
return newXMLGregorianCalendarTime(
hours,
minutes,
seconds,
realMilliseconds,
timezone
);
}
}
javax/xml/datatype/Duration.java 100644 0 0 112702 11164017711 14423 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//$Id: Duration.java 759828 2009-03-30 01:26:29Z mrglavas $
package javax.xml.datatype;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.namespace.QName;
/**
* Immutable representation of a time span as defined in * the W3C XML Schema 1.0 specification.
* *A Duration object represents a period of Gregorian time, * which consists of six fields (years, months, days, hours, * minutes, and seconds) plus a sign (+/-) field.
* *The first five fields have non-negative (>=0) integers or null * (which represents that the field is not set), * and the seconds field has a non-negative decimal or null. * A negative sign indicates a negative duration.
* *This class provides a number of methods that make it easy * to use for the duration datatype of XML Schema 1.0 with * the errata.
* *Duration objects only have partial order, where two values A and B * maybe either:
*For example, 30 days cannot be meaningfully compared to one month. * The {@link #compare(Duration duration)} method implements this * relationship.
* *See the {@link #isLongerThan(Duration)} method for details about
* the order relationship among Duration
objects.
This class provides a set of basic arithmetic operations, such * as addition, subtraction and multiplication. * Because durations don't have total order, an operation could * fail for some combinations of operations. For example, you cannot * subtract 15 days from 1 month. See the javadoc of those methods * for detailed conditions where this could happen.
* *Also, division of a duration by a number is not provided because
* the Duration
class can only deal with finite precision
* decimal numbers. For example, one cannot represent 1 sec divided by 3.
However, you could substitute a division by 3 with multiplying * by numbers such as 0.3 or 0.333.
* *
* Because some operations of Duration
rely on {@link Calendar}
* even though {@link Duration} can hold very large or very small values,
* some of the methods may not work correctly on such Duration
s.
* The impacted methods document their dependency on {@link Calendar}.
*
*
* @author Joseph Fialli
* @author Kohsuke Kawaguchi
* @author Jeff Suttor
* @version $Revision: 759828 $, $Date: 2009-03-29 21:26:29 -0400 (Sun, 29 Mar 2009) $
* @see XMLGregorianCalendar#add(Duration)
* @since 1.5
*/
public abstract class Duration {
/**
*
Return the name of the XML Schema date/time type that this instance
* maps to. Type is computed based on fields that are set,
* i.e. {@link #isSet(DatatypeConstants.Field field)} == true
.
* Required fields for XML Schema 1.0 Date/Time Datatypes. * (timezone is optional for all date/time datatypes) * |
* ||||||
---|---|---|---|---|---|---|
Datatype | *year | *month | *day | *hour | *minute | *second | *
{@link DatatypeConstants#DURATION} | *X | *X | *X | *X | *X | *X | *
{@link DatatypeConstants#DURATION_DAYTIME} | ** | * | X | *X | *X | *X | *
{@link DatatypeConstants#DURATION_YEARMONTH} | *X | *X | ** | * | * | * |
Get the years value of this Duration
as an int
or 0
if not present.
getYears()
is a convenience method for
* {@link #getField(DatatypeConstants.Field field) getField(DatatypeConstants.YEARS)}.
As the return value is an int
, an incorrect value will be returned for Duration
s
* with years that go beyond the range of an int
.
* Use {@link #getField(DatatypeConstants.Field field) getField(DatatypeConstants.YEARS)} to avoid possible loss of precision.
int
, else return 0
.
*/
public int getYears() {
return getFieldValueAsInt(DatatypeConstants.YEARS);
}
/**
* Obtains the value of the MONTHS field as an integer value,
* or 0 if not present.
*
* This method works just like {@link #getYears()} except
* that this method works on the MONTHS field.
*
* @return Months of this Duration
.
*/
public int getMonths() {
return getFieldValueAsInt(DatatypeConstants.MONTHS);
}
/**
* Obtains the value of the DAYS field as an integer value,
* or 0 if not present.
*
* This method works just like {@link #getYears()} except
* that this method works on the DAYS field.
*
* @return Days of this Duration
.
*/
public int getDays() {
return getFieldValueAsInt(DatatypeConstants.DAYS);
}
/**
* Obtains the value of the HOURS field as an integer value,
* or 0 if not present.
*
* This method works just like {@link #getYears()} except
* that this method works on the HOURS field.
*
* @return Hours of this Duration
.
*
*/
public int getHours() {
return getFieldValueAsInt(DatatypeConstants.HOURS);
}
/**
* Obtains the value of the MINUTES field as an integer value,
* or 0 if not present.
*
* This method works just like {@link #getYears()} except
* that this method works on the MINUTES field.
*
* @return Minutes of this Duration
.
*
*/
public int getMinutes() {
return getFieldValueAsInt(DatatypeConstants.MINUTES);
}
/**
* Obtains the value of the SECONDS field as an integer value,
* or 0 if not present.
*
* This method works just like {@link #getYears()} except
* that this method works on the SECONDS field.
*
* @return seconds in the integer value. The fraction of seconds
* will be discarded (for example, if the actual value is 2.5,
* this method returns 2)
*/
public int getSeconds() {
return getFieldValueAsInt(DatatypeConstants.SECONDS);
}
/**
* Returns the length of the duration in milliseconds.
* *If the seconds field carries more digits than millisecond order,
* those will be simply discarded (or in other words, rounded to zero.)
* For example, for any Calendar value x
,
** *new Duration("PT10.00099S").getTimeInMills(x) == 10000
. *new Duration("-PT10.00099S").getTimeInMills(x) == -10000
. *
* Note that this method uses the {@link #addTo(Calendar)} method,
* which may work incorrectly with Duration
objects with
* very large values in its fields. See the {@link #addTo(Calendar)}
* method for details.
*
* @param startInstant
* The length of a month/year varies. The startInstant
is
* used to disambiguate this variance. Specifically, this method
* returns the difference between startInstant
and
* startInstant+duration
*
* @return milliseconds between startInstant
and
* startInstant
plus this Duration
*
* @throws NullPointerException if startInstant
parameter
* is null.
*
*/
public long getTimeInMillis(final Calendar startInstant) {
Calendar cal = (Calendar) startInstant.clone();
addTo(cal);
return getCalendarTimeInMillis(cal)
- getCalendarTimeInMillis(startInstant);
}
/**
*
Returns the length of the duration in milliseconds.
* *If the seconds field carries more digits than millisecond order,
* those will be simply discarded (or in other words, rounded to zero.)
* For example, for any Date
value x
,
** *new Duration("PT10.00099S").getTimeInMills(x) == 10000
. *new Duration("-PT10.00099S").getTimeInMills(x) == -10000
. *
* Note that this method uses the {@link #addTo(Date)} method,
* which may work incorrectly with Duration
objects with
* very large values in its fields. See the {@link #addTo(Date)}
* method for details.
*
* @param startInstant
* The length of a month/year varies. The startInstant
is
* used to disambiguate this variance. Specifically, this method
* returns the difference between startInstant
and
* startInstant+duration
.
*
* @throws NullPointerException
* If the startInstant parameter is null.
*
* @return milliseconds between startInstant
and
* startInstant
plus this Duration
*
* @see #getTimeInMillis(Calendar)
*/
public long getTimeInMillis(final Date startInstant) {
Calendar cal = new GregorianCalendar();
cal.setTime(startInstant);
this.addTo(cal);
return getCalendarTimeInMillis(cal) - startInstant.getTime();
}
/**
* Gets the value of a field.
*
* Fields of a duration object may contain arbitrary large value.
* Therefore this method is designed to return a {@link Number} object.
*
* In case of YEARS, MONTHS, DAYS, HOURS, and MINUTES, the returned
* number will be a non-negative integer. In case of seconds,
* the returned number may be a non-negative decimal value.
*
* @param field
* one of the six Field constants (YEARS,MONTHS,DAYS,HOURS,
* MINUTES, or SECONDS.)
* @return
* If the specified field is present, this method returns
* a non-null non-negative {@link Number} object that
* represents its value. If it is not present, return null.
* For YEARS, MONTHS, DAYS, HOURS, and MINUTES, this method
* returns a {@link java.math.BigInteger} object. For SECONDS, this
* method returns a {@link java.math.BigDecimal}.
*
* @throws NullPointerException If the field
is null
.
*/
public abstract Number getField(final DatatypeConstants.Field field);
/**
* Gets the value of a field as an int
.
*
* @param field
* one of the six Field constants (YEARS,MONTHS,DAYS,HOURS,
* MINUTES, or SECONDS.)
* @return
* If the field is present, return its value as an int
,
* else return 0
.
*/
private int getFieldValueAsInt(final DatatypeConstants.Field field) {
Number n = getField(field);
if (n != null) {
return n.intValue();
}
return 0;
}
/**
* Checks if a field is set.
*
* A field of a duration object may or may not be present.
* This method can be used to test if a field is present.
*
* @param field
* one of the six Field constants (YEARS,MONTHS,DAYS,HOURS,
* MINUTES, or SECONDS.)
* @return
* true if the field is present. false if not.
*
* @throws NullPointerException
* If the field parameter is null.
*/
public abstract boolean isSet(final DatatypeConstants.Field field);
/**
*
Computes a new duration whose value is this+rhs
.
For example,
** "1 day" + "-3 days" = "-2 days" * "1 year" + "1 day" = "1 year and 1 day" * "-(1 hour,50 minutes)" + "-20 minutes" = "-(1 hours,70 minutes)" * "15 hours" + "-3 days" = "-(2 days,9 hours)" * "1 year" + "-1 day" = IllegalStateException ** *
Since there's no way to meaningfully subtract 1 day from 1 month, * there are cases where the operation fails in * {@link IllegalStateException}.
* ** Formally, the computation is defined as follows.
*
* Firstly, we can assume that two Duration
s to be added
* are both positive without losing generality (i.e.,
* (-X)+Y=Y-X
, X+(-Y)=X-Y
,
* (-X)+(-Y)=-(X+Y)
)
*
*
* Addition of two positive Duration
s are simply defined as
* field by field addition where missing fields are treated as 0.
*
* A field of the resulting Duration
will be unset if and
* only if respective fields of two input Duration
s are unset.
*
* Note that lhs.add(rhs)
will be always successful if
* lhs.signum()*rhs.signum()!=-1
or both of them are
* normalized.
Duration
to add to this Duration
*
* @return
* non-null valid Duration object.
*
* @throws NullPointerException
* If the rhs parameter is null.
* @throws IllegalStateException
* If two durations cannot be meaningfully added. For
* example, adding negative one day to one month causes
* this exception.
*
*
* @see #subtract(Duration)
*/
public abstract Duration add(final Duration rhs);
/**
* Adds this duration to a {@link Calendar} object.
*
* * Calls {@link java.util.Calendar#add(int,int)} in the * order of YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, and MILLISECONDS * if those fields are present. Because the {@link Calendar} class * uses int to hold values, there are cases where this method * won't work correctly (for example if values of fields * exceed the range of int.) *
* ** Also, since this duration class is a Gregorian duration, this * method will not work correctly if the given {@link Calendar} * object is based on some other calendar systems. *
* *
* Any fractional parts of this Duration
object
* beyond milliseconds will be simply ignored. For example, if
* this duration is "P1.23456S", then 1 is added to SECONDS,
* 234 is added to MILLISECONDS, and the rest will be unused.
*
* Note that because {@link Calendar#add(int, int)} is using
* int, Duration
with values beyond the
* range of int in its fields
* will cause overflow/underflow to the given {@link Calendar}.
* {@link XMLGregorianCalendar#add(Duration)} provides the same
* basic operation as this method while avoiding
* the overflow/underflow issues.
*
* @param calendar
* A calendar object whose value will be modified.
* @throws NullPointerException
* if the calendar parameter is null.
*/
public abstract void addTo(Calendar calendar);
/**
* Adds this duration to a {@link Date} object.
*
*
* The given date is first converted into * a {@link java.util.GregorianCalendar}, then the duration * is added exactly like the {@link #addTo(Calendar)} method. * *
* The updated time instant is then converted back into a * {@link Date} object and used to update the given {@link Date} object. * *
* This somewhat redundant computation is necessary to unambiguously * determine the duration of months and years. * * @param date * A date object whose value will be modified. * @throws NullPointerException * if the date parameter is null. */ public void addTo(Date date) { // check data parameter if (date == null) { throw new NullPointerException( "Cannot call " + this.getClass().getName() + "#addTo(Date date) with date == null." ); } Calendar cal = new GregorianCalendar(); cal.setTime(date); this.addTo(cal); date.setTime(getCalendarTimeInMillis(cal)); } /** *
Computes a new duration whose value is this-rhs
.
For example:
** "1 day" - "-3 days" = "4 days" * "1 year" - "1 day" = IllegalStateException * "-(1 hour,50 minutes)" - "-20 minutes" = "-(1hours,30 minutes)" * "15 hours" - "-3 days" = "3 days and 15 hours" * "1 year" - "-1 day" = "1 year and 1 day" ** *
Since there's no way to meaningfully subtract 1 day from 1 month, * there are cases where the operation fails in {@link IllegalStateException}.
* *Formally the computation is defined as follows.
* First, we can assume that two Duration
s are both positive
* without losing generality. (i.e.,
* (-X)-Y=-(X+Y)
, X-(-Y)=X+Y
,
* (-X)-(-Y)=-(X-Y)
)
Then two durations are subtracted field by field. * If the sign of any non-zero field F is different from * the sign of the most significant field, * 1 (if F is negative) or -1 (otherwise) * will be borrowed from the next bigger unit of F.
* *This process is repeated until all the non-zero fields have * the same sign.
* *If a borrow occurs in the days field (in other words, if * the computation needs to borrow 1 or -1 month to compensate * days), then the computation fails by throwing an * {@link IllegalStateException}.
* * @param rhsDuration
to subtract from this Duration
.
*
* @return New Duration
created from subtracting rhs
from this Duration
.
*
* @throws IllegalStateException
* If two durations cannot be meaningfully subtracted. For
* example, subtracting one day from one month causes
* this exception.
*
* @throws NullPointerException
* If the rhs parameter is null.
*
* @see #add(Duration)
*/
public Duration subtract(final Duration rhs) {
return add(rhs.negate());
}
/**
* Computes a new duration whose value is factor
times
* longer than the value of this duration.
This method is provided for the convenience. * It is functionally equivalent to the following code:
** multiply(new BigDecimal(String.valueOf(factor))) ** * @param factor Factor times longer of new
Duration
to create.
*
* @return New Duration
that is factor
times longer than this Duration
.
*
* @see #multiply(BigDecimal)
*/
public Duration multiply(int factor) {
return multiply(BigDecimal.valueOf(factor));
}
/**
* Computes a new duration whose value is factor
times
* longer than the value of this duration.
*
* * For example, *
* "P1M" (1 month) * "12" = "P12M" (12 months) * "PT1M" (1 min) * "0.3" = "PT18S" (18 seconds) * "P1M" (1 month) * "1.5" = IllegalStateException ** *
* Since the Duration
class is immutable, this method
* doesn't change the value of this object. It simply computes
* a new Duration object and returns it.
*
*
* The operation will be performed field by field with the precision * of {@link BigDecimal}. Since all the fields except seconds are * restricted to hold integers, * any fraction produced by the computation will be * carried down toward the next lower unit. For example, * if you multiply "P1D" (1 day) with "0.5", then it will be 0.5 day, * which will be carried down to "PT12H" (12 hours). * When fractions of month cannot be meaningfully carried down * to days, or year to months, this will cause an * {@link IllegalStateException} to be thrown. * For example if you multiple one month by 0.5.
* *
* To avoid {@link IllegalStateException}, use
* the {@link #normalizeWith(Calendar)} method to remove the years
* and months fields.
*
* @param factor to multiply by
*
* @return
* returns a non-null valid Duration
object
*
* @throws IllegalStateException if operation produces fraction in
* the months field.
*
* @throws NullPointerException if the factor
parameter is
* null
.
*
*/
public abstract Duration multiply(final BigDecimal factor);
/**
* Returns a new Duration
object whose
* value is -this
.
*
*
* Since the Duration
class is immutable, this method
* doesn't change the value of this object. It simply computes
* a new Duration object and returns it.
*
* @return
* always return a non-null valid Duration
object.
*/
public abstract Duration negate();
/**
*
Converts the years and months fields into the days field * by using a specific time instant as the reference point.
* *For example, duration of one month normalizes to 31 days * given the start time instance "July 8th 2003, 17:40:32".
* *Formally, the computation is done as follows:
*Note that since the Calendar class uses int
to
* hold the value of year and month, this method may produce
* an unexpected result if this duration object holds
* a very large value in the years or months fields.
Calendar
reference point.
*
* @return Duration
of years and months of this Duration
as days.
*
* @throws NullPointerException If the startTimeInstant parameter is null.
*/
public abstract Duration normalizeWith(final Calendar startTimeInstant);
/**
* Partial order relation comparison with this Duration
instance.
Comparison result must be in accordance with * W3C XML Schema 1.0 Part 2, Section 3.2.7.6.2, * Order relation on duration.
* *Return:
*Duration
is shorter than duration
parameterDuration
is equal to duration
parameterDuration
is longer than duration
parameterthis
Duration
and duration
parameter as
* {@link DatatypeConstants#LESSER}, {@link DatatypeConstants#EQUAL}, {@link DatatypeConstants#GREATER}
* or {@link DatatypeConstants#INDETERMINATE}.
*
* @throws UnsupportedOperationException If the underlying implementation
* cannot reasonably process the request, e.g. W3C XML Schema allows for
* arbitrarily large/small/precise values, the request may be beyond the
* implementations capability.
* @throws NullPointerException if duration
is null
.
*
* @see #isShorterThan(Duration)
* @see #isLongerThan(Duration)
*/
public abstract int compare(final Duration duration);
/**
* Checks if this duration object is strictly longer than
* another Duration
object.
Duration X is "longer" than Y if and only if X>Y * as defined in the section 3.2.6.2 of the XML Schema 1.0 * specification.
* *For example, "P1D" (one day) > "PT12H" (12 hours) and * "P2Y" (two years) > "P23M" (23 months).
* * @param durationDuration
to test this Duration
against.
*
* @throws UnsupportedOperationException If the underlying implementation
* cannot reasonably process the request, e.g. W3C XML Schema allows for
* arbitrarily large/small/precise values, the request may be beyond the
* implementations capability.
* @throws NullPointerException If duration
is null.
*
* @return
* true if the duration represented by this object
* is longer than the given duration. false otherwise.
*
* @see #isShorterThan(Duration)
* @see #compare(Duration duration)
*/
public boolean isLongerThan(final Duration duration) {
return compare(duration) == DatatypeConstants.GREATER;
}
/**
* Checks if this duration object is strictly shorter than
* another Duration
object.
Duration
to test this Duration
against.
*
* @return true
if duration
parameter is shorter than this Duration
,
* else false
.
*
* @throws UnsupportedOperationException If the underlying implementation
* cannot reasonably process the request, e.g. W3C XML Schema allows for
* arbitrarily large/small/precise values, the request may be beyond the
* implementations capability.
* @throws NullPointerException if duration
is null.
*
* @see #isLongerThan(Duration duration)
* @see #compare(Duration duration)
*/
public boolean isShorterThan(final Duration duration) {
return compare(duration) == DatatypeConstants.LESSER;
}
/**
* Checks if this duration object has the same duration
* as another Duration
object.
For example, "P1D" (1 day) is equal to "PT24H" (24 hours).
* *Duration X is equal to Y if and only if time instant * t+X and t+Y are the same for all the test time instants * specified in the section 3.2.6.2 of the XML Schema 1.0 * specification.
* *Note that there are cases where two Duration
s are
* "incomparable" to each other, like one month and 30 days.
* For example,
* !new Duration("P1M").isShorterThan(new Duration("P30D")) * !new Duration("P1M").isLongerThan(new Duration("P30D")) * !new Duration("P1M").equals(new Duration("P30D")) ** * @param duration * A non-null valid
Duration
object.
*
* @return
* true
if this duration is the same length as
* duration
.
* false
if duration
is not a
* Duration
object, is null
,
* or its length is different from this duration.
*
* @throws UnsupportedOperationException If the underlying implementation
* cannot reasonably process the request, e.g. W3C XML Schema allows for
* arbitrarily large/small/precise values, the request may be beyond the
* implementations capability.
*
* @see #compare(Duration duration)
*/
public boolean equals(final Object duration) {
if (duration == this) {
return true;
}
if (duration instanceof Duration) {
return compare((Duration) duration) == DatatypeConstants.EQUAL;
}
return false;
}
/**
* Returns a hash code consistent with the definition of the equals method.
*
* @see Object#hashCode()
*/
public abstract int hashCode();
/**
* Returns a String
representation of this Duration
Object
.
The result is formatted according to the XML Schema 1.0 specification and can be always parsed back later into the
* equivalent Duration
Object
by {@link DatatypeFactory#newDuration(String lexicalRepresentation)}.
Formally, the following holds for any Duration
* Object
x:
* new Duration(x.toString()).equals(x) ** * @return A non-
null
valid String
representation of this Duration
.
*/
public String toString() {
StringBuffer buf = new StringBuffer();
if (getSign() < 0) {
buf.append('-');
}
buf.append('P');
BigInteger years = (BigInteger) getField(DatatypeConstants.YEARS);
if (years != null) {
buf.append(years).append('Y');
}
BigInteger months = (BigInteger) getField(DatatypeConstants.MONTHS);
if (months != null) {
buf.append(months).append('M');
}
BigInteger days = (BigInteger) getField(DatatypeConstants.DAYS);
if (days != null) {
buf.append(days).append('D');
}
BigInteger hours = (BigInteger) getField(DatatypeConstants.HOURS);
BigInteger minutes = (BigInteger) getField(DatatypeConstants.MINUTES);
BigDecimal seconds = (BigDecimal) getField(DatatypeConstants.SECONDS);
if (hours != null || minutes != null || seconds != null) {
buf.append('T');
if (hours != null) {
buf.append(hours).append('H');
}
if (minutes != null) {
buf.append(minutes).append('M');
}
if (seconds != null) {
buf.append(toString(seconds)).append('S');
}
}
return buf.toString();
}
/**
* Turns {@link BigDecimal} to a string representation.
* *Due to a behavior change in the {@link BigDecimal#toString()} * method in JDK1.5, this had to be implemented here.
* * @param bdBigDecimal
to format as a String
*
* @return String
representation of BigDecimal
*/
private String toString(BigDecimal bd) {
String intString = bd.unscaledValue().toString();
int scale = bd.scale();
if (scale == 0) {
return intString;
}
/* Insert decimal point */
StringBuffer buf;
int insertionPoint = intString.length() - scale;
if (insertionPoint == 0) { /* Point goes right before intVal */
return "0." + intString;
}
else if (insertionPoint > 0) { /* Point goes inside intVal */
buf = new StringBuffer(intString);
buf.insert(insertionPoint, '.');
}
else { /* We must insert zeros between point and intVal */
buf = new StringBuffer(3 - insertionPoint + intString.length());
buf.append("0.");
for (int i = 0; i < -insertionPoint; i++) {
buf.append('0');
}
buf.append(intString);
}
return buf.toString();
}
/**
* Calls the {@link Calendar#getTimeInMillis} method. * Prior to JDK1.4, this method was protected and therefore * cannot be invoked directly.
* *TODO: In future, this should be replaced by cal.getTimeInMillis()
.
Calendar
to get time in milliseconds.
*
* @return Milliseconds of cal
.
*/
private static long getCalendarTimeInMillis(final Calendar cal) {
return cal.getTime().getTime();
}
}
javax/xml/datatype/FactoryFinder.java 100644 0 0 31040 11146172413 15351 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: FactoryFinder.java 670432 2008-06-23 02:02:08Z mrglavas $
package javax.xml.datatype;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Properties;
/**
* Implement pluggabile Datatypes.
* *This class is duplicated for each JAXP subpackage so keep it in * sync. It is package private for secure class loading.
* * @author Jeff Suttor * @version $Revision: 670432 $, $Date: 2008-06-22 22:02:08 -0400 (Sun, 22 Jun 2008) $ * @since 1.5 */ final class FactoryFinder { /** *Name of class to display in output messages.
*/ private static final String CLASS_NAME = "javax.xml.datatype.FactoryFinder"; /** *Debug flag to trace loading process.
*/ private static boolean debug = false; /** *Cache properties for performance.
*/ private static Properties cacheProps = new Properties(); /** *First time requires initialization overhead.
*/ private static boolean firstTime = true; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; /** *Check to see if debugging enabled by property.
* *Use try/catch block to support applets, which throws * SecurityException out of this code.
* */ static { try { String val = SecuritySupport.getSystemProperty("jaxp.debug"); // Allow simply setting the prop to turn on debug debug = val != null && (! "false".equals(val)); } catch (Exception x) { debug = false; } } private FactoryFinder() {} /** *Output debugging messages.
* * @param msgString
to print to stderr
.
*/
private static void debugPrintln(String msg) {
if (debug) {
System.err.println(
CLASS_NAME
+ ":"
+ msg);
}
}
/**
* Find the appropriate ClassLoader
to use.
The context ClassLoader is prefered.
* * @returnClassLoader
to use.
*
* @throws ConfigurationError If a valid ClassLoader
cannot be identified.
*/
private static ClassLoader findClassLoader()
throws ConfigurationError {
ClassLoader classLoader;
// Figure out which ClassLoader to use for loading the provider
// class. If there is a Context ClassLoader then use it.
classLoader = SecuritySupport.getContextClassLoader();
if (debug) debugPrintln(
"Using context class loader: "
+ classLoader);
if (classLoader == null) {
// if we have no Context ClassLoader
// so use the current ClassLoader
classLoader = FactoryFinder.class.getClassLoader();
if (debug) debugPrintln(
"Using the class loader of FactoryFinder: "
+ classLoader);
}
return classLoader;
}
/**
* Create an instance of a class using the specified ClassLoader.
* * @param className Name of class to create. * @param classLoader ClassLoader to use to create named class. * * @return New instance of specified class created using the specified ClassLoader. * * @throws ConfigurationError If class could not be created. */ static Object newInstance( String className, ClassLoader classLoader) throws ConfigurationError { try { Class spiClass; if (classLoader == null) { spiClass = Class.forName(className); } else { spiClass = classLoader.loadClass(className); } if (debug) { debugPrintln("Loaded " + className + " from " + which(spiClass)); } return spiClass.newInstance(); } catch (ClassNotFoundException x) { throw new ConfigurationError( "Provider " + className + " not found", x); } catch (Exception x) { throw new ConfigurationError( "Provider " + className + " could not be instantiated: " + x, x); } } /** * Finds the implementation Class object in the specified order. Main * entry point. * Package private so this code can be shared. * * @param factoryId Name of the factory to find, same as a property name * @param fallbackClassName Implementation class name, if nothing else is found. Use null to mean no fallback. * * @return Class Object of factory, never null * * @throws ConfigurationError If Class cannot be found. */ static Object find(String factoryId, String fallbackClassName) throws ConfigurationError { ClassLoader classLoader = findClassLoader(); // Use the system property first try { String systemProp = SecuritySupport.getSystemProperty(factoryId); if (systemProp != null && systemProp.length() > 0) { if (debug) debugPrintln("found " + systemProp + " in the system property " + factoryId); return newInstance(systemProp, classLoader); } } catch (SecurityException se) { ; // NOP, explicitly ignore SecurityException } // try to read from $java.home/lib/jaxp.properties try { String javah = SecuritySupport.getSystemProperty("java.home"); String configFile = javah + File.separator + "lib" + File.separator + "jaxp.properties"; String factoryClassName = null; if (firstTime) { synchronized (cacheProps) { if (firstTime) { File f = new File(configFile); firstTime = false; if (SecuritySupport.doesFileExist(f)) { if (debug) debugPrintln("Read properties file " + f); cacheProps.load(SecuritySupport.getFileInputStream(f)); } } } } factoryClassName = cacheProps.getProperty(factoryId); if (debug) debugPrintln("found " + factoryClassName + " in $java.home/jaxp.properties"); if (factoryClassName != null) { return newInstance(factoryClassName, classLoader); } } catch (Exception ex) { if (debug) { ex.printStackTrace(); } } // Try Jar Service Provider Mechanism Object provider = findJarServiceProvider(factoryId); if (provider != null) { return provider; } if (fallbackClassName == null) { throw new ConfigurationError( "Provider for " + factoryId + " cannot be found", null); } if (debug) debugPrintln("loaded from fallback value: " + fallbackClassName); return newInstance(fallbackClassName, classLoader); } /* * Try to find provider using Jar Service Provider Mechanism * * @return instance of provider class if found or null */ private static Object findJarServiceProvider(String factoryId) throws ConfigurationError { String serviceId = "META-INF/services/" + factoryId; InputStream is = null; // First try the Context ClassLoader ClassLoader cl = SecuritySupport.getContextClassLoader(); if (cl != null) { is = SecuritySupport.getResourceAsStream(cl, serviceId); // If no provider found then try the current ClassLoader if (is == null) { cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } } else { // No Context ClassLoader, try the current // ClassLoader cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } if (is == null) { // No provider found return null; } if (debug) debugPrintln("found jar resource=" + serviceId + " using ClassLoader: " + cl); BufferedReader rd; try { rd = new BufferedReader(new InputStreamReader(is, "UTF-8"), DEFAULT_LINE_LENGTH); } catch (java.io.UnsupportedEncodingException e) { rd = new BufferedReader(new InputStreamReader(is), DEFAULT_LINE_LENGTH); } String factoryClassName = null; try { // XXX Does not handle all possible input as specified by the // Jar Service Provider specification factoryClassName = rd.readLine(); } catch (IOException x) { // No provider found return null; } finally { try { // try to close the reader. rd.close(); } // Ignore the exception. catch (IOException exc) {} } if (factoryClassName != null && ! "".equals(factoryClassName)) { if (debug) debugPrintln("found in resource, value=" + factoryClassName); return newInstance(factoryClassName, cl); } // No provider found return null; } /** *Configuration Error.
*/ static class ConfigurationError extends Error { private static final long serialVersionUID = -3644413026244211347L; /** *Exception that caused the error.
*/ private Exception exception; /** *Construct a new instance with the specified detail string and * exception.
* * @param msg Detail message for this error. * @param x Exception that caused the error. */ ConfigurationError(String msg, Exception x) { super(msg); this.exception = x; } /** *Get the Exception that caused the error.
* * @return Exception that caused the error. */ Exception getException() { return exception; } } /** * Returns the location where the given Class is loaded from. * * @param clazz Class to find load location. * * @return Location where class would be loaded from. */ private static String which(Class clazz) { try { String classnameAsResource = clazz.getName().replace('.', '/') + ".class"; ClassLoader loader = clazz.getClassLoader(); URL it; if (loader != null) { it = loader.getResource(classnameAsResource); } else { it = ClassLoader.getSystemResource(classnameAsResource); } if (it != null) { return it.toString(); } } // The VM ran out of memory or there was some other serious problem. Re-throw. catch (VirtualMachineError vme) { throw vme; } // ThreadDeath should always be re-thrown catch (ThreadDeath td) { throw td; } catch (Throwable t) { // work defensively. if (debug) { t.printStackTrace(); } } return "unknown location"; } } javax/xml/datatype/SecuritySupport.java 100644 0 0 7035 11146172413 16005 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SecuritySupport.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.datatype; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; /** * This class is duplicated for each JAXP subpackage so keep it in sync. * It is package private and therefore is not exposed as part of the JAXP * API. * * Security related methods that only work on J2SE 1.2 and newer. */ final class SecuritySupport { private SecuritySupport() {} static ClassLoader getContextClassLoader() { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (SecurityException ex) { } return cl; } }); } static String getSystemProperty(final String propName) { return (String) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty(propName); } }); } static FileInputStream getFileInputStream(final File file) throws FileNotFoundException { try { return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws FileNotFoundException { return new FileInputStream(file); } }); } catch (PrivilegedActionException e) { throw (FileNotFoundException)e.getException(); } } static InputStream getResourceAsStream(final ClassLoader cl, final String name) { return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { InputStream ris; if (cl == null) { ris = ClassLoader.getSystemResourceAsStream(name); } else { ris = cl.getResourceAsStream(name); } return ris; } }); } static boolean doesFileExist(final File f) { return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return f.exists() ? Boolean.TRUE : Boolean.FALSE; } })).booleanValue(); } } javax/xml/datatype/XMLGregorianCalendar.java 100644 0 0 122354 11164016442 16572 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLGregorianCalendar.java 759822 2009-03-30 01:15:11Z mrglavas $ package javax.xml.datatype; import javax.xml.namespace.QName; import java.math.BigDecimal; import java.math.BigInteger; import java.util.TimeZone; import java.util.GregorianCalendar; /** *Representation for W3C XML Schema 1.0 date/time datatypes.
* Specifically, these date/time datatypes are
* dateTime
,
* time
,
* date
,
* gYearMonth
,
* gMonthDay
,
* gYear
* gMonth
and
* gDay
defined in the XML Namespace
* "http://www.w3.org/2001/XMLSchema"
.
* These datatypes are normatively defined in
* W3C XML Schema 1.0 Part 2, Section 3.2.7-14.
The table below defines the mapping between XML Schema 1.0 * date/time datatype fields and this class' fields. It also summarizes * the value constraints for the date and time fields defined in * W3C XML Schema 1.0 Part 2, Appendix D, * ISO 8601 Date and Time Formats.
* * ** Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java Representation * | *||
---|---|---|
XML Schema 1.0 * datatype * field |
* Related XMLGregorianCalendar Accessor(s) |
* Value Range | *
year | * {@link #getYear()} + {@link #getEon()} or * {@link #getEonAndYear} * |
* getYear() is a value between -(10^9-1) to (10^9)-1
* or {@link DatatypeConstants#FIELD_UNDEFINED}.* {@link #getEon()} is high order year value in billion of years. * getEon() has values greater than or equal to (10^9) or less than or equal to -(10^9).
* A value of null indicates field is undefined.
* Given that XML Schema 1.0 errata states that the year zero
* will be a valid lexical value in a future version of XML Schema,
* this class allows the year field to be set to zero. Otherwise,
* the year field value is handled exactly as described
* in the errata and [ISO-8601-1988]. Note that W3C XML Schema 1.0
* validation does not allow for the year field to have a value of zero.
* |
*
month | *{@link #getMonth()} | *1 to 12 or {@link DatatypeConstants#FIELD_UNDEFINED} | *
day | *{@link #getDay()} | * Independent of month, max range is 1 to 31 or {@link DatatypeConstants#FIELD_UNDEFINED}. * The normative value constraint stated relative to month * field's value is in W3C XML Schema 1.0 Part 2, Appendix D. * |
*
hour | *{@link #getHour()} | ** 0 to 24 or {@link DatatypeConstants#FIELD_UNDEFINED}. * For a value of 24, the minute and second field must be zero per * XML Schema Errata. * | *
minute | *{@link #getMinute()} | *0 to 59 or {@link DatatypeConstants#FIELD_UNDEFINED} | *
second | *
* {@link #getSecond()} + {@link #getMillisecond()}/1000 or * {@link #getSecond()} + {@link #getFractionalSecond()} * |
*
* {@link #getSecond()} from 0 to 60 or {@link DatatypeConstants#FIELD_UNDEFINED}. * (Note: 60 only allowable for leap second.) * {@link #getFractionalSecond()} allows for infinite precision over the range from 0.0 to 1.0 when * the {@link #getSecond()} is defined. * FractionalSecond is optional and has a value of null when it is undefined.* {@link #getMillisecond()} is the convenience * millisecond precision of value of {@link #getFractionalSecond()}. * |
*
timezone | *{@link #getTimezone()} | *Number of minutes or {@link DatatypeConstants#FIELD_UNDEFINED}. * Value range from -14 hours (-14 * 60 minutes) to 14 hours (14 * 60 minutes). * | *
All maximum value space constraints listed for the fields in the table
* above are checked by factory methods, @{link DatatypeFactory},
* setter methods and parse methods of
* this class. IllegalArgumentException
is thrown when a
* parameter's value is outside the value constraint for the field or
* if the composite
* values constitute an invalid XMLGregorianCalendar instance (for example, if
* the 31st of June is specified).
*
The following operations are defined for this class: *
Unset all fields to undefined.
* *Set all int fields to {@link DatatypeConstants#FIELD_UNDEFINED} and reference fields * to null.
*/ public abstract void clear(); /** *Reset this XMLGregorianCalendar
to its original values.
XMLGregorianCalendar
is reset to the same values as when it was created with
* {@link DatatypeFactory#newXMLGregorianCalendar()},
* {@link DatatypeFactory#newXMLGregorianCalendar(String lexicalRepresentation)},
* {@link DatatypeFactory#newXMLGregorianCalendar(
* BigInteger year,
* int month,
* int day,
* int hour,
* int minute,
* int second,
* BigDecimal fractionalSecond,
* int timezone)},
* {@link DatatypeFactory#newXMLGregorianCalendar(
* int year,
* int month,
* int day,
* int hour,
* int minute,
* int second,
* int millisecond,
* int timezone)},
* {@link DatatypeFactory#newXMLGregorianCalendar(GregorianCalendar cal)},
* {@link DatatypeFactory#newXMLGregorianCalendarDate(
* int year,
* int month,
* int day,
* int timezone)},
* {@link DatatypeFactory#newXMLGregorianCalendarTime(
* int hours,
* int minutes,
* int seconds,
* int timezone)},
* {@link DatatypeFactory#newXMLGregorianCalendarTime(
* int hours,
* int minutes,
* int seconds,
* BigDecimal fractionalSecond,
* int timezone)} or
* {@link DatatypeFactory#newXMLGregorianCalendarTime(
* int hours,
* int minutes,
* int seconds,
* int milliseconds,
* int timezone)}.
*
reset()
is designed to allow the reuse of existing XMLGregorianCalendar
s
* thus saving resources associated with the creation of new XMLGregorianCalendar
s.
Set low and high order component of XSD dateTime
year field.
Unset this field by invoking the setter with a parameter value of null
.
year
parameter is
* outside value constraints for the field as specified in
* date/time field mapping table.
*/
public abstract void setYear(BigInteger year);
/**
* Set year of XSD dateTime
year field.
Unset this field by invoking the setter with a parameter value of * {@link DatatypeConstants#FIELD_UNDEFINED}.
* *Note: if the absolute value of the year
parameter
* is less than 10^9, the eon component of the XSD year field is set to
* null
by this method.
null
.
*/
public abstract void setYear(int year);
/**
* Set month.
* *Unset this field by invoking the setter with a parameter value of {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @param month value constraints summarized in month field of date/time field mapping table. * * @throws IllegalArgumentException ifmonth
parameter is
* outside value constraints for the field as specified in
* date/time field mapping table.
*/
public abstract void setMonth(int month);
/**
* Set days in month.
* *Unset this field by invoking the setter with a parameter value of {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @param day value constraints summarized in day field of date/time field mapping table. * * @throws IllegalArgumentException ifday
parameter is
* outside value constraints for the field as specified in
* date/time field mapping table.
*/
public abstract void setDay(int day);
/**
* Set the number of minutes in the timezone offset.
* *Unset this field by invoking the setter with a parameter value of {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @param offset value constraints summarized in * timezone field of date/time field mapping table. * * @throws IllegalArgumentException ifoffset
parameter is
* outside value constraints for the field as specified in
* date/time field mapping table.
*/
public abstract void setTimezone(int offset);
/**
* Set time as one unit.
* * @param hour value constraints are summarized in * hour field of date/time field mapping table. * @param minute value constraints are summarized in * minute field of date/time field mapping table. * @param second value constraints are summarized in * second field of date/time field mapping table. * * @see #setTime(int, int, int, BigDecimal) * * @throws IllegalArgumentException if any parameter is * outside value constraints for the field as specified in * date/time field mapping table. */ public void setTime(int hour, int minute, int second) { setTime( hour, minute, second, null // fractional ); } /** *Set hours.
* *Unset this field by invoking the setter with a parameter value of {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @param hour value constraints summarized in hour field of date/time field mapping table. * * @throws IllegalArgumentException ifhour
parameter is outside value constraints for the field as specified in
* date/time field mapping table.
*/
public abstract void setHour(int hour);
/**
* Set minutes.
* *Unset this field by invoking the setter with a parameter value of {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @param minute value constraints summarized in minute field of date/time field mapping table. * * @throws IllegalArgumentException ifminute
parameter is outside value constraints for the field as specified in
* date/time field mapping table.
*/
public abstract void setMinute(int minute);
/**
* Set seconds.
* *Unset this field by invoking the setter with a parameter value of {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @param second value constraints summarized in second field of date/time field mapping table. * * @throws IllegalArgumentException ifsecond
parameter is outside value constraints for the field as specified in
* date/time field mapping table.
*/
public abstract void setSecond(int second);
/**
* Set milliseconds.
* *Unset this field by invoking the setter with a parameter value of {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @param millisecond value constraints summarized in * millisecond field of date/time field mapping table. * * @throws IllegalArgumentException ifmillisecond
parameter is outside value constraints for the field as specified
* in date/time field mapping table.
*/
public abstract void setMillisecond(int millisecond);
/**
* Set fractional seconds.
* *Unset this field by invoking the setter with a parameter value of null
.
fractional
parameter is outside value constraints for the field as specified
* in date/time field mapping table.
*/
public abstract void setFractionalSecond(BigDecimal fractional);
/**
* Set time as one unit, including the optional infinite precision * fractional seconds.
* * @param hour value constraints are summarized in * hour field of date/time field mapping table. * @param minute value constraints are summarized in * minute field of date/time field mapping table. * @param second value constraints are summarized in * second field of date/time field mapping table. * @param fractional value ofnull
indicates this optional
* field is not set.
*
* @throws IllegalArgumentException if any parameter is
* outside value constraints for the field as specified in
* date/time field mapping table.
*/
public void setTime(
int hour,
int minute,
int second,
BigDecimal fractional) {
setHour(hour);
setMinute(minute);
setSecond(second);
setFractionalSecond(fractional);
}
/**
* Set time as one unit, including optional milliseconds.
* * @param hour value constraints are summarized in * hour field of date/time field mapping table. * @param minute value constraints are summarized in * minute field of date/time field mapping table. * @param second value constraints are summarized in * second field of date/time field mapping table. * @param millisecond value of {@link DatatypeConstants#FIELD_UNDEFINED} indicates this * optional field is not set. * * @throws IllegalArgumentException if any parameter is * outside value constraints for the field as specified in * date/time field mapping table. */ public void setTime(int hour, int minute, int second, int millisecond) { setHour(hour); setMinute(minute); setSecond(second); setMillisecond(millisecond); } /** *Return high order component for XML Schema 1.0 dateTime datatype field for
* year
.
* null
if this optional part of the year field is not defined.
Value constraints for this value are summarized in * year field of date/time field mapping table.
* @return eon of thisXMLGregorianCalendar
. The value
* returned is an integer multiple of 10^9.
*
* @see #getYear()
* @see #getEonAndYear()
*/
public abstract BigInteger getEon();
/**
* Return low order component for XML Schema 1.0 dateTime datatype field for
* year
or {@link DatatypeConstants#FIELD_UNDEFINED}.
Value constraints for this value are summarized in * year field of date/time field mapping table.
* * @return year of thisXMLGregorianCalendar
.
*
* @see #getEon()
* @see #getEonAndYear()
*/
public abstract int getYear();
/**
* Return XML Schema 1.0 dateTime datatype field for
* year
.
Value constraints for this value are summarized in * year field of date/time field mapping table.
* * @return sum ofeon
and BigInteger.valueOf(year)
* when both fields are defined. When only year
is defined,
* return it. When both eon
and year
are not
* defined, return null
.
*
* @see #getEon()
* @see #getYear()
*/
public abstract BigInteger getEonAndYear();
/**
* Return number of month or {@link DatatypeConstants#FIELD_UNDEFINED}.
* *Value constraints for this value are summarized in * month field of date/time field mapping table.
* * @return year of thisXMLGregorianCalendar
.
*
*/
public abstract int getMonth();
/**
* Return day in month or {@link DatatypeConstants#FIELD_UNDEFINED}.
*
* Value constraints for this value are summarized in * day field of date/time field mapping table.
* * @see #setDay(int) */ public abstract int getDay(); /** * Return timezone offset in minutes or * {@link DatatypeConstants#FIELD_UNDEFINED} if this optional field is not defined. * *Value constraints for this value are summarized in * timezone field of date/time field mapping table.
* * @see #setTimezone(int) */ public abstract int getTimezone(); /** * Return hours or {@link DatatypeConstants#FIELD_UNDEFINED}. * Returns {@link DatatypeConstants#FIELD_UNDEFINED} if this field is not defined. * *Value constraints for this value are summarized in * hour field of date/time field mapping table.
* @see #setTime(int, int, int) */ public abstract int getHour(); /** * Return minutes or {@link DatatypeConstants#FIELD_UNDEFINED}. * Returns {@link DatatypeConstants#FIELD_UNDEFINED} if this field is not defined. * *Value constraints for this value are summarized in * minute field of date/time field mapping table.
* @see #setTime(int, int, int) */ public abstract int getMinute(); /** *Return seconds or {@link DatatypeConstants#FIELD_UNDEFINED}.
* *Returns {@link DatatypeConstants#FIELD_UNDEFINED} if this field is not defined. * When this field is not defined, the optional xs:dateTime * fractional seconds field, represented by * {@link #getFractionalSecond()} and {@link #getMillisecond()}, * must not be defined.
* *Value constraints for this value are summarized in * second field of date/time field mapping table.
* * @return Second of thisXMLGregorianCalendar
.
*
* @see #getFractionalSecond()
* @see #getMillisecond()
* @see #setTime(int, int, int)
*/
public abstract int getSecond();
/**
* Return millisecond precision of {@link #getFractionalSecond()}.
* *This method represents a convenience accessor to infinite
* precision fractional second value returned by
* {@link #getFractionalSecond()}. The returned value is the rounded
* down to milliseconds value of
* {@link #getFractionalSecond()}. When {@link #getFractionalSecond()}
* returns null
, this method must return
* {@link DatatypeConstants#FIELD_UNDEFINED}.
Value constraints for this value are summarized in * second field of date/time field mapping table.
* * @return Millisecond of thisXMLGregorianCalendar
.
*
* @see #getFractionalSecond()
* @see #setTime(int, int, int)
*/
public int getMillisecond() {
BigDecimal fractionalSeconds = getFractionalSecond();
// is field undefined?
if (fractionalSeconds == null) {
return DatatypeConstants.FIELD_UNDEFINED;
}
return getFractionalSecond().movePointRight(3).intValue();
}
/**
* Return fractional seconds.
* *null
is returned when this optional field is not defined.
Value constraints are detailed in * second field of date/time field mapping table.
* *This optional field can only have a defined value when the * xs:dateTime second field, represented by {@link #getSecond()}, * does not return {@link DatatypeConstants#FIELD_UNDEFINED}.
* * @return fractional seconds of thisXMLGregorianCalendar
.
*
* @see #getSecond()
* @see #setTime(int, int, int, BigDecimal)
*/
public abstract BigDecimal getFractionalSecond();
// comparisons
/**
* Compare two instances of W3C XML Schema 1.0 date/time datatypes * according to partial order relation defined in * W3C XML Schema 1.0 Part 2, Section 3.2.7.3, * Order relation on dateTime.
* *xsd:dateTime
datatype field mapping to accessors of
* this class are defined in
* date/time field mapping table.
XMLGregorianCalendar
to compare
*
* @return The relationship between this
XMLGregorianCalendar
and
* the specified xmlGregorianCalendar
as
* {@link DatatypeConstants#LESSER},
* {@link DatatypeConstants#EQUAL},
* {@link DatatypeConstants#GREATER} or
* {@link DatatypeConstants#INDETERMINATE}.
*
* @throws NullPointerException if xmlGregorianCalendar
is null.
*/
public abstract int compare(XMLGregorianCalendar xmlGregorianCalendar);
/**
* Normalize this instance to UTC.
* *2000-03-04T23:00:00+03:00 normalizes to 2000-03-04T20:00:00Z
*Implements W3C XML Schema Part 2, Section 3.2.7.3 (A).
* * @returnthis
XMLGregorianCalendar
normalized to UTC.
*/
public abstract XMLGregorianCalendar normalize();
/**
* Indicates whether parameter obj
is "equal to" this one.
true
when obj
is an instance of XMLGregorianCalendar
* and {@link #compare(XMLGregorianCalendar obj)} returns {@link DatatypeConstants#EQUAL}, otherwise false
.
*/
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof XMLGregorianCalendar) {
return compare((XMLGregorianCalendar) obj) == DatatypeConstants.EQUAL;
}
return false;
}
/**
* Returns a hash code consistent with the definition of the equals method.
* * @return hash code of this object. */ public int hashCode() { // Following two dates compare to EQUALS since in different timezones. // 2000-01-15T12:00:00-05:00 == 2000-01-15T13:00:00-04:00 // // Must ensure both instances generate same hashcode by normalizing // this to UTC timezone. int timezone = getTimezone(); if (timezone == DatatypeConstants.FIELD_UNDEFINED) { timezone = 0; } XMLGregorianCalendar gc = this; if (timezone != 0) { gc = this.normalize(); } return gc.getYear() + gc.getMonth() + gc.getDay() + gc.getHour() + gc.getMinute() + gc.getSecond(); } /** *Return the lexical representation of this
instance.
* The format is specified in
* XML Schema 1.0 Part 2, Section 3.2.[7-14].1,
* Lexical Representation".
Specific target lexical representation format is determined by * {@link #getXMLSchemaType()}.
* * @return XML, asString
, representation of this XMLGregorianCalendar
*
* @throws IllegalStateException if the combination of set fields
* does not match one of the eight defined XML Schema builtin date/time datatypes.
*/
public abstract String toXMLFormat();
/**
* Return the name of the XML Schema date/time type that this instance * maps to. Type is computed based on fields that are set.
* *
* Required fields for XML Schema 1.0 Date/Time Datatypes. * (timezone is optional for all date/time datatypes) * |
* ||||||
---|---|---|---|---|---|---|
Datatype | *year | *month | *day | *hour | *minute | *second | *
{@link DatatypeConstants#DATETIME} | *X | *X | *X | *X | *X | *X | *
{@link DatatypeConstants#DATE} | *X | *X | *X | ** | * | * |
{@link DatatypeConstants#TIME} | ** | * | * | X | *X | *X | *
{@link DatatypeConstants#GYEARMONTH} | *X | *X | ** | * | * | * |
{@link DatatypeConstants#GMONTHDAY} | ** | X | *X | ** | * | * |
{@link DatatypeConstants#GYEAR} | *X | ** | * | * | * | * |
{@link DatatypeConstants#GMONTH} | ** | X | ** | * | * | * |
{@link DatatypeConstants#GDAY} | ** | * | X | ** | * | * |
Returns a String
representation of this XMLGregorianCalendar
Object
.
The result is a lexical representation generated by {@link #toXMLFormat()}.
* * @return A non-null
valid String
representation of this XMLGregorianCalendar
.
*
* @throws IllegalStateException if the combination of set fields
* does not match one of the eight defined XML Schema builtin date/time datatypes.
*
* @see #toXMLFormat()
*/
public String toString() {
return toXMLFormat();
}
/**
* Validate instance by getXMLSchemaType()
constraints.
* @return true if data values are valid.
*/
public abstract boolean isValid();
/**
* Add duration
to this instance.
The computation is specified in
* XML Schema 1.0 Part 2, Appendix E,
* Adding durations to dateTimes>.
* date/time field mapping table
* defines the mapping from XML Schema 1.0 dateTime
fields
* to this class' representation of those fields.
XMLGregorianCalendar
.
*
* @throws NullPointerException when duration
parameter is null
.
*/
public abstract void add(Duration duration);
/**
* Convert this XMLGregorianCalendar
to a {@link GregorianCalendar}.
When this
instance has an undefined field, this
* conversion relies on the java.util.GregorianCalendar
default
* for its corresponding field. A notable difference between
* XML Schema 1.0 date/time datatypes and java.util.GregorianCalendar
* is that Timezone value is optional for date/time datatypes and it is
* a required field for java.util.GregorianCalendar
. See javadoc
* for java.util.TimeZone.getDefault()
on how the default
* is determined. To explicitly specify the TimeZone
* instance, see
* {@link #toGregorianCalendar(TimeZone, Locale, XMLGregorianCalendar)}.
* Field by Field Conversion from this class to
* java.util.GregorianCalendar
* |
* |
---|---|
java.util.GregorianCalendar field |
* javax.xml.datatype.XMLGregorianCalendar field |
*
ERA |
* {@link #getEonAndYear()}.signum() < 0 ? GregorianCalendar.BC : GregorianCalendar.AD |
*
YEAR |
* {@link #getEonAndYear()}.abs().intValue() * |
*
MONTH |
* {@link #getMonth()} - {@link DatatypeConstants#JANUARY} + {@link GregorianCalendar#JANUARY} | *
DAY_OF_MONTH |
* {@link #getDay()} | *
HOUR_OF_DAY |
* {@link #getHour()} | *
MINUTE |
* {@link #getMinute()} | *
SECOND |
* {@link #getSecond()} | *
MILLISECOND |
* get millisecond order from {@link #getFractionalSecond()}* | *
GregorianCalendar.setTimeZone(TimeZone) |
* {@link #getTimezone()} formatted into Custom timezone id | *
To ensure consistency in conversion implementations, the new
* GregorianCalendar
should be instantiated in following
* manner.
*
timeZone
value as defined above, create a new
* java.util.GregorianCalendar(timeZone,Locale.getDefault())
.
* GregorianCalendar.setGregorianChange(
* new Date(Long.MIN_VALUE))
.Calendar.set(int,int)
Convert this XMLGregorianCalendar
along with provided parameters
* to a {@link GregorianCalendar} instance.
Since XML Schema 1.0 date/time datetypes has no concept of
* timezone ids or daylight savings timezone ids, this conversion operation
* allows the user to explicitly specify one with
* timezone
parameter.
To compute the return value's TimeZone
field,
*
timeZone
is non-null,
* it is the timezone field.this.getTimezone() != FIELD_UNDEFINED
,
* create a java.util.TimeZone
with a custom timezone id
* using the this.getTimezone()
.defaults.getTimezone() != FIELD_UNDEFINED
,
* create a java.util.TimeZone
with a custom timezone id
* using defaults.getTimezone()
.GregorianCalendar
default timezone value
* for the host is defined as specified by
* java.util.TimeZone.getDefault()
.To ensure consistency in conversion implementations, the new
* GregorianCalendar
should be instantiated in following
* manner.
*
java.util.GregorianCalendar(TimeZone,
* Locale)
with TimeZone set as specified above and the
* Locale
parameter.
* GregorianCalendar.setGregorianChange(
* new Date(Long.MIN_VALUE))
.Calendar.set(int,int)
null
is a legal value.
* @param aLocale provide explicit Locale. Use default GregorianCalendar locale if
* value is null
.
* @param defaults provide default field values to use when corresponding
* field for this instance is FIELD_UNDEFINED or null.
* If defaults
is null
or a field
* within the specified defaults
is undefined,
* just use java.util.GregorianCalendar
defaults.
* @return a java.util.GregorianCalendar conversion of this instance.
*/
public abstract GregorianCalendar toGregorianCalendar(
java.util.TimeZone timezone,
java.util.Locale aLocale,
XMLGregorianCalendar defaults);
/**
* Returns a java.util.TimeZone
for this class.
If timezone field is defined for this instance, * returns TimeZone initialized with custom timezone id * of zoneoffset. If timezone field is undefined, * try the defaultZoneoffset that was passed in. * If defaultZoneoffset is FIELD_UNDEFINED, return * default timezone for this host. * (Same default as java.util.GregorianCalendar).
* * @param defaultZoneoffset default zoneoffset if this zoneoffset is * {@link DatatypeConstants#FIELD_UNDEFINED}. * * @return TimeZone for this. */ public abstract TimeZone getTimeZone(int defaultZoneoffset); /** *Creates and returns a copy of this object.
* * @return copy of thisObject
*/
public abstract Object clone();
}
javax/xml/datatype/package.html 100644 0 0 10723 11146172413 14235 0 ustar 0 0
XML/Java Type Mappings.
The javax.xml.datatype
API provides XML/Java type mappings.
The following XML standards apply:
W3C XML Schema Data Type | Java Data Type |
---|---|
xs:date | {@link javax.xml.datatype.XMLGregorianCalendar} |
xs:dateTime | {@link javax.xml.datatype.XMLGregorianCalendar} |
xs:duration | {@link javax.xml.datatype.Duration} |
xs:gDay | {@link javax.xml.datatype.XMLGregorianCalendar} |
xs:gMonth | {@link javax.xml.datatype.XMLGregorianCalendar} |
xs:gMonthDay | {@link javax.xml.datatype.XMLGregorianCalendar} |
xs:gYear | {@link javax.xml.datatype.XMLGregorianCalendar} |
xs:gYearMonth | {@link javax.xml.datatype.XMLGregorianCalendar} |
xs:time | {@link javax.xml.datatype.XMLGregorianCalendar} |
XQuery 1.0 and XPath 2.0 Data Model | Java Data Type |
---|---|
xdt:dayTimeDuration | {@link javax.xml.datatype.Duration} |
xdt:yearMonthDuration | {@link javax.xml.datatype.Duration} |
W3C XML Schema data types that have a "natural" mapping to Java types are defined by JSR 31: Java™ Architecture for XML Binding (JAXB) Specification, Binding XML Schema to Java Representations. JAXB defined mappings for XML Schema built-in data types include:
Interface for read only XML Namespace context processing.
* *An XML Namespace has the properties:
*XMLConstants.XMLNS_ATTRIBUTE
* ("xmlns") in the Namespace declaration example: <element xmlns:prefix="http://Namespace-name-URI">
All get*(*)
methods operate in the current scope
* for Namespace URI and prefix resolution.
Note that a Namespace URI can be bound to
* multiple prefixes in the current scope. This can
* occur when multiple XMLConstants.XMLNS_ATTRIBUTE
* ("xmlns") Namespace declarations occur in the same Start-Tag and
* refer to the same Namespace URI. e.g.
*
* <element xmlns:prefix1="http://Namespace-name-URI" * xmlns:prefix2="http://Namespace-name-URI"> ** This can also occur when the same Namespace URI is used in multiple *
XMLConstants.XMLNS_ATTRIBUTE
("xmlns") Namespace
* declarations in the logical parent element hierarchy. e.g.* <parent xmlns:prefix1="http://Namespace-name-URI"> * <child xmlns:prefix2="http://Namespace-name-URI"> * ... * </child> * </parent> ** *
A prefix can only be bound to a single * Namespace URI in the current scope.
* * @author Jeff Suttor * @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $ * @see javax.xml.XMLConstants javax.XMLConstants for declarations of common XML values * @see XML Schema Part2: Datatypes * @see Namespaces in XML * @see Namespaces in XML Errata * @since 1.5 */ public interface NamespaceContext { /** *Get Namespace URI bound to a prefix in the current scope.
* *When requesting a Namespace URI by prefix, the following * table describes the returned Namespace URI value for all * possible prefix values:
* *
* getNamespaceURI(prefix)
* return value for specified prefixes
* |
* |
prefix parameter | *Namespace URI return value | *
DEFAULT_NS_PREFIX ("") |
* default Namespace URI in the current scope or
* {@link javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI("")}
* when there is no default Namespace URI in the current scope |
*
bound prefix | *Namespace URI bound to prefix in current scope | *
unbound prefix | *{@link javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI("")} |
*
XMLConstants.XML_NS_PREFIX ("xml") |
* XMLConstants.XML_NS_URI
* ("http://www.w3.org/XML/1998/namespace") |
*
XMLConstants.XMLNS_ATTRIBUTE ("xmlns") |
* XMLConstants.XMLNS_ATTRIBUTE_NS_URI
* ("http://www.w3.org/2000/xmlns/") |
*
null |
* IllegalArgumentException is thrown |
*
Get prefix bound to Namespace URI in the current scope.
* *To get all prefixes bound to a Namespace URI in the current * scope, use {@link #getPrefixes(String namespaceURI)}.
* *When requesting a prefix by Namespace URI, the following * table describes the returned prefix value for all Namespace URI * values:
* *
* getPrefix(namespaceURI) return value for
* specified Namespace URIs
* |
* |
Namespace URI parameter | *prefix value returned | *
<default Namespace URI> | *XMLConstants.DEFAULT_NS_PREFIX ("")
* |
*
bound Namespace URI | *prefix bound to Namespace URI in the current scope, * if multiple prefixes are bound to the Namespace URI in * the current scope, a single arbitrary prefix, whose * choice is implementation dependent, is returned | *
unbound Namespace URI | *null |
*
XMLConstants.XML_NS_URI
* ("http://www.w3.org/XML/1998/namespace") |
* XMLConstants.XML_NS_PREFIX ("xml") |
*
XMLConstants.XMLNS_ATTRIBUTE_NS_URI
* ("http://www.w3.org/2000/xmlns/") |
* XMLConstants.XMLNS_ATTRIBUTE ("xmlns") |
*
null |
* IllegalArgumentException is thrown |
*
Get all prefixes bound to a Namespace URI in the current * scope.
* *An Iterator over String elements is returned in an arbitrary, implementation dependent, order.
* *The Iterator
is
* not modifiable. e.g. the
* remove()
method will throw
* UnsupportedOperationException
.
When requesting prefixes by Namespace URI, the following * table describes the returned prefixes value for all Namespace * URI values:
* *
* getPrefixes(namespaceURI) return value for
* specified Namespace URIs |
* |
Namespace URI parameter | *prefixes value returned | *
bound Namespace URI, * including the <default Namespace URI> | *Iterator over prefixes bound to Namespace URI in
* the current scope in an arbitrary, implementation dependent,
* order |
*
unbound Namespace URI | *empty Iterator |
*
XMLConstants.XML_NS_URI
* ("http://www.w3.org/XML/1998/namespace") |
* Iterator with one element set to
* XMLConstants.XML_NS_PREFIX ("xml") |
*
XMLConstants.XMLNS_ATTRIBUTE_NS_URI
* ("http://www.w3.org/2000/xmlns/") |
* Iterator with one element set to
* XMLConstants.XMLNS_ATTRIBUTE ("xmlns") |
*
null |
* IllegalArgumentException is thrown |
*
Iterator
for all prefixes bound to the
* Namespace URI in the current scope
*/
Iterator getPrefixes(String namespaceURI);
}
javax/xml/namespace/QName.java 100644 0 0 50071 11157055203 13740 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: QName.java 754581 2009-03-15 01:32:39Z mrglavas $
package javax.xml.namespace;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.security.AccessController;
import java.security.PrivilegedAction;
import javax.xml.XMLConstants;
/**
* QName
represents a qualified name
* as defined in the XML specifications: XML Schema Part2:
* Datatypes specification, Namespaces
* in XML, Namespaces
* in XML Errata.
The value of a QName
contains a Namespace
* URI, local part and
* prefix.
The prefix is included in QName
to retain lexical
* information when present in an {@link
* javax.xml.transform.Source XML input source}. The prefix is
* NOT used in {@link #equals(Object)
* QName.equals(Object)} or to compute the {@link #hashCode()
* QName.hashCode()}. Equality and the hash code are defined using
* only the Namespace URI and local part.
If not specified, the Namespace URI is set to {@link * javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI}. * If not specified, the prefix is set to {@link * javax.xml.XMLConstants#DEFAULT_NS_PREFIX * XMLConstants.DEFAULT_NS_PREFIX}.
* *QName
is immutable.
Stream Unique Identifier.
* *To enable the compatibility serialVersionUID
* set the System Property
* org.apache.xml.namespace.QName.useCompatibleSerialVersionUID
* to a value of "1.0".
The original default Stream Unique Identifier.
*/ private static final long defaultSerialVersionUID = -9120448754896609940L; /** *The compatibility Stream Unique Identifier that was introduced * with Java 5 SE SDK.
*/ private static final long compatabilitySerialVersionUID = 4418622981026545151L; static { String compatPropValue = null; try { compatPropValue = (String)AccessController.doPrivileged( new PrivilegedAction() { public Object run() { return System.getProperty("org.apache.xml.namespace.QName.useCompatibleSerialVersionUID"); } }); } catch (Exception e) {} // If 1.0 use compatibility serialVersionUID serialVersionUID = !"1.0".equals(compatPropValue) ? defaultSerialVersionUID : compatabilitySerialVersionUID; } /** *Namespace URI of this QName
.
local part of this QName
.
prefix of this QName
.
String
representation of this QName
.
QName
constructor specifying the Namespace URI
* and local part.
If the Namespace URI is null
, it is set to
* {@link javax.xml.XMLConstants#NULL_NS_URI
* XMLConstants.NULL_NS_URI}. This value represents no
* explicitly defined Namespace as defined by the Namespaces
* in XML specification. This action preserves compatible
* behavior with QName 1.0. Explicitly providing the {@link
* javax.xml.XMLConstants#NULL_NS_URI
* XMLConstants.NULL_NS_URI} value is the preferred coding
* style.
If the local part is null
an
* IllegalArgumentException
is thrown.
* A local part of "" is allowed to preserve
* compatible behavior with QName 1.0.
When using this constructor, the prefix is set to {@link * javax.xml.XMLConstants#DEFAULT_NS_PREFIX * XMLConstants.DEFAULT_NS_PREFIX}.
* *The Namespace URI is not validated as a * URI reference. * The local part is not validated as a * NCName * as specified in Namespaces * in XML.
* * @param namespaceURI Namespace URI of theQName
* @param localPart local part of the QName
*
* @see #QName(String namespaceURI, String localPart, String
* prefix) QName(String namespaceURI, String localPart, String
* prefix)
*/
public QName(final String namespaceURI, final String localPart) {
this(namespaceURI, localPart, XMLConstants.DEFAULT_NS_PREFIX);
}
/**
* QName
constructor specifying the Namespace URI,
* local part and prefix.
If the Namespace URI is null
, it is set to
* {@link javax.xml.XMLConstants#NULL_NS_URI
* XMLConstants.NULL_NS_URI}. This value represents no
* explicitly defined Namespace as defined by the Namespaces
* in XML specification. This action preserves compatible
* behavior with QName 1.0. Explicitly providing the {@link
* javax.xml.XMLConstants#NULL_NS_URI
* XMLConstants.NULL_NS_URI} value is the preferred coding
* style.
If the local part is null
an
* IllegalArgumentException
is thrown.
* A local part of "" is allowed to preserve
* compatible behavior with QName 1.0.
If the prefix is null
, an
* IllegalArgumentException
is thrown. Use {@link
* javax.xml.XMLConstants#DEFAULT_NS_PREFIX
* XMLConstants.DEFAULT_NS_PREFIX} to explicitly indicate that no
* prefix is present or the prefix is not relevant.
The Namespace URI is not validated as a * URI reference. * The local part and prefix are not validated as a * NCName * as specified in Namespaces * in XML.
* * @param namespaceURI Namespace URI of theQName
* @param localPart local part of the QName
* @param prefix prefix of the QName
*/
public QName(String namespaceURI, String localPart, String prefix) {
// map null Namespace URI to default to preserve compatibility with QName 1.0
if (namespaceURI == null) {
this.namespaceURI = XMLConstants.NULL_NS_URI;
} else {
this.namespaceURI = namespaceURI;
}
// local part is required. "" is allowed to preserve compatibility with QName 1.0
if (localPart == null) {
throw new IllegalArgumentException("local part cannot be \"null\" when creating a QName");
}
this.localPart = localPart;
// prefix is required
if (prefix == null) {
throw new IllegalArgumentException("prefix cannot be \"null\" when creating a QName");
}
this.prefix = prefix;
}
/**
* QName
constructor specifying the local part.
If the local part is null
an
* IllegalArgumentException
is thrown.
* A local part of "" is allowed to preserve
* compatible behavior with QName 1.0.
When using this constructor, the Namespace URI is set to * {@link javax.xml.XMLConstants#NULL_NS_URI * XMLConstants.NULL_NS_URI} and the prefix is set to {@link * javax.xml.XMLConstants#DEFAULT_NS_PREFIX * XMLConstants.DEFAULT_NS_PREFIX}.
* *In an XML context, all Element and Attribute names exist
* in the context of a Namespace. Making this explicit during the
* construction of a QName
helps prevent hard to
* diagnosis XML validity errors. The constructors {@link
* #QName(String namespaceURI, String localPart) QName(String
* namespaceURI, String localPart)} and
* {@link #QName(String namespaceURI, String localPart, String prefix)}
* are preferred.
The local part is not validated as a * NCName * as specified in Namespaces * in XML.
* * @param localPart local part of theQName
* @see #QName(String namespaceURI, String localPart) QName(String
* namespaceURI, String localPart)
* @see #QName(String namespaceURI, String localPart, String
* prefix) QName(String namespaceURI, String localPart, String
* prefix)
*/
public QName(String localPart) {
this(
XMLConstants.NULL_NS_URI,
localPart,
XMLConstants.DEFAULT_NS_PREFIX);
}
/**
* Get the Namespace URI of this QName
.
QName
*/
public String getNamespaceURI() {
return namespaceURI;
}
/**
* Get the local part of this QName
.
QName
*/
public String getLocalPart() {
return localPart;
}
/**
* Get the prefix of this QName
.
The prefix assigned to a QName
might
* NOT be valid in a different
* context. For example, a QName
may be assigned a
* prefix in the context of parsing a document but that prefix may
* be invalid in the context of a different document.
QName
*/
public String getPrefix() {
return prefix;
}
/**
* Test this QName
for equality with another
* Object
.
If the Object
to be tested is not a
* QName
or is null
, then this method
* returns false
.
Two QName
s are considered equal if and only if
* both the Namespace URI and local part are equal. This method
* uses String.equals()
to check equality of the
* Namespace URI and local part. The prefix is
* NOT used to determine equality.
This method satisfies the general contract of {@link * java.lang.Object#equals(Object) Object.equals(Object)}
* * @param objectToTest theObject
to test for
* equality with this QName
* @return true
if the given Object
is
* equal to this QName
else false
*/
public final boolean equals(Object objectToTest) {
// Is this the same object?
if (objectToTest == this) {
return true;
}
// Is this a QName?
if (objectToTest instanceof QName) {
QName qName = (QName) objectToTest;
return localPart.equals(qName.localPart) && namespaceURI.equals(qName.namespaceURI);
}
return false;
}
/**
* Generate the hash code for this QName
.
The hash code is calculated using both the Namespace URI and
* the local part of the QName
. The prefix is
* NOT used to calculate the hash
* code.
This method satisfies the general contract of {@link * java.lang.Object#hashCode() Object.hashCode()}.
* * @return hash code for thisQName
Object
*/
public final int hashCode() {
return namespaceURI.hashCode() ^ localPart.hashCode();
}
/**
* String
representation of this
* QName
.
The commonly accepted way of representing a QName
* as a String
was defined
* by James Clark. Although this is not a standard
* specification, it is in common use, e.g. {@link javax.xml.transform.Transformer#setParameter(String name, Object value)}.
* This implementation represents a QName
as:
* "{" + Namespace URI + "}" + local part. If the Namespace URI
* .equals(XMLConstants.NULL_NS_URI)
, only the
* local part is returned. An appropriate use of this method is
* for debugging or logging for human consumption.
Note the prefix value is NOT
* returned as part of the String
representation.
This method satisfies the general contract of {@link * java.lang.Object#toString() Object.toString()}.
* * @returnString
representation of this QName
*/
public String toString() {
String _qNameAsString = qNameAsString;
if (_qNameAsString == null) {
final int nsLength = namespaceURI.length();
if (nsLength == 0) {
_qNameAsString = localPart;
}
else {
StringBuffer buffer = new StringBuffer(nsLength + localPart.length() + 2);
buffer.append('{');
buffer.append(namespaceURI);
buffer.append('}');
buffer.append(localPart);
_qNameAsString = buffer.toString();
}
qNameAsString = _qNameAsString;
}
return _qNameAsString;
}
/**
* QName
derived from parsing the formatted
* String
.
If the String
is null
or does not conform to
* {@link #toString() QName.toString()} formatting, an
* IllegalArgumentException
is thrown.
The String
MUST be in the
* form returned by {@link #toString() QName.toString()}.
The commonly accepted way of representing a QName
* as a String
was defined
* by James Clark. Although this is not a standard
* specification, it is in common use, e.g. {@link javax.xml.transform.Transformer#setParameter(String name, Object value)}.
* This implementation parses a String
formatted
* as: "{" + Namespace URI + "}" + local part. If the Namespace
* URI .equals(XMLConstants.NULL_NS_URI)
, only the
* local part should be provided.
The prefix value CANNOT be
* represented in the String
and will be set to
* {@link javax.xml.XMLConstants#DEFAULT_NS_PREFIX
* XMLConstants.DEFAULT_NS_PREFIX}.
This method does not do full validation of the resulting
* QName
.
*
The Namespace URI is not validated as a * URI reference. * The local part is not validated as a * NCName * as specified in * Namespaces in XML.
* * @param qNameAsStringString
representation
* of the QName
* @return QName
corresponding to the given String
* @see #toString() QName.toString()
*/
public static QName valueOf(String qNameAsString) {
// null is not valid
if (qNameAsString == null) {
throw new IllegalArgumentException("cannot create QName from \"null\" or \"\" String");
}
// "" local part is valid to preserve compatible behavior with QName 1.0
if (qNameAsString.length() == 0) {
return new QName(
XMLConstants.NULL_NS_URI,
qNameAsString,
XMLConstants.DEFAULT_NS_PREFIX);
}
// local part only?
if (qNameAsString.charAt(0) != '{') {
return new QName(
XMLConstants.NULL_NS_URI,
qNameAsString,
XMLConstants.DEFAULT_NS_PREFIX);
}
// Namespace URI improperly specified?
if (qNameAsString.startsWith("{" + XMLConstants.NULL_NS_URI + "}")) {
throw new IllegalArgumentException(
"Namespace URI .equals(XMLConstants.NULL_NS_URI), "
+ ".equals(\"" + XMLConstants.NULL_NS_URI + "\"), "
+ "only the local part, "
+ "\"" + qNameAsString.substring(2 + XMLConstants.NULL_NS_URI.length()) + "\", "
+ "should be provided.");
}
// Namespace URI and local part specified
int endOfNamespaceURI = qNameAsString.indexOf('}');
if (endOfNamespaceURI == -1) {
throw new IllegalArgumentException(
"cannot create QName from \""
+ qNameAsString
+ "\", missing closing \"}\"");
}
return new QName(
qNameAsString.substring(1, endOfNamespaceURI),
qNameAsString.substring(endOfNamespaceURI + 1),
XMLConstants.DEFAULT_NS_PREFIX);
}
/*
* For old versions of QName which didn't have a prefix field,
* ObjectInputStream.defaultReadObject()
will initialize
* the prefix to null
instead of the empty string. This
* method fixes up the prefix field if it didn't exist in the serialized
* object.
*/
private void readObject(ObjectInputStream in)
throws IOException, ClassNotFoundException {
in.defaultReadObject();
if (prefix == null) {
prefix = XMLConstants.DEFAULT_NS_PREFIX;
}
}
}
javax/xml/namespace/package.html 100644 0 0 1636 11146172417 14345 0 ustar 0 0
XML Namespace processing.
The following XML standards apply:
javax/xml/package.html 100644 0 0 2450 11146172417 12404 0 ustar 0 0Defines core XML constants and functionality from the XML specifications.
The following core XML standards apply:
* * An instance of this class can be obtained from the * {@link DocumentBuilderFactory#newDocumentBuilder()} method. Once * an instance of this class is obtained, XML can be parsed from a * variety of input sources. These input sources are InputStreams, * Files, URLs, and SAX InputSources.
*
* Note that this class reuses several classes from the SAX API. This
* does not require that the implementor of the underlying DOM
* implementation use a SAX parser to parse XML document into a
* Document
. It merely requires that the implementation
* communicate with the application using these existing APIs.
*
* @author Jeff Suttor
* @version $Revision: 584483 $, $Date: 2007-10-13 22:54:48 -0400 (Sat, 13 Oct 2007) $
*/
public abstract class DocumentBuilder {
private static final boolean DEBUG = false;
/** Protected constructor */
protected DocumentBuilder () {
}
/**
*
Reset this DocumentBuilder
to its original configuration.
DocumentBuilder
is reset to the same state as when it was created with
* {@link DocumentBuilderFactory#newDocumentBuilder()}.
* reset()
is designed to allow the reuse of existing DocumentBuilder
s
* thus saving resources associated with the creation of new DocumentBuilder
s.
The reset DocumentBuilder
is not guaranteed to have the same {@link EntityResolver} or {@link ErrorHandler}
* Object
s, e.g. {@link Object#equals(Object obj)}. It is guaranteed to have a functionally equal
* EntityResolver
and ErrorHandler
.
InputStream
as an XML
* document and return a new DOM {@link Document} object.
* An IllegalArgumentException
is thrown if the
* InputStream
is null.
*
* @param is InputStream containing the content to be parsed.
* @return Document
result of parsing the
* InputStream
* @exception IOException If any IO errors occur.
* @exception SAXException If any parse errors occur.
* @see org.xml.sax.DocumentHandler
*/
public Document parse(InputStream is)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
InputSource in = new InputSource(is);
return parse(in);
}
/**
* Parse the content of the given InputStream
as an
* XML document and return a new DOM {@link Document} object.
* An IllegalArgumentException
is thrown if the
* InputStream
is null.
*
* @param is InputStream containing the content to be parsed.
* @param systemId Provide a base for resolving relative URIs.
* @return A new DOM Document object.
* @exception IOException If any IO errors occur.
* @exception SAXException If any parse errors occur.
* @see org.xml.sax.DocumentHandler
*/
public Document parse(InputStream is, String systemId)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
InputSource in = new InputSource(is);
in.setSystemId(systemId);
return parse(in);
}
/**
* Parse the content of the given URI as an XML document
* and return a new DOM {@link Document} object.
* An IllegalArgumentException
is thrown if the
* URI is null
null.
*
* @param uri The location of the content to be parsed.
* @return A new DOM Document object.
* @exception IOException If any IO errors occur.
* @exception SAXException If any parse errors occur.
* @see org.xml.sax.DocumentHandler
*/
public Document parse(String uri)
throws SAXException, IOException {
if (uri == null) {
throw new IllegalArgumentException("URI cannot be null");
}
InputSource in = new InputSource(uri);
return parse(in);
}
/**
* Parse the content of the given file as an XML document
* and return a new DOM {@link Document} object.
* An IllegalArgumentException
is thrown if the
* File
is null
null.
*
* @param f The file containing the XML to parse.
* @exception IOException If any IO errors occur.
* @exception SAXException If any parse errors occur.
* @see org.xml.sax.DocumentHandler
* @return A new DOM Document object.
*/
public Document parse(File f) throws SAXException, IOException {
if (f == null) {
throw new IllegalArgumentException("File cannot be null");
}
String escapedURI = FilePathToURI.filepath2URI(f.getAbsolutePath());
if (DEBUG) {
System.out.println("Escaped URI = " + escapedURI);
}
InputSource in = new InputSource(escapedURI);
return parse(in);
}
/**
* Parse the content of the given input source as an XML document
* and return a new DOM {@link Document} object.
* An IllegalArgumentException
is thrown if the
* InputSource
is null
null.
*
* @param is InputSource containing the content to be parsed.
* @exception IOException If any IO errors occur.
* @exception SAXException If any parse errors occur.
* @see org.xml.sax.DocumentHandler
* @return A new DOM Document object.
*/
public abstract Document parse(InputSource is)
throws SAXException, IOException;
/**
* Indicates whether or not this parser is configured to
* understand namespaces.
*
* @return true if this parser is configured to understand
* namespaces; false otherwise.
*/
public abstract boolean isNamespaceAware();
/**
* Indicates whether or not this parser is configured to
* validate XML documents.
*
* @return true if this parser is configured to validate
* XML documents; false otherwise.
*/
public abstract boolean isValidating();
/**
* Specify the {@link EntityResolver} to be used to resolve
* entities present in the XML document to be parsed. Setting
* this to null
will result in the underlying
* implementation using it's own default implementation and
* behavior.
*
* @param er The EntityResolver
to be used to resolve entities
* present in the XML document to be parsed.
*/
public abstract void setEntityResolver(EntityResolver er);
/**
* Specify the {@link ErrorHandler} to be used by the parser.
* Setting this to null
will result in the underlying
* implementation using it's own default implementation and
* behavior.
*
* @param eh The ErrorHandler
to be used by the parser.
*/
public abstract void setErrorHandler(ErrorHandler eh);
/**
* Obtain a new instance of a DOM {@link Document} object
* to build a DOM tree with.
*
* @return A new instance of a DOM Document object.
*/
public abstract Document newDocument();
/**
* Obtain an instance of a {@link DOMImplementation} object.
*
* @return A new instance of a DOMImplementation
.
*/
public abstract DOMImplementation getDOMImplementation();
/** Get a reference to the the {@link Schema} being used by * the XML processor.
* *If no schema is being used, null
is returned.
null
* if none in use
*
* @throws UnsupportedOperationException
* For backward compatibility, when implementations for
* earlier versions of JAXP is used, this exception will be
* thrown.
*
* @since 1.5
*/
public Schema getSchema() {
throw new UnsupportedOperationException(
"This parser does not support specification \""
+ this.getClass().getPackage().getSpecificationTitle()
+ "\" version \""
+ this.getClass().getPackage().getSpecificationVersion()
+ "\""
);
}
/**
* Get the XInclude processing mode for this parser.
* * @return * the return value of * the {@link DocumentBuilderFactory#isXIncludeAware()} * when this parser was created from factory. * * @throws UnsupportedOperationException * For backward compatibility, when implementations for * earlier versions of JAXP is used, this exception will be * thrown. * * @since 1.5 * * @see DocumentBuilderFactory#setXIncludeAware(boolean) */ public boolean isXIncludeAware() { throw new UnsupportedOperationException( "This parser does not support specification \"" + this.getClass().getPackage().getSpecificationTitle() + "\" version \"" + this.getClass().getPackage().getSpecificationVersion() + "\"" ); } } javax/xml/parsers/DocumentBuilderFactory.java 100644 0 0 52575 11304017200 17077 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: DocumentBuilderFactory.java 884950 2009-11-27 18:46:18Z mrglavas $ package javax.xml.parsers; import javax.xml.validation.Schema; /** * Defines a factory API that enables applications to obtain a * parser that produces DOM object trees from XML documents. * * @author Jeff Suttor * @version $Revision: 884950 $, $Date: 2009-11-27 13:46:18 -0500 (Fri, 27 Nov 2009) $ */ public abstract class DocumentBuilderFactory { private boolean validating = false; private boolean namespaceAware = false; private boolean whitespace = false; private boolean expandEntityRef = true; private boolean ignoreComments = false; private boolean coalescing = false; protected DocumentBuilderFactory () { } /** * Obtain a new instance of a *DocumentBuilderFactory
. This static method creates
* a new factory instance.
* This method uses the following ordered lookup procedure to determine
* the DocumentBuilderFactory
implementation class to
* load:
* javax.xml.parsers.DocumentBuilderFactory
system
* property.
* java.util.Properties
*
format and contains the fully qualified name of the
* implementation class with the key being the system property defined
* above.
*
* The jaxp.properties file is read only once by the JAXP implementation
* and it's values are then cached for future use. If the file does not exist
* when the first attempt is made to read from it, no further attempts are
* made to check for its existence. It is not possible to change the value
* of any property in jaxp.properties after it has been read for the first time.
* META-INF/services/javax.xml.parsers.DocumentBuilderFactory
* in jars available to the runtime.
* DocumentBuilderFactory
instance.
* DocumentBuilderFactory
it can use the factory to
* configure and obtain parser instances.
*
*
* Setting the jaxp.debug
system property will cause
* this method to print a lot of debug messages
* to System.err about what it is doing and where it is looking at.
If you have problems loading {@link DocumentBuilder}s, try:
** java -Djaxp.debug=1 YourProgram .... ** * @return New instance of a
DocumentBuilderFactory
*
* @exception FactoryConfigurationError if the implementation is not
* available or cannot be instantiated.
*/
public static DocumentBuilderFactory newInstance() {
try {
return (DocumentBuilderFactory) FactoryFinder.find(
/* The default property name according to the JAXP spec */
"javax.xml.parsers.DocumentBuilderFactory",
/* The fallback implementation class name */
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
}
catch (FactoryFinder.ConfigurationError e) {
throw new FactoryConfigurationError(e.getException(), e.getMessage());
}
}
/**
* @return New instance of a DocumentBuilderFactory
*
* @exception FactoryConfigurationError if the implementation is not
* available or cannot be instantiated.
*/
public static DocumentBuilderFactory newInstance(String factoryClassName,
ClassLoader classLoader) {
if (factoryClassName == null) {
throw new FactoryConfigurationError("factoryClassName cannot be null.");
}
if (classLoader == null) {
classLoader = SecuritySupport.getContextClassLoader();
}
try {
return (DocumentBuilderFactory) FactoryFinder.newInstance(factoryClassName, classLoader, false);
}
catch (FactoryFinder.ConfigurationError e) {
throw new FactoryConfigurationError(e.getException(), e.getMessage());
}
}
/**
* Creates a new instance of a {@link javax.xml.parsers.DocumentBuilder}
* using the currently configured parameters.
*
* @exception ParserConfigurationException if a DocumentBuilder
* cannot be created which satisfies the configuration requested.
* @return A new instance of a DocumentBuilder.
*/
public abstract DocumentBuilder newDocumentBuilder()
throws ParserConfigurationException;
/**
* Specifies that the parser produced by this code will
* provide support for XML namespaces. By default the value of this is set
* to false
*
* @param awareness true if the parser produced will provide support
* for XML namespaces; false otherwise.
*/
public void setNamespaceAware(boolean awareness) {
this.namespaceAware = awareness;
}
/**
* Specifies that the parser produced by this code will
* validate documents as they are parsed. By default the value of this
* is set to false
.
*
* * Note that "the validation" here means * a validating * parser as defined in the XML recommendation. * In other words, it essentially just controls the DTD validation. * (except the legacy two properties defined in JAXP 1.2. * See here for more details.) *
* ** To use modern schema languages such as W3C XML Schema or * RELAX NG instead of DTD, you can configure your parser to be * a non-validating parser by leaving the {@link #setValidating(boolean)} * method false, then use the {@link #setSchema(Schema)} * method to associate a schema to a parser. *
* * @param validating true if the parser produced will validate documents * as they are parsed; false otherwise. */ public void setValidating(boolean validating) { this.validating = validating; } /** * Specifies that the parsers created by this factory must eliminate * whitespace in element content (sometimes known loosely as * 'ignorable whitespace') when parsing XML documents (see XML Rec * 2.10). Note that only whitespace which is directly contained within * element content that has an element only content model (see XML * Rec 3.2.1) will be eliminated. Due to reliance on the content model * this setting requires the parser to be in validating mode. By default * the value of this is set tofalse
.
*
* @param whitespace true if the parser created must eliminate whitespace
* in the element content when parsing XML documents;
* false otherwise.
*/
public void setIgnoringElementContentWhitespace(boolean whitespace) {
this.whitespace = whitespace;
}
/**
* Specifies that the parser produced by this code will
* expand entity reference nodes. By default the value of this is set to
* true
*
* @param expandEntityRef true if the parser produced will expand entity
* reference nodes; false otherwise.
*/
public void setExpandEntityReferences(boolean expandEntityRef) {
this.expandEntityRef = expandEntityRef;
}
/**
* Specifies that the parser produced by this code will
* ignore comments. By default the value of this is set to false
*
.
boolean
value to ignore comments during processing
*/
public void setIgnoringComments(boolean ignoreComments) {
this.ignoreComments = ignoreComments;
}
/**
* Specifies that the parser produced by this code will
* convert CDATA nodes to Text nodes and append it to the
* adjacent (if any) text node. By default the value of this is set to
* false
*
* @param coalescing true if the parser produced will convert CDATA nodes
* to Text nodes and append it to the adjacent (if any)
* text node; false otherwise.
*/
public void setCoalescing(boolean coalescing) {
this.coalescing = coalescing;
}
/**
* Indicates whether or not the factory is configured to produce
* parsers which are namespace aware.
*
* @return true if the factory is configured to produce parsers which
* are namespace aware; false otherwise.
*/
public boolean isNamespaceAware() {
return namespaceAware;
}
/**
* Indicates whether or not the factory is configured to produce
* parsers which validate the XML content during parse.
*
* @return true if the factory is configured to produce parsers
* which validate the XML content during parse; false otherwise.
*/
public boolean isValidating() {
return validating;
}
/**
* Indicates whether or not the factory is configured to produce
* parsers which ignore ignorable whitespace in element content.
*
* @return true if the factory is configured to produce parsers
* which ignore ignorable whitespace in element content;
* false otherwise.
*/
public boolean isIgnoringElementContentWhitespace() {
return whitespace;
}
/**
* Indicates whether or not the factory is configured to produce
* parsers which expand entity reference nodes.
*
* @return true if the factory is configured to produce parsers
* which expand entity reference nodes; false otherwise.
*/
public boolean isExpandEntityReferences() {
return expandEntityRef;
}
/**
* Indicates whether or not the factory is configured to produce
* parsers which ignores comments.
*
* @return true if the factory is configured to produce parsers
* which ignores comments; false otherwise.
*/
public boolean isIgnoringComments() {
return ignoreComments;
}
/**
* Indicates whether or not the factory is configured to produce
* parsers which converts CDATA nodes to Text nodes and appends it to
* the adjacent (if any) Text node.
*
* @return true if the factory is configured to produce parsers
* which converts CDATA nodes to Text nodes and appends it to
* the adjacent (if any) Text node; false otherwise.
*/
public boolean isCoalescing() {
return coalescing;
}
/**
* Allows the user to set specific attributes on the underlying
* implementation.
* @param name The name of the attribute.
* @param value The value of the attribute.
* @exception IllegalArgumentException thrown if the underlying
* implementation doesn't recognize the attribute.
*/
public abstract void setAttribute(String name, Object value)
throws IllegalArgumentException;
/**
* Allows the user to retrieve specific attributes on the underlying
* implementation.
* @param name The name of the attribute.
* @return value The value of the attribute.
* @exception IllegalArgumentException thrown if the underlying
* implementation doesn't recognize the attribute.
*/
public abstract Object getAttribute(String name)
throws IllegalArgumentException;
/**
* Set a feature for this DocumentBuilderFactory
and DocumentBuilder
s created by this factory.
* Feature names are fully qualified {@link java.net.URI}s.
* Implementations may define their own features.
* An {@link ParserConfigurationException} is thrown if this DocumentBuilderFactory
or the
* DocumentBuilder
s it creates cannot support the feature.
* It is possible for an DocumentBuilderFactory
to expose a feature value but be unable to change its state.
*
* All implementations are required to support the {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING} feature. * When the feature is:
*true
: the implementation will limit XML processing to conform to implementation limits.
* Examples include entity expansion limits and XML Schema constructs that would consume large amounts of resources.
* If XML processing is limited for security reasons, it will be reported via a call to the registered
* {@link org.xml.sax.ErrorHandler#fatalError(SAXParseException exception)}.
* See {@link DocumentBuilder#setErrorHandler(org.xml.sax.ErrorHandler errorHandler)}.
* false
: the implementation will processing XML according to the XML specifications without
* regard to possible implementation limits.
* true
or false
.
*
* @throws ParserConfigurationException if this DocumentBuilderFactory
or the DocumentBuilder
s
* it creates cannot support this feature.
* @throws NullPointerException If the name
parameter is null.
*/
public abstract void setFeature(String name, boolean value)
throws ParserConfigurationException;
/**
* Get the state of the named feature.
* *
* Feature names are fully qualified {@link java.net.URI}s.
* Implementations may define their own features.
* An {@link ParserConfigurationException} is thrown if this DocumentBuilderFactory
or the
* DocumentBuilder
s it creates cannot support the feature.
* It is possible for an DocumentBuilderFactory
to expose a feature value but be unable to change its state.
*
DocumentBuilderFactory
* or the DocumentBuilder
s it creates cannot support this feature.
*/
public abstract boolean getFeature(String name)
throws ParserConfigurationException;
/**
* Gets the {@link Schema} object specified through
* the {@link #setSchema(Schema schema)} method.
*
*
* @throws UnsupportedOperationException
* For backward compatibility, when implementations for
* earlier versions of JAXP is used, this exception will be
* thrown.
*
* @return
* the {@link Schema} object that was last set through
* the {@link #setSchema(Schema)} method, or null
* if the method was not invoked since a {@link DocumentBuilderFactory}
* is created.
*
* @since 1.5
*/
public Schema getSchema() {
throw new UnsupportedOperationException(
"This parser does not support specification \""
+ this.getClass().getPackage().getSpecificationTitle()
+ "\" version \""
+ this.getClass().getPackage().getSpecificationVersion()
+ "\""
);
}
/**
* Set the {@link Schema} to be used by parsers created * from this factory. * *
* When a {@link Schema} is non-null, a parser will use a validator * created from it to validate documents before it passes information * down to the application. * *
When errors are found by the validator, the parser is responsible * to report them to the user-specified {@link org.xml.sax.ErrorHandler} * (or if the error handler is not set, ignore them or throw them), just * like any other errors found by the parser itself. * In other words, if the user-specified {@link org.xml.sax.ErrorHandler} * is set, it must receive those errors, and if not, they must be * treated according to the implementation specific * default error handling rules. * *
* A validator may modify the outcome of a parse (for example by * adding default values that were missing in documents), and a parser * is responsible to make sure that the application will receive * modified DOM trees. * *
* Initially, null is set as the {@link Schema}. * *
* This processing will take effect even if * the {@link #isValidating()} method returns false. * *
It is an error to use
* the http://java.sun.com/xml/jaxp/properties/schemaSource
* property and/or the http://java.sun.com/xml/jaxp/properties/schemaLanguage
* property in conjunction with a {@link Schema} object.
* Such configuration will cause a {@link ParserConfigurationException}
* exception when the {@link #newDocumentBuilder()} is invoked.
* A parser must be able to work with any {@link Schema}
* implementation. However, parsers and schemas are allowed
* to use implementation-specific custom mechanisms
* as long as they yield the result described in the specification.
*
* @param schema Schema
to use or null
to remove a schema.
*
* @throws UnsupportedOperationException
* For backward compatibility, when implementations for
* earlier versions of JAXP is used, this exception will be
* thrown.
*
* @since 1.5
*/
public void setSchema(Schema schema) {
throw new UnsupportedOperationException(
"This parser does not support specification \""
+ this.getClass().getPackage().getSpecificationTitle()
+ "\" version \""
+ this.getClass().getPackage().getSpecificationVersion()
+ "\""
);
}
/**
*
Set state of XInclude processing.
* *If XInclude markup is found in the document instance, should it be * processed as specified in * XML Inclusions (XInclude) Version 1.0.
* *XInclude processing defaults to false
.
true
or
* false
*
* @throws UnsupportedOperationException
* For backward compatibility, when implementations for
* earlier versions of JAXP is used, this exception will be
* thrown.
*
* @since 1.5
*/
public void setXIncludeAware(final boolean state) {
throw new UnsupportedOperationException(
"This parser does not support specification \""
+ this.getClass().getPackage().getSpecificationTitle()
+ "\" version \""
+ this.getClass().getPackage().getSpecificationVersion()
+ "\""
);
}
/**
* Get state of XInclude processing.
* * @return current state of XInclude processing * * @throws UnsupportedOperationException * For backward compatibility, when implementations for * earlier versions of JAXP is used, this exception will be * thrown. * * @since 1.5 */ public boolean isXIncludeAware() { throw new UnsupportedOperationException( "This parser does not support specification \"" + this.getClass().getPackage().getSpecificationTitle() + "\" version \"" + this.getClass().getPackage().getSpecificationVersion() + "\"" ); } } javax/xml/parsers/FactoryConfigurationError.java 100644 0 0 7173 11146172411 17617 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: FactoryConfigurationError.java 569980 2007-08-27 03:58:15Z mrglavas $ package javax.xml.parsers; /** * Thrown when a problem with configuration with the Parser Factories * exists. This error will typically be thrown when the class of a * parser factory specified in the system properties cannot be found * or instantiated. * * @author Jeff Suttor * @version $Revision: 569980 $, $Date: 2007-08-26 23:58:15 -0400 (Sun, 26 Aug 2007) $ */ public class FactoryConfigurationError extends Error { /** *Exception
that represents the error.
*/
private Exception exception;
/**
* Create a new FactoryConfigurationError
with no
* detail message.
*/
public FactoryConfigurationError() {
super();
this.exception = null;
}
/**
* Create a new FactoryConfigurationError
with
* the String
specified as an error message.
*
* @param msg The error message for the exception.
*/
public FactoryConfigurationError(String msg) {
super(msg);
this.exception = null;
}
/**
* Create a new FactoryConfigurationError
with a
* given Exception
base cause of the error.
*
* @param e The exception to be encapsulated in a
* FactoryConfigurationError.
*/
public FactoryConfigurationError(Exception e) {
super(e.toString());
this.exception = e;
}
/**
* Create a new FactoryConfigurationError
with the
* given Exception
base cause and detail message.
*
* @param e The exception to be encapsulated in a
* FactoryConfigurationError
* @param msg The detail message.
*/
public FactoryConfigurationError(Exception e, String msg) {
super(msg);
this.exception = e;
}
/**
* Return the message (if any) for this error . If there is no
* message for the exception and there is an encapsulated
* exception then the message of that exception, if it exists will be
* returned. Else the name of the encapsulated exception will be
* returned.
*
* @return The error message.
*/
public String getMessage () {
String message = super.getMessage ();
if (message == null && exception != null) {
return exception.getMessage();
}
return message;
}
/**
* Return the actual exception (if any) that caused this exception to
* be raised.
*
* @return The encapsulated exception, or null if there is none.
*/
public Exception getException () {
return exception;
}
}
javax/xml/parsers/FactoryFinder.java 100644 0 0 31210 11146172411 15212 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: FactoryFinder.java 670431 2008-06-23 01:40:03Z mrglavas $
package javax.xml.parsers;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
/**
* This class is duplicated for each JAXP subpackage so keep it in
* sync. It is package private.
*
* This code is designed to implement the JAXP 1.1 spec pluggability
* feature and is designed to run on JDK version 1.1 and later including
* JVMs that perform early linking like the Microsoft JVM in IE 5. Note
* however that it must be compiled on a JDK version 1.2 or later system
* since it calls Thread#getContextClassLoader(). The code also runs both
* as part of an unbundled jar file and when bundled as part of the JDK.
*/
final class FactoryFinder {
/**
* Debug flag to trace loading process.
*/ private static boolean debug = false; /** *Cache properties for performance.
*/ private static Properties cacheProps = new Properties(); /** *First time requires initialization overhead.
*/ private static boolean firstTime = true; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; // Define system property "jaxp.debug" to get output static { // Use try/catch block to support applets, which throws // SecurityException out of this code. try { String val = SecuritySupport.getSystemProperty("jaxp.debug"); // Allow simply setting the prop to turn on debug debug = val != null && (! "false".equals(val)); } catch (SecurityException se) { debug = false; } } private FactoryFinder() {} private static void dPrint(String msg) { if (debug) { System.err.println("JAXP: " + msg); } } /** * Create an instance of a class using the specified ClassLoader and * optionally fall back to the current ClassLoader if not found. * * @param className Name of the concrete class corresponding to the * service provider * * @param cl ClassLoader to use to load the class, null means to use * the bootstrap ClassLoader * * @param doFallback true if the current ClassLoader should be tried as * a fallback if the class is not found using cl */ static Object newInstance(String className, ClassLoader cl, boolean doFallback) throws ConfigurationError { // assert(className != null); try { Class providerClass; if (cl == null) { // If classloader is null Use the bootstrap ClassLoader. // Thus Class.forName(String) will use the current // ClassLoader which will be the bootstrap ClassLoader. providerClass = Class.forName(className); } else { try { providerClass = cl.loadClass(className); } catch (ClassNotFoundException x) { if (doFallback) { // Fall back to current classloader cl = FactoryFinder.class.getClassLoader(); if (cl != null) { providerClass = cl.loadClass(className); } else { providerClass = Class.forName(className); } } else { throw x; } } } Object instance = providerClass.newInstance(); if (debug) dPrint("created new instance of " + providerClass + " using ClassLoader: " + cl); return instance; } catch (ClassNotFoundException x) { throw new ConfigurationError( "Provider " + className + " not found", x); } catch (Exception x) { throw new ConfigurationError( "Provider " + className + " could not be instantiated: " + x, x); } } /** * Finds the implementation Class object in the specified order. Main * entry point. * @return Class object of factory, never null * * @param factoryId Name of the factory to find, same as * a property name * @param fallbackClassName Implementation class name, if nothing else * is found. Use null to mean no fallback. * * Package private so this code can be shared. */ static Object find(String factoryId, String fallbackClassName) throws ConfigurationError { // Figure out which ClassLoader to use for loading the provider // class. If there is a Context ClassLoader then use it. ClassLoader classLoader = SecuritySupport.getContextClassLoader(); if (classLoader == null) { // if we have no Context ClassLoader // so use the current ClassLoader classLoader = FactoryFinder.class.getClassLoader(); } if (debug) dPrint("find factoryId =" + factoryId); // Use the system property first try { String systemProp = SecuritySupport.getSystemProperty(factoryId); if (systemProp != null && systemProp.length() > 0) { if (debug) dPrint("found system property, value=" + systemProp); return newInstance(systemProp, classLoader, true); } } catch (SecurityException se) { //if first option fails due to any reason we should try next option in the //look up algorithm. } // try to read from $java.home/lib/jaxp.properties try { String javah = SecuritySupport.getSystemProperty("java.home"); String configFile = javah + File.separator + "lib" + File.separator + "jaxp.properties"; String factoryClassName = null; if(firstTime){ synchronized(cacheProps){ if(firstTime){ File f=new File( configFile ); firstTime = false; if(SecuritySupport.doesFileExist(f)){ if (debug) dPrint("Read properties file "+f); //cacheProps.load( new FileInputStream(f)); cacheProps.load(SecuritySupport.getFileInputStream(f)); } } } } factoryClassName = cacheProps.getProperty(factoryId); if(factoryClassName != null){ if (debug) dPrint("found in $java.home/jaxp.properties, value=" + factoryClassName); return newInstance(factoryClassName, classLoader, true); } } catch(Exception ex ) { if( debug ) ex.printStackTrace(); } // Try Jar Service Provider Mechanism Object provider = findJarServiceProvider(factoryId); if (provider != null) { return provider; } if (fallbackClassName == null) { throw new ConfigurationError( "Provider for " + factoryId + " cannot be found", null); } if (debug) dPrint("loaded from fallback value: " + fallbackClassName); return newInstance(fallbackClassName, classLoader, true); } /* * Try to find provider using Jar Service Provider Mechanism * * @return instance of provider class if found or null */ private static Object findJarServiceProvider(String factoryId) throws ConfigurationError { String serviceId = "META-INF/services/" + factoryId; InputStream is = null; // First try the Context ClassLoader ClassLoader cl = SecuritySupport.getContextClassLoader(); if (cl != null) { is = SecuritySupport.getResourceAsStream(cl, serviceId); // If no provider found then try the current ClassLoader if (is == null) { cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } } else { // No Context ClassLoader, try the current // ClassLoader cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } if (is == null) { // No provider found return null; } if (debug) dPrint("found jar resource=" + serviceId + " using ClassLoader: " + cl); // Read the service provider name in UTF-8 as specified in // the jar spec. Unfortunately this fails in Microsoft // VJ++, which does not implement the UTF-8 // encoding. Theoretically, we should simply let it fail in // that case, since the JVM is obviously broken if it // doesn't support such a basic standard. But since there // are still some users attempting to use VJ++ for // development, we have dropped in a fallback which makes a // second attempt using the platform's default encoding. In // VJ++ this is apparently ASCII, which is a subset of // UTF-8... and since the strings we'll be reading here are // also primarily limited to the 7-bit ASCII range (at // least, in English versions), this should work well // enough to keep us on the air until we're ready to // officially decommit from VJ++. [Edited comment from // jkesselm] BufferedReader rd; try { rd = new BufferedReader(new InputStreamReader(is, "UTF-8"), DEFAULT_LINE_LENGTH); } catch (java.io.UnsupportedEncodingException e) { rd = new BufferedReader(new InputStreamReader(is), DEFAULT_LINE_LENGTH); } String factoryClassName = null; try { // XXX Does not handle all possible input as specified by the // Jar Service Provider specification factoryClassName = rd.readLine(); } catch (IOException x) { // No provider found return null; } finally { try { // try to close the reader. rd.close(); } // Ignore the exception. catch (IOException exc) {} } if (factoryClassName != null && ! "".equals(factoryClassName)) { if (debug) dPrint("found in resource, value=" + factoryClassName); // Note: here we do not want to fall back to the current // ClassLoader because we want to avoid the case where the // resource file was found using one ClassLoader and the // provider class was instantiated using a different one. return newInstance(factoryClassName, cl, false); } // No provider found return null; } static class ConfigurationError extends Error { private Exception exception; /** * Construct a new instance with the specified detail string and * exception. */ ConfigurationError(String msg, Exception x) { super(msg); this.exception = x; } Exception getException() { return exception; } } } javax/xml/parsers/FilePathToURI.java 100644 0 0 11424 11146172411 15037 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package javax.xml.parsers; class FilePathToURI { // which ASCII characters need to be escaped private static boolean gNeedEscaping[] = new boolean[128]; // the first hex character if a character needs to be escaped private static char gAfterEscaping1[] = new char[128]; // the second hex character if a character needs to be escaped private static char gAfterEscaping2[] = new char[128]; private static char[] gHexChs = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; // initialize the above 3 arrays static { for (int i = 0; i <= 0x1f; i++) { gNeedEscaping[i] = true; gAfterEscaping1[i] = gHexChs[i >> 4]; gAfterEscaping2[i] = gHexChs[i & 0xf]; } gNeedEscaping[0x7f] = true; gAfterEscaping1[0x7f] = '7'; gAfterEscaping2[0x7f] = 'F'; char[] escChs = {' ', '<', '>', '#', '%', '"', '{', '}', '|', '\\', '^', '~', '[', ']', '`'}; int len = escChs.length; char ch; for (int i = 0; i < len; i++) { ch = escChs[i]; gNeedEscaping[ch] = true; gAfterEscaping1[ch] = gHexChs[ch >> 4]; gAfterEscaping2[ch] = gHexChs[ch & 0xf]; } } // To escape a file path to a URI, by using %HH to represent // special ASCII characters: 0x00~0x1F, 0x7F, ' ', '<', '>', '#', '%' // and '"' and non-ASCII characters (whose value >= 128). public static String filepath2URI(String path){ // return null if path is null. if (path == null) return null; char separator = java.io.File.separatorChar; path = path.replace(separator, '/'); int len = path.length(), ch; StringBuffer buffer = new StringBuffer(len*3); buffer.append("file://"); // change C:/blah to /C:/blah if (len >= 2 && path.charAt(1) == ':') { ch = Character.toUpperCase(path.charAt(0)); if (ch >= 'A' && ch <= 'Z') { buffer.append('/'); } } // for each character in the path int i = 0; for (; i < len; i++) { ch = path.charAt(i); // if it's not an ASCII character, break here, and use UTF-8 encoding if (ch >= 128) break; if (gNeedEscaping[ch]) { buffer.append('%'); buffer.append(gAfterEscaping1[ch]); buffer.append(gAfterEscaping2[ch]); // record the fact that it's escaped } else { buffer.append((char)ch); } } // we saw some non-ascii character if (i < len) { // get UTF-8 bytes for the remaining sub-string byte[] bytes = null; byte b; try { bytes = path.substring(i).getBytes("UTF-8"); } catch (java.io.UnsupportedEncodingException e) { // should never happen return path; } len = bytes.length; // for each byte for (i = 0; i < len; i++) { b = bytes[i]; // for non-ascii character: make it positive, then escape if (b < 0) { ch = b + 256; buffer.append('%'); buffer.append(gHexChs[ch >> 4]); buffer.append(gHexChs[ch & 0xf]); } else if (gNeedEscaping[b]) { buffer.append('%'); buffer.append(gAfterEscaping1[b]); buffer.append(gAfterEscaping2[b]); } else { buffer.append((char)b); } } } return buffer.toString(); } }//FilePathToURI javax/xml/parsers/ParserConfigurationException.java 100644 0 0 3257 11146172411 20310 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: ParserConfigurationException.java 569981 2007-08-27 03:59:07Z mrglavas $ package javax.xml.parsers; /** * Indicates a serious configuration error. * * @author Jeff Suttor * @version $Revision: 569981 $, $Date: 2007-08-26 23:59:07 -0400 (Sun, 26 Aug 2007) $ */ public class ParserConfigurationException extends Exception { /** * Create a newParserConfigurationException
with no
* detail message.
*/
public ParserConfigurationException() {
super();
}
/**
* Create a new ParserConfigurationException
with
* the String
specified as an error message.
*
* @param msg The error message for the exception.
*/
public ParserConfigurationException(String msg) {
super(msg);
}
}
javax/xml/parsers/SAXParser.java 100644 0 0 46665 11146172411 14307 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: SAXParser.java 584483 2007-10-14 02:54:48Z mrglavas $
package javax.xml.parsers;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.validation.Schema;
import org.xml.sax.HandlerBase;
import org.xml.sax.InputSource;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
/**
* Defines the API that wraps an {@link org.xml.sax.XMLReader}
* implementation class. In JAXP 1.0, this class wrapped the
* {@link org.xml.sax.Parser} interface, however this interface was
* replaced by the {@link org.xml.sax.XMLReader}. For ease
* of transition, this class continues to support the same name
* and interface as well as supporting new methods.
*
* An instance of this class can be obtained from the
* {@link javax.xml.parsers.SAXParserFactory#newSAXParser()} method.
* Once an instance of this class is obtained, XML can be parsed from
* a variety of input sources. These input sources are InputStreams,
* Files, URLs, and SAX InputSources.* * This static method creates a new factory instance based * on a system property setting or uses the platform default * if no property has been defined.
*
* The system property that controls which Factory implementation
* to create is named "javax.xml.parsers.SAXParserFactory"
.
* This property names a class that is a concrete subclass of this
* abstract class. If no property is defined, a platform default
* will be used.
* * Implementors of this class which wrap an underlaying implementation * can consider using the {@link org.xml.sax.helpers.ParserAdapter} * class to initially adapt their SAX1 implementation to work under * this revised class. * * @author Jeff Suttor * @version $Revision: 584483 $, $Date: 2007-10-13 22:54:48 -0400 (Sat, 13 Oct 2007) $ */ public abstract class SAXParser { private static final boolean DEBUG = false; /** *
Protected constructor to prevent instantiation. * Use {@link javax.xml.parsers.SAXParserFactory#newSAXParser()}.
*/ protected SAXParser () { } /** *Reset this SAXParser
to its original configuration.
SAXParser
is reset to the same state as when it was created with
* {@link SAXParserFactory#newSAXParser()}.
* reset()
is designed to allow the reuse of existing SAXParser
s
* thus saving resources associated with the creation of new SAXParser
s.
The reset SAXParser
is not guaranteed to have the same {@link Schema}
* Object
, e.g. {@link Object#equals(Object obj)}. It is guaranteed to have a functionally equal
* Schema
.
Parse the content of the given {@link java.io.InputStream} * instance as XML using the specified {@link org.xml.sax.HandlerBase}. * Use of the DefaultHandler version of this method is recommended as * the HandlerBase class has been deprecated in SAX 2.0.
* * @param is InputStream containing the content to be parsed. * @param hb The SAX HandlerBase to use. * * @throws IllegalArgumentException If the given InputStream is null. * @throws SAXException If parse produces a SAX error. * @throws IOException If an IO error occurs interacting with the *InputStream
.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(InputStream is, HandlerBase hb)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
InputSource input = new InputSource(is);
this.parse(input, hb);
}
/**
* Parse the content of the given {@link java.io.InputStream} * instance as XML using the specified {@link org.xml.sax.HandlerBase}. * Use of the DefaultHandler version of this method is recommended as * the HandlerBase class has been deprecated in SAX 2.0.
* * @param is InputStream containing the content to be parsed. * @param hb The SAX HandlerBase to use. * @param systemId The systemId which is needed for resolving relative URIs. * * @throws IllegalArgumentException If the givenInputStream
is
* null
.
* @throws IOException If any IO error occurs interacting with the
* InputStream
.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler version of this method instead.
*/
public void parse(
InputStream is,
HandlerBase hb,
String systemId)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
InputSource input = new InputSource(is);
input.setSystemId(systemId);
this.parse(input, hb);
}
/**
* Parse the content of the given {@link java.io.InputStream}
* instance as XML using the specified
* {@link org.xml.sax.helpers.DefaultHandler}.
*
* @param is InputStream containing the content to be parsed.
* @param dh The SAX DefaultHandler to use.
*
* @throws IllegalArgumentException If the given InputStream is null.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(InputStream is, DefaultHandler dh)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
InputSource input = new InputSource(is);
this.parse(input, dh);
}
/**
* Parse the content of the given {@link java.io.InputStream}
* instance as XML using the specified
* {@link org.xml.sax.helpers.DefaultHandler}.
*
* @param is InputStream containing the content to be parsed.
* @param dh The SAX DefaultHandler to use.
* @param systemId The systemId which is needed for resolving relative URIs.
*
* @throws IllegalArgumentException If the given InputStream is null.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler version of this method instead.
*/
public void parse(
InputStream is,
DefaultHandler dh,
String systemId)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
InputSource input = new InputSource(is);
input.setSystemId(systemId);
this.parse(input, dh);
}
/**
* Parse the content described by the giving Uniform Resource
* Identifier (URI) as XML using the specified
* {@link org.xml.sax.HandlerBase}.
* Use of the DefaultHandler version of this method is recommended as
* the HandlerBase
class has been deprecated in SAX 2.0
*
* @param uri The location of the content to be parsed.
* @param hb The SAX HandlerBase to use.
*
* @throws IllegalArgumentException If the uri is null.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(String uri, HandlerBase hb)
throws SAXException, IOException {
if (uri == null) {
throw new IllegalArgumentException("uri cannot be null");
}
InputSource input = new InputSource(uri);
this.parse(input, hb);
}
/**
* Parse the content described by the giving Uniform Resource
* Identifier (URI) as XML using the specified
* {@link org.xml.sax.helpers.DefaultHandler}.
*
* @param uri The location of the content to be parsed.
* @param dh The SAX DefaultHandler to use.
*
* @throws IllegalArgumentException If the uri is null.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(String uri, DefaultHandler dh)
throws SAXException, IOException {
if (uri == null) {
throw new IllegalArgumentException("uri cannot be null");
}
InputSource input = new InputSource(uri);
this.parse(input, dh);
}
/**
* Parse the content of the file specified as XML using the
* specified {@link org.xml.sax.HandlerBase}.
* Use of the DefaultHandler version of this method is recommended as
* the HandlerBase class has been deprecated in SAX 2.0
*
* @param f The file containing the XML to parse
* @param hb The SAX HandlerBase to use.
*
* @throws IllegalArgumentException If the File object is null.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(File f, HandlerBase hb)
throws SAXException, IOException {
if (f == null) {
throw new IllegalArgumentException("File cannot be null");
}
String escapedURI = FilePathToURI.filepath2URI(f.getAbsolutePath());
if (DEBUG) {
System.out.println("Escaped URI = " + escapedURI);
}
InputSource input = new InputSource(escapedURI);
this.parse(input, hb);
}
/**
* Parse the content of the file specified as XML using the
* specified {@link org.xml.sax.helpers.DefaultHandler}.
*
* @param f The file containing the XML to parse
* @param dh The SAX DefaultHandler to use.
*
* @throws IllegalArgumentException If the File object is null.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(File f, DefaultHandler dh)
throws SAXException, IOException {
if (f == null) {
throw new IllegalArgumentException("File cannot be null");
}
String escapedURI = FilePathToURI.filepath2URI(f.getAbsolutePath());
if (DEBUG) {
System.out.println("Escaped URI = " + escapedURI);
}
InputSource input = new InputSource(escapedURI);
this.parse(input, dh);
}
/**
* Parse the content given {@link org.xml.sax.InputSource}
* as XML using the specified
* {@link org.xml.sax.HandlerBase}.
* Use of the DefaultHandler version of this method is recommended as
* the HandlerBase class has been deprecated in SAX 2.0
*
* @param is The InputSource containing the content to be parsed.
* @param hb The SAX HandlerBase to use.
*
* @throws IllegalArgumentException If the InputSource
object
* is null
.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(InputSource is, HandlerBase hb)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputSource cannot be null");
}
Parser parser = this.getParser();
if (hb != null) {
parser.setDocumentHandler(hb);
parser.setEntityResolver(hb);
parser.setErrorHandler(hb);
parser.setDTDHandler(hb);
}
parser.parse(is);
}
/**
* Parse the content given {@link org.xml.sax.InputSource}
* as XML using the specified
* {@link org.xml.sax.helpers.DefaultHandler}.
*
* @param is The InputSource containing the content to be parsed.
* @param dh The SAX DefaultHandler to use.
*
* @throws IllegalArgumentException If the InputSource
object
* is null
.
* @throws IOException If any IO errors occur.
* @throws SAXException If any SAX errors occur during processing.
*
* @see org.xml.sax.DocumentHandler
*/
public void parse(InputSource is, DefaultHandler dh)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputSource cannot be null");
}
XMLReader reader = this.getXMLReader();
if (dh != null) {
reader.setContentHandler(dh);
reader.setEntityResolver(dh);
reader.setErrorHandler(dh);
reader.setDTDHandler(dh);
}
reader.parse(is);
}
/**
* Returns the SAX parser that is encapsulated by the
* implementation of this class.
*
* @return The SAX parser that is encapsulated by the
* implementation of this class.
*
* @throws SAXException If any SAX errors occur during processing.
*/
public abstract org.xml.sax.Parser getParser() throws SAXException;
/**
* Returns the {@link org.xml.sax.XMLReader} that is encapsulated by the
* implementation of this class.
*
* @return The XMLReader that is encapsulated by the
* implementation of this class.
*
* @throws SAXException If any SAX errors occur during processing.
*/
public abstract org.xml.sax.XMLReader getXMLReader() throws SAXException;
/**
* Indicates whether or not this parser is configured to
* understand namespaces.
*
* @return true if this parser is configured to
* understand namespaces; false otherwise.
*/
public abstract boolean isNamespaceAware();
/**
* Indicates whether or not this parser is configured to
* validate XML documents.
*
* @return true if this parser is configured to
* validate XML documents; false otherwise.
*/
public abstract boolean isValidating();
/**
* Sets the particular property in the underlying implementation of * {@link org.xml.sax.XMLReader}. * A list of the core features and properties can be found at * * http://sax.sourceforge.net/?selected=get-set.
* * @param name The name of the property to be set. * @param value The value of the property to be set. * * @throws SAXNotRecognizedException When the underlying XMLReader does * not recognize the property name. * @throws SAXNotSupportedException When the underlying XMLReader * recognizes the property name but doesn't support the property. * * @see org.xml.sax.XMLReader#setProperty */ public abstract void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException; /** *Returns the particular property requested for in the underlying * implementation of {@link org.xml.sax.XMLReader}.
* * @param name The name of the property to be retrieved. * @return Value of the requested property. * * @throws SAXNotRecognizedException When the underlying XMLReader does * not recognize the property name. * @throws SAXNotSupportedException When the underlying XMLReader * recognizes the property name but doesn't support the property. * * @see org.xml.sax.XMLReader#getProperty */ public abstract Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException; /**Get a reference to the the {@link Schema} being used by * the XML processor.
* *If no schema is being used, null
is returned.
null
* if none in use
*
* @throws UnsupportedOperationException
* For backward compatibility, when implementations for
* earlier versions of JAXP is used, this exception will be
* thrown.
*
* @since 1.5
*/
public Schema getSchema() {
throw new UnsupportedOperationException(
"This parser does not support specification \""
+ this.getClass().getPackage().getSpecificationTitle()
+ "\" version \""
+ this.getClass().getPackage().getSpecificationVersion()
+ "\""
);
}
/**
* Get the XInclude processing mode for this parser.
* * @return * the return value of * the {@link SAXParserFactory#isXIncludeAware()} * when this parser was created from factory. * * @throws UnsupportedOperationException * For backward compatibility, when implementations for * earlier versions of JAXP is used, this exception will be * thrown. * * @since 1.5 * * @see SAXParserFactory#setXIncludeAware(boolean) */ public boolean isXIncludeAware() { throw new UnsupportedOperationException( "This parser does not support specification \"" + this.getClass().getPackage().getSpecificationTitle() + "\" version \"" + this.getClass().getPackage().getSpecificationVersion() + "\"" ); } } javax/xml/parsers/SAXParserFactory.java 100644 0 0 41230 11304017200 15604 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SAXParserFactory.java 884950 2009-11-27 18:46:18Z mrglavas $ package javax.xml.parsers; import javax.xml.validation.Schema; import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; /** * Defines a factory API that enables applications to configure and * obtain a SAX based parser to parse XML documents. * * @author Jeff Suttor * @version $Revision: 884950 $, $Date: 2009-11-27 13:46:18 -0500 (Fri, 27 Nov 2009) $ */ public abstract class SAXParserFactory { /** *Should Parsers be validating?
*/ private boolean validating = false; /** *Should Parsers be namespace aware?
*/ private boolean namespaceAware = false; /** *Protected constructor to force use of {@link #newInstance()}.
*/ protected SAXParserFactory () { } /** * Obtain a new instance of aSAXParserFactory
. This
* static method creates a new factory instance
* This method uses the following ordered lookup procedure to determine
* the SAXParserFactory
implementation class to
* load:
* javax.xml.parsers.SAXParserFactory
system
* property.
* java.util.Properties
*
format and contains the fully qualified name of the
* implementation class with the key being the system property defined
* above.
*
* The jaxp.properties file is read only once by the JAXP implementation
* and it's values are then cached for future use. If the file does not exist
* when the first attempt is made to read from it, no further attempts are
* made to check for its existence. It is not possible to change the value
* of any property in jaxp.properties after it has been read for the first time.
* META-INF/services/javax.xml.parsers.SAXParserFactory
* in jars available to the runtime.
* SAXParserFactory
instance.
* SAXParserFactory
it can use the factory to
* configure and obtain parser instances.
*
*
*
* Setting the jaxp.debug
system property will cause
* this method to print a lot of debug messages
* to System.err about what it is doing and where it is looking at.
If you have problems loading {@link SAXParser}s, try:
** java -Djaxp.debug=1 YourProgram .... ** * * @return A new instance of a SAXParserFactory. * * @exception FactoryConfigurationError if the implementation is * not available or cannot be instantiated. */ public static SAXParserFactory newInstance() { try { return (SAXParserFactory) FactoryFinder.find( /* The default property name according to the JAXP spec */ "javax.xml.parsers.SAXParserFactory", /* The fallback implementation class name */ "org.apache.xerces.jaxp.SAXParserFactoryImpl"); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } /** * @return A new instance of a SAXParserFactory. * * @exception FactoryConfigurationError if the implementation is * not available or cannot be instantiated. */ public static SAXParserFactory newInstance(String factoryClassName, ClassLoader classLoader) { if (factoryClassName == null) { throw new FactoryConfigurationError("factoryClassName cannot be null."); } if (classLoader == null) { classLoader = SecuritySupport.getContextClassLoader(); } try { return (SAXParserFactory) FactoryFinder.newInstance(factoryClassName, classLoader, false); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } /** *
Creates a new instance of a SAXParser using the currently * configured factory parameters.
* * @return A new instance of a SAXParser. * * @exception ParserConfigurationException if a parser cannot * be created which satisfies the requested configuration. * @exception SAXException for SAX errors. */ public abstract SAXParser newSAXParser() throws ParserConfigurationException, SAXException; /** * Specifies that the parser produced by this code will * provide support for XML namespaces. By default the value of this is set * tofalse
.
*
* @param awareness true if the parser produced by this code will
* provide support for XML namespaces; false otherwise.
*/
public void setNamespaceAware(boolean awareness) {
this.namespaceAware = awareness;
}
/**
* Specifies that the parser produced by this code will
* validate documents as they are parsed. By default the value of this is
* set to false
.
*
* * Note that "the validation" here means * a validating * parser as defined in the XML recommendation. * In other words, it essentially just controls the DTD validation. * (except the legacy two properties defined in JAXP 1.2. * See here for more details.) *
* ** To use modern schema languages such as W3C XML Schema or * RELAX NG instead of DTD, you can configure your parser to be * a non-validating parser by leaving the {@link #setValidating(boolean)} * method false, then use the {@link #setSchema(Schema)} * method to associate a schema to a parser. *
* * @param validating true if the parser produced by this code will * validate documents as they are parsed; false otherwise. */ public void setValidating(boolean validating) { this.validating = validating; } /** * Indicates whether or not the factory is configured to produce * parsers which are namespace aware. * * @return true if the factory is configured to produce * parsers which are namespace aware; false otherwise. */ public boolean isNamespaceAware() { return namespaceAware; } /** * Indicates whether or not the factory is configured to produce * parsers which validate the XML content during parse. * * @return true if the factory is configured to produce parsers which validate * the XML content during parse; false otherwise. */ public boolean isValidating() { return validating; } /** * *Sets the particular feature in the underlying implementation of * org.xml.sax.XMLReader. * A list of the core features and properties can be found at * http://www.saxproject.org/
* *All implementations are required to support the {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING} feature. * When the feature is
*true
: the implementation will limit XML processing to conform to implementation limits.
* Examples include entity expansion limits and XML Schema constructs that would consume large amounts of resources.
* If XML processing is limited for security reasons, it will be reported via a call to the registered
* {@link org.xml.sax.ErrorHandler#fatalError(SAXParseException exception)}.
* See {@link SAXParser} parse
methods for handler specification.
* false
, the implementation will processing XML according to the XML specifications without
* regard to possible implementation limits.
* name
parameter is null.
*
* @see org.xml.sax.XMLReader#setFeature
*/
public abstract void setFeature(String name, boolean value)
throws ParserConfigurationException, SAXNotRecognizedException,
SAXNotSupportedException;
/**
*
* Returns the particular property requested for in the underlying * implementation of org.xml.sax.XMLReader.
* * @param name The name of the property to be retrieved. * * @return Value of the requested property. * * @exception ParserConfigurationException if a parser cannot be created which satisfies the requested configuration. * @exception SAXNotRecognizedException When the underlying XMLReader does not recognize the property name. * @exception SAXNotSupportedException When the underlying XMLReader recognizes the property name but doesn't support the property. * * @see org.xml.sax.XMLReader#getProperty */ public abstract boolean getFeature(String name) throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException; /** * Gets the {@link Schema} object specified through * the {@link #setSchema(Schema schema)} method. * * * @throws UnsupportedOperationException * For backward compatibility, when implementations for * earlier versions of JAXP is used, this exception will be * thrown. * * @return * the {@link Schema} object that was last set through * the {@link #setSchema(Schema)} method, or null * if the method was not invoked since a {@link SAXParserFactory} * is created. * * @since 1.5 */ public Schema getSchema() { throw new UnsupportedOperationException( "This parser does not support specification \"" + this.getClass().getPackage().getSpecificationTitle() + "\" version \"" + this.getClass().getPackage().getSpecificationVersion() + "\"" ); } /** *Set the {@link Schema} to be used by parsers created * from this factory.
* *When a {@link Schema} is non-null, a parser will use a validator * created from it to validate documents before it passes information * down to the application.
* *When warnings/errors/fatal errors are found by the validator, the parser must * handle them as if those errors were found by the parser itself. * In other words, if the user-specified {@link org.xml.sax.ErrorHandler} * is set, it must receive those errors, and if not, they must be * treated according to the implementation specific * default error handling rules. * *
A validator may modify the SAX event stream (for example by * adding default values that were missing in documents), and a parser * is responsible to make sure that the application will receive * those modified event stream.
* *Initially, null
is set as the {@link Schema}.
This processing will take effect even if
* the {@link #isValidating()} method returns false
.
*
*
It is an error to use
* the http://java.sun.com/xml/jaxp/properties/schemaSource
* property and/or the http://java.sun.com/xml/jaxp/properties/schemaLanguage
* property in conjunction with a non-null {@link Schema} object.
* Such configuration will cause a {@link SAXException}
* exception when those properties are set on a {@link SAXParser}.
* A parser must be able to work with any {@link Schema} * implementation. However, parsers and schemas are allowed * to use implementation-specific custom mechanisms * as long as they yield the result described in the specification. *
* * @param schemaSchema
to use, null
to remove a schema.
*
* @throws UnsupportedOperationException
* For backward compatibility, when implementations for
* earlier versions of JAXP is used, this exception will be
* thrown.
*
* @since 1.5
*/
public void setSchema(Schema schema) {
throw new UnsupportedOperationException(
"This parser does not support specification \""
+ this.getClass().getPackage().getSpecificationTitle()
+ "\" version \""
+ this.getClass().getPackage().getSpecificationVersion()
+ "\""
);
}
/**
* Set state of XInclude processing.
* *If XInclude markup is found in the document instance, should it be * processed as specified in * XML Inclusions (XInclude) Version 1.0.
* *XInclude processing defaults to false
.
true
or
* false
*
* @throws UnsupportedOperationException
* For backward compatibility, when implementations for
* earlier versions of JAXP is used, this exception will be
* thrown.
*
* @since 1.5
*/
public void setXIncludeAware(final boolean state) {
throw new UnsupportedOperationException(
"This parser does not support specification \""
+ this.getClass().getPackage().getSpecificationTitle()
+ "\" version \""
+ this.getClass().getPackage().getSpecificationVersion()
+ "\""
);
}
/**
* Get state of XInclude processing.
* * @return current state of XInclude processing * * @throws UnsupportedOperationException * For backward compatibility, when implementations for * earlier versions of JAXP is used, this exception will be * thrown. * * @since 1.5 */ public boolean isXIncludeAware() { throw new UnsupportedOperationException( "This parser does not support specification \"" + this.getClass().getPackage().getSpecificationTitle() + "\" version \"" + this.getClass().getPackage().getSpecificationVersion() + "\"" ); } } javax/xml/parsers/SecuritySupport.java 100644 0 0 7034 11146172411 15646 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SecuritySupport.java 670282 2008-06-22 01:00:42Z mrglavas $ package javax.xml.parsers; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; /** * This class is duplicated for each JAXP subpackage so keep it in sync. * It is package private and therefore is not exposed as part of the JAXP * API. * * Security related methods that only work on J2SE 1.2 and newer. */ final class SecuritySupport { private SecuritySupport() {} static ClassLoader getContextClassLoader() { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (SecurityException ex) { } return cl; } }); } static String getSystemProperty(final String propName) { return (String) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty(propName); } }); } static FileInputStream getFileInputStream(final File file) throws FileNotFoundException { try { return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws FileNotFoundException { return new FileInputStream(file); } }); } catch (PrivilegedActionException e) { throw (FileNotFoundException)e.getException(); } } static InputStream getResourceAsStream(final ClassLoader cl, final String name) { return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { InputStream ris; if (cl == null) { ris = ClassLoader.getSystemResourceAsStream(name); } else { ris = cl.getResourceAsStream(name); } return ris; } }); } static boolean doesFileExist(final File f) { return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return f.exists() ? Boolean.TRUE : Boolean.FALSE; } })).booleanValue(); } } javax/xml/parsers/package.html 100644 0 0 464 11146172411 14040 0 ustar 0 0 Provides classes allowing the processing of XML documents. Two types of plugable parsers are supported:Debug flag to trace loading process.
*/ private static boolean debug = false; /** *Cache properties for performance.
*/ private static Properties cacheProps = new Properties(); /** *First time requires initialization overhead.
*/ private static boolean firstTime = true; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; // Define system property "jaxp.debug" to get output static { // Use try/catch block to support applets, which throws // SecurityException out of this code. try { String val = SecuritySupport.getSystemProperty("jaxp.debug"); // Allow simply setting the prop to turn on debug debug = val != null && (! "false".equals(val)); } catch (SecurityException se) { debug = false; } } private FactoryFinder() {} private static void dPrint(String msg) { if (debug) { System.err.println("JAXP: " + msg); } } /** * Create an instance of a class using the specified ClassLoader and * optionally fall back to the current ClassLoader if not found. * * @param className Name of the concrete class corresponding to the * service provider * * @param cl ClassLoader to use to load the class, null means to use * the bootstrap ClassLoader * * @param doFallback true if the current ClassLoader should be tried as * a fallback if the class is not found using cl */ private static Object newInstance(String className, ClassLoader cl, boolean doFallback) throws ConfigurationError { // assert(className != null); try { Class providerClass; if (cl == null) { // If classloader is null Use the bootstrap ClassLoader. // Thus Class.forName(String) will use the current // ClassLoader which will be the bootstrap ClassLoader. providerClass = Class.forName(className); } else { try { providerClass = cl.loadClass(className); } catch (ClassNotFoundException x) { if (doFallback) { // Fall back to current classloader cl = FactoryFinder.class.getClassLoader(); if (cl != null) { providerClass = cl.loadClass(className); } else { providerClass = Class.forName(className); } } else { throw x; } } } Object instance = providerClass.newInstance(); if (debug) dPrint("created new instance of " + providerClass + " using ClassLoader: " + cl); return instance; } catch (ClassNotFoundException x) { throw new ConfigurationError( "Provider " + className + " not found", x); } catch (Exception x) { throw new ConfigurationError( "Provider " + className + " could not be instantiated: " + x, x); } } /** * Finds the implementation Class object in the specified order. Main * entry point. * @return Class object of factory, never null * * @param factoryId Name of the factory to find, same as * a property name * @param fallbackClassName Implementation class name, if nothing else * is found. Use null to mean no fallback. * * Package private so this code can be shared. */ static Object find(String factoryId, String fallbackClassName) throws ConfigurationError { // Figure out which ClassLoader to use for loading the provider // class. If there is a Context ClassLoader then use it. ClassLoader classLoader = SecuritySupport.getContextClassLoader(); if (classLoader == null) { // if we have no Context ClassLoader // so use the current ClassLoader classLoader = FactoryFinder.class.getClassLoader(); } return find(factoryId, classLoader, fallbackClassName); } /** * Finds the implementation Class object in the specified order. Main * entry point. * @return Class object of factory, never null * * @param factoryId Name of the factory to find, same as * a property name * @param classLoader The ClassLoader to use * @param fallbackClassName Implementation class name, if nothing else * is found. Use null to mean no fallback. * * Package private so this code can be shared. */ static Object find(String factoryId, ClassLoader classLoader, String fallbackClassName) throws ConfigurationError { if (debug) dPrint("find factoryId =" + factoryId); // Use the system property first try { String systemProp = SecuritySupport.getSystemProperty(factoryId); if (systemProp != null && systemProp.length() > 0) { if (debug) dPrint("found system property, value=" + systemProp); return newInstance(systemProp, classLoader, true); } } catch (SecurityException se) { //if first option fails due to any reason we should try next option in the //look up algorithm. } // try to read from $java.home/lib/stax.properties try { String javah = SecuritySupport.getSystemProperty("java.home"); String configFile = javah + File.separator + "lib" + File.separator + "stax.properties"; String factoryClassName = null; if(firstTime){ synchronized(cacheProps){ if(firstTime){ File f=new File( configFile ); firstTime = false; if(SecuritySupport.doesFileExist(f)){ if (debug) dPrint("Read properties file "+f); //cacheProps.load( new FileInputStream(f)); cacheProps.load(SecuritySupport.getFileInputStream(f)); } } } } factoryClassName = cacheProps.getProperty(factoryId); if(factoryClassName != null){ if (debug) dPrint("found in $java.home/stax.properties, value=" + factoryClassName); return newInstance(factoryClassName, classLoader, true); } } catch(Exception ex ) { if( debug ) ex.printStackTrace(); } // Try Jar Service Provider Mechanism Object provider = findJarServiceProvider(factoryId); if (provider != null) { return provider; } if (fallbackClassName == null) { throw new ConfigurationError( "Provider for " + factoryId + " cannot be found", null); } if (debug) dPrint("loaded from fallback value: " + fallbackClassName); return newInstance(fallbackClassName, classLoader, true); } /* * Try to find provider using Jar Service Provider Mechanism * * @return instance of provider class if found or null */ private static Object findJarServiceProvider(String factoryId) throws ConfigurationError { String serviceId = "META-INF/services/" + factoryId; InputStream is = null; // First try the Context ClassLoader ClassLoader cl = SecuritySupport.getContextClassLoader(); if (cl != null) { is = SecuritySupport.getResourceAsStream(cl, serviceId); // If no provider found then try the current ClassLoader if (is == null) { cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } } else { // No Context ClassLoader, try the current // ClassLoader cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } if (is == null) { // No provider found return null; } if (debug) dPrint("found jar resource=" + serviceId + " using ClassLoader: " + cl); // Read the service provider name in UTF-8 as specified in // the jar spec. Unfortunately this fails in Microsoft // VJ++, which does not implement the UTF-8 // encoding. Theoretically, we should simply let it fail in // that case, since the JVM is obviously broken if it // doesn't support such a basic standard. But since there // are still some users attempting to use VJ++ for // development, we have dropped in a fallback which makes a // second attempt using the platform's default encoding. In // VJ++ this is apparently ASCII, which is a subset of // UTF-8... and since the strings we'll be reading here are // also primarily limited to the 7-bit ASCII range (at // least, in English versions), this should work well // enough to keep us on the air until we're ready to // officially decommit from VJ++. [Edited comment from // jkesselm] BufferedReader rd; try { rd = new BufferedReader(new InputStreamReader(is, "UTF-8"), DEFAULT_LINE_LENGTH); } catch (java.io.UnsupportedEncodingException e) { rd = new BufferedReader(new InputStreamReader(is), DEFAULT_LINE_LENGTH); } String factoryClassName = null; try { // XXX Does not handle all possible input as specified by the // Jar Service Provider specification factoryClassName = rd.readLine(); } catch (IOException x) { // No provider found return null; } finally { try { // try to close the reader. rd.close(); } // Ignore the exception. catch (IOException exc) {} } if (factoryClassName != null && ! "".equals(factoryClassName)) { if (debug) dPrint("found in resource, value=" + factoryClassName); // Note: here we do not want to fall back to the current // ClassLoader because we want to avoid the case where the // resource file was found using one ClassLoader and the // provider class was instantiated using a different one. return newInstance(factoryClassName, cl, false); } // No provider found return null; } static class ConfigurationError extends Error { private static final long serialVersionUID = 1L; private Exception exception; /** * Construct a new instance with the specified detail string and * exception. */ ConfigurationError(String msg, Exception x) { super(msg); this.exception = x; } Exception getException() { return exception; } } } javax/xml/stream/Location.java 100644 0 0 2150 11146172415 14024 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Location.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; public interface Location { public int getCharacterOffset(); public int getColumnNumber(); public int getLineNumber(); public String getPublicId(); public String getSystemId(); } javax/xml/stream/SecuritySupport.java 100644 0 0 7033 11146172415 15465 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SecuritySupport.java 670281 2008-06-22 00:55:09Z mrglavas $ package javax.xml.stream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; /** * This class is duplicated for each JAXP subpackage so keep it in sync. * It is package private and therefore is not exposed as part of the JAXP * API. * * Security related methods that only work on J2SE 1.2 and newer. */ final class SecuritySupport { private SecuritySupport() {} static ClassLoader getContextClassLoader() { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (SecurityException ex) { } return cl; } }); } static String getSystemProperty(final String propName) { return (String) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty(propName); } }); } static FileInputStream getFileInputStream(final File file) throws FileNotFoundException { try { return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws FileNotFoundException { return new FileInputStream(file); } }); } catch (PrivilegedActionException e) { throw (FileNotFoundException)e.getException(); } } static InputStream getResourceAsStream(final ClassLoader cl, final String name) { return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { InputStream ris; if (cl == null) { ris = ClassLoader.getSystemResourceAsStream(name); } else { ris = cl.getResourceAsStream(name); } return ris; } }); } static boolean doesFileExist(final File f) { return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return f.exists() ? Boolean.TRUE : Boolean.FALSE; } })).booleanValue(); } } javax/xml/stream/StreamFilter.java 100644 0 0 1756 11146172415 14670 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: StreamFilter.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; public interface StreamFilter { public boolean accept(XMLStreamReader reader); } javax/xml/stream/XMLEventFactory.java 100644 0 0 12211 11146172415 15265 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLEventFactory.java 730320 2008-12-31 06:20:06Z mrglavas $ package javax.xml.stream; import java.util.Iterator; import javax.xml.namespace.NamespaceContext; import javax.xml.stream.events.ProcessingInstruction; import javax.xml.namespace.QName; import javax.xml.stream.events.Characters; import javax.xml.stream.events.Comment; import javax.xml.stream.events.DTD; import javax.xml.stream.events.EndElement; import javax.xml.stream.events.EntityDeclaration; import javax.xml.stream.events.Namespace; import javax.xml.stream.events.Attribute; import javax.xml.stream.events.EndDocument; import javax.xml.stream.events.EntityReference; import javax.xml.stream.events.StartDocument; import javax.xml.stream.events.StartElement; public abstract class XMLEventFactory { private static final String PROPERTY_NAME = "javax.xml.stream.XMLEventFactory"; private static final String DEFAULT_FACTORY = "org.apache.xerces.stax.XMLEventFactoryImpl"; protected XMLEventFactory() {} public static XMLEventFactory newInstance() throws FactoryConfigurationError { try { return (XMLEventFactory) FactoryFinder.find(PROPERTY_NAME, DEFAULT_FACTORY); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } public static XMLEventFactory newInstance(String factoryId, ClassLoader classLoader) throws FactoryConfigurationError { if (classLoader == null) { classLoader = SecuritySupport.getContextClassLoader(); } try { return (XMLEventFactory) FactoryFinder.find(factoryId, classLoader, DEFAULT_FACTORY); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } public abstract void setLocation(Location location); public abstract Attribute createAttribute(QName name, String value); public abstract Attribute createAttribute(String localName, String value); public abstract Attribute createAttribute(String prefix, String namespaceURI, String localName, String value); public abstract Namespace createNamespace(String namespaceUri); public abstract Namespace createNamespace(String prefix, String namespaceUri); public abstract StartElement createStartElement(QName name, Iterator attributes, Iterator namespaces); public abstract StartElement createStartElement(String prefix, String namespaceUri, String localName); public abstract StartElement createStartElement(String prefix, String namespaceUri, String localName, Iterator attributes, Iterator namespaces); public abstract StartElement createStartElement(String prefix, String namespaceUri, String localName, Iterator attributes, Iterator namespaces, NamespaceContext context); public abstract EndElement createEndElement(QName name, Iterator namespaces); public abstract EndElement createEndElement(String prefix, String namespaceUri, String localName); public abstract EndElement createEndElement(String prefix, String namespaceUri, String localName, Iterator namespaces); public abstract Characters createCharacters(String content); public abstract Characters createCData(String content); public abstract Characters createSpace(String content); public abstract Characters createIgnorableSpace(String content); public abstract StartDocument createStartDocument(); public abstract StartDocument createStartDocument(String encoding); public abstract StartDocument createStartDocument(String encoding, String version); public abstract StartDocument createStartDocument(String encoding, String version, boolean standalone); public abstract EndDocument createEndDocument(); public abstract EntityReference createEntityReference(String name, EntityDeclaration declaration); public abstract Comment createComment(String text); public abstract ProcessingInstruction createProcessingInstruction( String target, String data); public abstract DTD createDTD(String dtd); } javax/xml/stream/XMLEventReader.java 100644 0 0 2663 11146172415 15052 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLEventReader.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; import java.util.Iterator; import javax.xml.stream.events.XMLEvent; public interface XMLEventReader extends Iterator { public void close() throws XMLStreamException; public String getElementText() throws XMLStreamException; public Object getProperty(String name) throws IllegalArgumentException; public boolean hasNext(); public XMLEvent nextEvent() throws XMLStreamException; public XMLEvent nextTag() throws XMLStreamException; public XMLEvent peek() throws XMLStreamException; } javax/xml/stream/XMLEventWriter.java 100644 0 0 3321 11146172415 15114 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLEventWriter.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; import javax.xml.namespace.NamespaceContext; import javax.xml.stream.events.XMLEvent; import javax.xml.stream.util.XMLEventConsumer; public interface XMLEventWriter extends XMLEventConsumer { public void add(XMLEvent event) throws XMLStreamException; public void add(XMLEventReader reader) throws XMLStreamException; public void close() throws XMLStreamException; public void flush() throws XMLStreamException; public NamespaceContext getNamespaceContext(); public String getPrefix(String uri) throws XMLStreamException; public void setDefaultNamespace(String uri) throws XMLStreamException; public void setNamespaceContext(NamespaceContext context) throws XMLStreamException; public void setPrefix(String prefix, String uri) throws XMLStreamException; } javax/xml/stream/XMLInputFactory.java 100644 0 0 12736 11146172415 15317 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLInputFactory.java 670283 2008-06-22 01:04:09Z mrglavas $ package javax.xml.stream; import java.io.InputStream; import java.io.Reader; import javax.xml.stream.util.XMLEventAllocator; public abstract class XMLInputFactory { public static final String ALLOCATOR = "javax.xml.stream.allocator"; public static final String IS_COALESCING = "javax.xml.stream.isCoalescing"; public static final String IS_NAMESPACE_AWARE = "javax.xml.stream.isNamespaceAware"; public static final String IS_REPLACING_ENTITY_REFERENCES = "javax.xml.stream.isReplacingEntityReferences"; public static final String IS_SUPPORTING_EXTERNAL_ENTITIES = "javax.xml.stream.isSupportingExternalEntities"; public static final String IS_VALIDATING = "javax.xml.stream.isValidating"; public static final String REPORTER = "javax.xml.stream.reporter"; public static final String RESOLVER = "javax.xml.stream.resolver"; public static final String SUPPORT_DTD = "javax.xml.stream.supportDTD"; private static final String PROPERTY_NAME = "javax.xml.stream.XMLInputFactory"; private static final String DEFAULT_FACTORY = "com.ctc.wstx.stax.WstxInputFactory"; protected XMLInputFactory() {} public static XMLInputFactory newInstance() throws FactoryConfigurationError { try { return (XMLInputFactory) FactoryFinder.find(PROPERTY_NAME, DEFAULT_FACTORY); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } public static XMLInputFactory newInstance(String factoryId, ClassLoader classLoader) throws FactoryConfigurationError { if (classLoader == null) { classLoader = SecuritySupport.getContextClassLoader(); } try { return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader, DEFAULT_FACTORY); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } public abstract XMLStreamReader createXMLStreamReader(Reader reader) throws XMLStreamException; public abstract XMLStreamReader createXMLStreamReader( javax.xml.transform.Source source) throws XMLStreamException; public abstract XMLStreamReader createXMLStreamReader( InputStream stream) throws XMLStreamException; public abstract XMLStreamReader createXMLStreamReader( InputStream stream, String encoding) throws XMLStreamException; public abstract XMLStreamReader createXMLStreamReader( String systemId, InputStream stream) throws XMLStreamException; public abstract XMLStreamReader createXMLStreamReader( String systemId, Reader reader) throws XMLStreamException; public abstract XMLEventReader createXMLEventReader(Reader reader) throws XMLStreamException; public abstract XMLEventReader createXMLEventReader( String systemId, Reader reader) throws XMLStreamException; public abstract XMLEventReader createXMLEventReader(XMLStreamReader reader) throws XMLStreamException; public abstract XMLEventReader createXMLEventReader( javax.xml.transform.Source source) throws XMLStreamException; public abstract XMLEventReader createXMLEventReader( InputStream stream) throws XMLStreamException; public abstract XMLEventReader createXMLEventReader( InputStream stream, String encoding) throws XMLStreamException; public abstract XMLEventReader createXMLEventReader( String systemId, InputStream stream) throws XMLStreamException; public abstract XMLStreamReader createFilteredReader( XMLStreamReader reader, StreamFilter filter) throws XMLStreamException; public abstract XMLEventReader createFilteredReader(XMLEventReader reader, EventFilter filter) throws XMLStreamException; public abstract XMLResolver getXMLResolver(); public abstract void setXMLResolver(XMLResolver resolver); public abstract XMLReporter getXMLReporter(); public abstract void setXMLReporter(XMLReporter reporter); public abstract void setProperty(String name, Object value) throws IllegalArgumentException; public abstract Object getProperty(String name) throws IllegalArgumentException; public abstract boolean isPropertySupported(String name); public abstract void setEventAllocator(XMLEventAllocator allocator); public abstract XMLEventAllocator getEventAllocator(); } javax/xml/stream/XMLOutputFactory.java 100644 0 0 6765 11146172415 15505 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLOutputFactory.java 670283 2008-06-22 01:04:09Z mrglavas $ package javax.xml.stream; import java.io.OutputStream; import java.io.Writer; public abstract class XMLOutputFactory { public static final String IS_REPAIRING_NAMESPACES = "javax.xml.stream.isRepairingNamespaces"; private static final String PROPERTY_NAME = "javax.xml.stream.XMLOutputFactory"; private static final String DEFAULT_FACTORY = "com.ctc.wstx.stax.WstxOutputFactory"; protected XMLOutputFactory() {} public static XMLOutputFactory newInstance() throws FactoryConfigurationError { try { return (XMLOutputFactory) FactoryFinder.find(PROPERTY_NAME, DEFAULT_FACTORY); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } public static XMLInputFactory newInstance(String factoryId, ClassLoader classLoader) throws FactoryConfigurationError { if (classLoader == null) { classLoader = SecuritySupport.getContextClassLoader(); } try { return (XMLInputFactory) FactoryFinder.find(factoryId, classLoader, "com.ctc.wstx.stax.WstxInputFactory"); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } } public abstract XMLStreamWriter createXMLStreamWriter(Writer stream) throws XMLStreamException; public abstract XMLStreamWriter createXMLStreamWriter( OutputStream stream) throws XMLStreamException; public abstract XMLStreamWriter createXMLStreamWriter( OutputStream stream, String encoding) throws XMLStreamException; public abstract XMLStreamWriter createXMLStreamWriter( javax.xml.transform.Result result) throws XMLStreamException; public abstract XMLEventWriter createXMLEventWriter( javax.xml.transform.Result result) throws XMLStreamException; public abstract XMLEventWriter createXMLEventWriter( OutputStream stream) throws XMLStreamException; public abstract XMLEventWriter createXMLEventWriter( OutputStream stream, String encoding) throws XMLStreamException; public abstract XMLEventWriter createXMLEventWriter(Writer stream) throws XMLStreamException; public abstract void setProperty(String name, Object value) throws IllegalArgumentException; public abstract Object getProperty(String name) throws IllegalArgumentException; public abstract boolean isPropertySupported(String name); } javax/xml/stream/XMLReporter.java 100644 0 0 2137 11146172415 14444 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLReporter.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; public interface XMLReporter { void report(String message, String errorType, Object relatedInformation, Location location) throws XMLStreamException; } javax/xml/stream/XMLResolver.java 100644 0 0 2142 11146172415 14437 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLResolver.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; public interface XMLResolver { public Object resolveEntity(String publicID, String systemID, String baseURI, String namespace) throws XMLStreamException; } javax/xml/stream/XMLStreamConstants.java 100644 0 0 3223 11146172415 15767 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLStreamConstants.java 670269 2008-06-21 23:27:48Z mrglavas $ package javax.xml.stream; public interface XMLStreamConstants { public static final int START_ELEMENT = 1; public static final int END_ELEMENT = 2; public static final int PROCESSING_INSTRUCTION = 3; public static final int CHARACTERS = 4; public static final int COMMENT = 5; public static final int SPACE = 6; public static final int START_DOCUMENT = 7; public static final int END_DOCUMENT = 8; public static final int ENTITY_REFERENCE = 9; public static final int ATTRIBUTE = 10; public static final int DTD = 11; public static final int CDATA = 12; public static final int NAMESPACE = 13; public static final int NOTATION_DECLARATION = 14; public static final int ENTITY_DECLARATION = 15; } javax/xml/stream/XMLStreamException.java 100644 0 0 3612 11146172416 15754 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLStreamException.java 670245 2008-06-21 18:03:15Z mrglavas $ package javax.xml.stream; public class XMLStreamException extends Exception { private static final long serialVersionUID = 2018819321811497362L; protected Throwable nested; protected Location location; public XMLStreamException() { super(); } public XMLStreamException(String msg) { super(msg); } public XMLStreamException(Throwable th) { this.nested = th; } public XMLStreamException(String msg, Throwable th) { super(msg); this.nested = th; } public XMLStreamException(String msg, Location location, Throwable th) { super(msg); this.location = location; this.nested = th; } public XMLStreamException(String msg, Location location) { super(msg); this.location = location; } public Throwable getNestedException() { return nested; } public Location getLocation() { return location; } } javax/xml/stream/XMLStreamReader.java 100644 0 0 6332 11146172415 15221 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLStreamReader.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; public interface XMLStreamReader extends XMLStreamConstants { public void close() throws XMLStreamException; public int getAttributeCount(); public String getAttributeLocalName(int index); public QName getAttributeName(int index); public String getAttributeNamespace(int index); public String getAttributePrefix(int index); public String getAttributeType(int index); public String getAttributeValue(int index); public String getAttributeValue(String namespaceURI, String localName); public String getCharacterEncodingScheme(); public String getElementText() throws XMLStreamException; public String getEncoding(); public int getEventType(); public String getLocalName(); public Location getLocation(); public QName getName(); public NamespaceContext getNamespaceContext(); public int getNamespaceCount(); public String getNamespacePrefix(int index); public String getNamespaceURI(); public String getNamespaceURI(int index); public String getNamespaceURI(String prefix); public String getPIData(); public String getPITarget(); public String getPrefix(); public java.lang.Object getProperty(String name) throws IllegalArgumentException; public String getText(); public char[] getTextCharacters(); public int getTextCharacters(int sourceStart, char[] target, int targetStart, int length) throws XMLStreamException; public int getTextLength(); public int getTextStart(); public String getVersion(); public boolean hasName(); public boolean hasNext() throws XMLStreamException; public boolean hasText(); public boolean isAttributeSpecified(int index); public boolean isCharacters(); public boolean isEndElement(); public boolean isStandalone(); public boolean isStartElement(); public boolean isWhiteSpace(); public int next() throws XMLStreamException; public int nextTag() throws XMLStreamException ; public void require(int type, String namespaceURI, String localName) throws XMLStreamException ; public boolean standaloneSet(); } javax/xml/stream/XMLStreamWriter.java 100644 0 0 7353 11146172415 15277 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLStreamWriter.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream; import javax.xml.namespace.NamespaceContext; public interface XMLStreamWriter { public void close() throws XMLStreamException; public void flush() throws XMLStreamException; public NamespaceContext getNamespaceContext(); public String getPrefix(String uri) throws XMLStreamException; public Object getProperty(String name) throws IllegalArgumentException; public void setDefaultNamespace(String uri) throws XMLStreamException; public void setNamespaceContext(NamespaceContext context) throws XMLStreamException; public void setPrefix(String prefix, String uri) throws XMLStreamException; public void writeAttribute(String localName, String value) throws XMLStreamException; public void writeAttribute(String namespaceURI, String localName, String value) throws XMLStreamException; public void writeAttribute(String prefix, String namespaceURI, String localName, String value) throws XMLStreamException; public void writeCData(String data) throws XMLStreamException; public void writeCharacters(char[] text, int start, int len) throws XMLStreamException; public void writeCharacters(String text) throws XMLStreamException; public void writeComment(String data) throws XMLStreamException; public void writeDefaultNamespace(String namespaceURI) throws XMLStreamException; public void writeDTD(String dtd) throws XMLStreamException; public void writeEmptyElement(String localName) throws XMLStreamException; public void writeEmptyElement(String namespaceURI, String localName) throws XMLStreamException; public void writeEmptyElement(String prefix, String localName, String namespaceURI) throws XMLStreamException; public void writeEndDocument() throws XMLStreamException; public void writeEndElement() throws XMLStreamException; public void writeEntityRef(String name) throws XMLStreamException; public void writeNamespace(String prefix, String namespaceURI) throws XMLStreamException; public void writeProcessingInstruction(String target) throws XMLStreamException; public void writeProcessingInstruction(String target, String data) throws XMLStreamException; public void writeStartDocument() throws XMLStreamException; public void writeStartDocument(String version) throws XMLStreamException; public void writeStartDocument(String encoding, String version) throws XMLStreamException; public void writeStartElement(String localName) throws XMLStreamException; public void writeStartElement(String namespaceURI, String localName) throws XMLStreamException; public void writeStartElement(String prefix, String localName, String namespaceURI) throws XMLStreamException; } javax/xml/stream/events/Attribute.java 100644 0 0 2167 11146172414 15532 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Attribute.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; import javax.xml.namespace.QName; public interface Attribute extends XMLEvent { public String getDTDType(); public QName getName(); public String getValue(); public boolean isSpecified(); } javax/xml/stream/events/Characters.java 100644 0 0 2142 11146172414 15637 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Characters.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface Characters extends XMLEvent { public String getData(); public boolean isCData(); public boolean isIgnorableWhiteSpace(); public boolean isWhiteSpace(); } javax/xml/stream/events/Comment.java 100644 0 0 1746 11146172414 15173 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Comment.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface Comment extends XMLEvent { public String getText(); } javax/xml/stream/events/DTD.java 100644 0 0 2170 11146172414 14174 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: DTD.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; import java.util.List; public interface DTD extends XMLEvent { public String getDocumentTypeDeclaration(); public List getEntities(); public List getNotations(); public Object getProcessedDTD(); } javax/xml/stream/events/EndDocument.java 100644 0 0 1720 11146172414 15766 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: EndDocument.java 669791 2008-06-20 04:54:13Z mrglavas $ package javax.xml.stream.events; public interface EndDocument extends XMLEvent { } javax/xml/stream/events/EndElement.java 100644 0 0 2124 11146172414 15600 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: EndElement.java 669791 2008-06-20 04:54:13Z mrglavas $ package javax.xml.stream.events; import java.util.Iterator; import javax.xml.namespace.QName; public interface EndElement extends XMLEvent { public QName getName(); public Iterator getNamespaces(); } javax/xml/stream/events/EntityDeclaration.java 100644 0 0 2270 11146172414 17204 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: EntityDeclaration.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface EntityDeclaration extends XMLEvent { public String getBaseURI(); public String getName(); public String getNotationName(); public String getPublicId(); public String getReplacementText(); public String getSystemId(); } javax/xml/stream/events/EntityReference.java 100644 0 0 2050 11146172414 16651 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: EntityReference.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface EntityReference extends XMLEvent { public EntityDeclaration getDeclaration(); public String getName(); } javax/xml/stream/events/Namespace.java 100644 0 0 2114 11146172414 15453 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Namespace.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface Namespace extends Attribute { public String getNamespaceURI(); public String getPrefix(); public boolean isDefaultNamespaceDeclaration(); } javax/xml/stream/events/NotationDeclaration.java 100644 0 0 2106 11146172414 17521 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: NotationDeclaration.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface NotationDeclaration extends XMLEvent { public String getName(); public String getPublicId(); public String getSystemId(); } javax/xml/stream/events/ProcessingInstruction.java 100644 0 0 2044 11146172414 20137 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: ProcessingInstruction.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface ProcessingInstruction extends XMLEvent { public String getData(); public String getTarget(); } javax/xml/stream/events/StartDocument.java 100644 0 0 2276 11146172414 16364 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: StartDocument.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; public interface StartDocument extends XMLEvent { public boolean encodingSet(); public String getCharacterEncodingScheme(); public String getSystemId(); public String getVersion(); public boolean isStandalone(); public boolean standaloneSet(); } javax/xml/stream/events/StartElement.java 100644 0 0 2521 11146172414 16170 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: StartElement.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; import java.util.Iterator; import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; public interface StartElement extends XMLEvent { public Attribute getAttributeByName(QName name); public Iterator getAttributes(); public QName getName(); public NamespaceContext getNamespaceContext(); public Iterator getNamespaces(); public String getNamespaceURI(String prefix); } javax/xml/stream/events/XMLEvent.java 100644 0 0 3467 11146172414 15235 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLEvent.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.events; import java.io.Writer; import javax.xml.namespace.QName; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; public interface XMLEvent extends XMLStreamConstants { public Characters asCharacters(); public EndElement asEndElement(); public StartElement asStartElement(); public int getEventType(); public Location getLocation(); public QName getSchemaType(); public boolean isAttribute(); public boolean isCharacters(); public boolean isEndDocument(); public boolean isEndElement(); public boolean isEntityReference(); public boolean isNamespace(); public boolean isProcessingInstruction(); public boolean isStartDocument(); public boolean isStartElement(); public void writeAsEncodedUnicode(Writer writer) throws XMLStreamException; } javax/xml/stream/util/EventReaderDelegate.java 100644 0 0 4510 11146172415 17072 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: EventReaderDelegate.java 670273 2008-06-21 23:31:31Z mrglavas $ package javax.xml.stream.util; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.XMLEvent; public class EventReaderDelegate implements XMLEventReader { private XMLEventReader reader; public EventReaderDelegate() {} public EventReaderDelegate(XMLEventReader reader) { this.reader = reader; } public void setParent(XMLEventReader reader) { this.reader = reader; } public XMLEventReader getParent() { return reader; } /* * XMLEventReader methods */ public void close() throws XMLStreamException { reader.close(); } public String getElementText() throws XMLStreamException { return reader.getElementText(); } public Object getProperty(String name) throws IllegalArgumentException { return reader.getProperty(name); } public boolean hasNext() { return reader.hasNext(); } public Object next() { return reader.next(); } public XMLEvent nextEvent() throws XMLStreamException { return reader.nextEvent(); } public XMLEvent nextTag() throws XMLStreamException { return reader.nextTag(); } public XMLEvent peek() throws XMLStreamException { return reader.peek(); } public void remove() { reader.remove(); } } javax/xml/stream/util/StreamReaderDelegate.java 100644 0 0 13740 11146172415 17271 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: StreamReaderDelegate.java 670273 2008-06-21 23:31:31Z mrglavas $ package javax.xml.stream.util; import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; public class StreamReaderDelegate implements XMLStreamReader { private XMLStreamReader reader; public StreamReaderDelegate() {} public StreamReaderDelegate(XMLStreamReader reader) { this.reader = reader; } public void setParent(XMLStreamReader reader) { this.reader = reader; } public XMLStreamReader getParent() { return reader; } /* * XMLStreamReader methods */ public int next() throws XMLStreamException { return reader.next(); } public int nextTag() throws XMLStreamException { return reader.nextTag(); } public String getElementText() throws XMLStreamException { return reader.getElementText(); } public void require(int type, String namespaceURI, String localName) throws XMLStreamException { reader.require(type, namespaceURI, localName); } public boolean hasNext() throws XMLStreamException { return reader.hasNext(); } public void close() throws XMLStreamException { reader.close(); } public String getNamespaceURI(String prefix) { return reader.getNamespaceURI(prefix); } public NamespaceContext getNamespaceContext() { return reader.getNamespaceContext(); } public boolean isStartElement() { return reader.isStartElement(); } public boolean isEndElement() { return reader.isEndElement(); } public boolean isCharacters() { return reader.isCharacters(); } public boolean isWhiteSpace() { return reader.isWhiteSpace(); } public String getAttributeValue(String namespaceURI, String localName) { return reader.getAttributeValue(namespaceURI, localName); } public int getAttributeCount() { return reader.getAttributeCount(); } public QName getAttributeName(int index) { return reader.getAttributeName(index); } public String getAttributePrefix(int index) { return reader.getAttributePrefix(index); } public String getAttributeNamespace(int index) { return reader.getAttributeNamespace(index); } public String getAttributeLocalName(int index) { return reader.getAttributeLocalName(index); } public String getAttributeType(int index) { return reader.getAttributeType(index); } public String getAttributeValue(int index) { return reader.getAttributeValue(index); } public boolean isAttributeSpecified(int index) { return reader.isAttributeSpecified(index); } public int getNamespaceCount() { return reader.getNamespaceCount(); } public String getNamespacePrefix(int index) { return reader.getNamespacePrefix(index); } public String getNamespaceURI(int index) { return reader.getNamespaceURI(index); } public int getEventType() { return reader.getEventType(); } public String getText() { return reader.getText(); } public int getTextCharacters(int sourceStart, char[] target, int targetStart, int length) throws XMLStreamException { return reader.getTextCharacters(sourceStart, target, targetStart, length); } public char[] getTextCharacters() { return reader.getTextCharacters(); } public int getTextStart() { return reader.getTextStart(); } public int getTextLength() { return reader.getTextLength(); } public String getEncoding() { return reader.getEncoding(); } public boolean hasText() { return reader.hasText(); } public Location getLocation() { return reader.getLocation(); } public QName getName() { return reader.getName(); } public String getLocalName() { return reader.getLocalName(); } public boolean hasName() { return reader.hasName(); } public String getNamespaceURI() { return reader.getNamespaceURI(); } public String getPrefix() { return reader.getPrefix(); } public String getVersion() { return reader.getVersion(); } public boolean isStandalone() { return reader.isStandalone(); } public boolean standaloneSet() { return reader.standaloneSet(); } public String getCharacterEncodingScheme() { return reader.getCharacterEncodingScheme(); } public String getPITarget() { return reader.getPITarget(); } public String getPIData() { return reader.getPIData(); } public Object getProperty(String name) throws IllegalArgumentException { return reader.getProperty(name); } } javax/xml/stream/util/XMLEventAllocator.java 100644 0 0 2475 11146172415 16546 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLEventAllocator.java 669794 2008-06-20 05:13:36Z mrglavas $ package javax.xml.stream.util; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.events.XMLEvent; public interface XMLEventAllocator { public XMLEvent allocate(XMLStreamReader reader) throws XMLStreamException; public void allocate(XMLStreamReader reader, XMLEventConsumer consumer) throws XMLStreamException; public XMLEventAllocator newInstance(); } javax/xml/stream/util/XMLEventConsumer.java 100644 0 0 2142 11146172415 16410 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XMLEventConsumer.java 669791 2008-06-20 04:54:13Z mrglavas $ package javax.xml.stream.util; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.XMLEvent; public interface XMLEventConsumer { public void add(XMLEvent event) throws XMLStreamException; } javax/xml/transform/ErrorListener.java 100644 0 0 11354 11146172417 15623 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: ErrorListener.java 569994 2007-08-27 04:28:57Z mrglavas $ package javax.xml.transform; /** *To provide customized error handling, implement this interface and
* use the setErrorListener
method to register an instance of the
* implementation with the {@link javax.xml.transform.Transformer}. The
* Transformer
then reports all errors and warnings through this
* interface.
If an application does not register its own custom
* ErrorListener
, the default ErrorListener
* is used which reports all warnings and errors to System.err
* and does not throw any Exception
s.
* Applications are strongly encouraged to register and use
* ErrorListener
s that insure proper behavior for warnings and
* errors.
For transformation errors, a Transformer
must use this
* interface instead of throwing an Exception
: it is up to the
* application to decide whether to throw an Exception
for
* different types of errors and warnings. Note however that the
* Transformer
is not required to continue with the transformation
* after a call to {@link #fatalError(TransformerException exception)}.
Transformer
s may use this mechanism to report XML parsing
* errors as well as transformation errors.
{@link javax.xml.transform.Transformer} can use this method to report * conditions that are not errors or fatal errors. The default behaviour * is to take no action.
* *After invoking this method, the Transformer must continue with * the transformation. It should still be possible for the * application to process the document through to the end.
* * @param exception The warning information encapsulated in a * transformer exception. * * @throws javax.xml.transform.TransformerException if the application * chooses to discontinue the transformation. * * @see javax.xml.transform.TransformerException */ public abstract void warning(TransformerException exception) throws TransformerException; /** * Receive notification of a recoverable error. * *The transformer must continue to try and provide normal transformation * after invoking this method. It should still be possible for the * application to process the document through to the end if no other errors * are encountered.
* * @param exception The error information encapsulated in a * transformer exception. * * @throws javax.xml.transform.TransformerException if the application * chooses to discontinue the transformation. * * @see javax.xml.transform.TransformerException */ public abstract void error(TransformerException exception) throws TransformerException; /** *Receive notification of a non-recoverable error.
* *The Transformer
must continue to try and provide normal
* transformation after invoking this method. It should still be possible for the
* application to process the document through to the end if no other errors
* are encountered, but there is no guarantee that the output will be
* useable.
TransformerException
.
*
* @throws javax.xml.transform.TransformerException if the application
* chooses to discontinue the transformation.
*
* @see javax.xml.transform.TransformerException
*/
public abstract void fatalError(TransformerException exception)
throws TransformerException;
}
javax/xml/transform/FactoryFinder.java 100644 0 0 31232 11146172417 15560 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: FactoryFinder.java 670431 2008-06-23 01:40:03Z mrglavas $
package javax.xml.transform;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
/**
* This class is duplicated for each JAXP subpackage so keep it in
* sync. It is package private.
*
* This code is designed to implement the JAXP 1.1 spec pluggability
* feature and is designed to run on JDK version 1.1 and later including
* JVMs that perform early linking like the Microsoft JVM in IE 5. Note
* however that it must be compiled on a JDK version 1.2 or later system
* since it calls Thread#getContextClassLoader(). The code also runs both
* as part of an unbundled jar file and when bundled as part of the JDK.
*/
final class FactoryFinder {
/**
* Debug flag to trace loading process.
*/ private static boolean debug = false; /** *Cache properties for performance.
*/ private static Properties cacheProps = new Properties(); /** *First time requires initialization overhead.
*/ private static boolean firstTime = true; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; // Define system property "jaxp.debug" to get output static { // Use try/catch block to support applets, which throws // SecurityException out of this code. try { String val = SecuritySupport.getSystemProperty("jaxp.debug"); // Allow simply setting the prop to turn on debug debug = val != null && (! "false".equals(val)); } catch (SecurityException se) { debug = false; } } private FactoryFinder() {} private static void dPrint(String msg) { if (debug) { System.err.println("JAXP: " + msg); } } /** * Create an instance of a class using the specified ClassLoader and * optionally fall back to the current ClassLoader if not found. * * @param className Name of the concrete class corresponding to the * service provider * * @param cl ClassLoader to use to load the class, null means to use * the bootstrap ClassLoader * * @param doFallback true if the current ClassLoader should be tried as * a fallback if the class is not found using cl */ static Object newInstance(String className, ClassLoader cl, boolean doFallback) throws ConfigurationError { // assert(className != null); try { Class providerClass; if (cl == null) { // If classloader is null Use the bootstrap ClassLoader. // Thus Class.forName(String) will use the current // ClassLoader which will be the bootstrap ClassLoader. providerClass = Class.forName(className); } else { try { providerClass = cl.loadClass(className); } catch (ClassNotFoundException x) { if (doFallback) { // Fall back to current classloader cl = FactoryFinder.class.getClassLoader(); if (cl != null) { providerClass = cl.loadClass(className); } else { providerClass = Class.forName(className); } } else { throw x; } } } Object instance = providerClass.newInstance(); if (debug) dPrint("created new instance of " + providerClass + " using ClassLoader: " + cl); return instance; } catch (ClassNotFoundException x) { throw new ConfigurationError( "Provider " + className + " not found", x); } catch (Exception x) { throw new ConfigurationError( "Provider " + className + " could not be instantiated: " + x, x); } } /** * Finds the implementation Class object in the specified order. Main * entry point. * @return Class object of factory, never null * * @param factoryId Name of the factory to find, same as * a property name * @param fallbackClassName Implementation class name, if nothing else * is found. Use null to mean no fallback. * * Package private so this code can be shared. */ static Object find(String factoryId, String fallbackClassName) throws ConfigurationError { // Figure out which ClassLoader to use for loading the provider // class. If there is a Context ClassLoader then use it. ClassLoader classLoader = SecuritySupport.getContextClassLoader(); if (classLoader == null) { // if we have no Context ClassLoader // so use the current ClassLoader classLoader = FactoryFinder.class.getClassLoader(); } if (debug) dPrint("find factoryId =" + factoryId); // Use the system property first try { String systemProp = SecuritySupport.getSystemProperty(factoryId); if (systemProp != null && systemProp.length() > 0) { if (debug) dPrint("found system property, value=" + systemProp); return newInstance(systemProp, classLoader, true); } } catch (SecurityException se) { //if first option fails due to any reason we should try next option in the //look up algorithm. } // try to read from $java.home/lib/jaxp.properties try { String javah = SecuritySupport.getSystemProperty("java.home"); String configFile = javah + File.separator + "lib" + File.separator + "jaxp.properties"; String factoryClassName = null; if(firstTime){ synchronized(cacheProps){ if(firstTime){ File f=new File( configFile ); firstTime = false; if(SecuritySupport.doesFileExist(f)){ if (debug) dPrint("Read properties file "+f); //cacheProps.load( new FileInputStream(f)); cacheProps.load(SecuritySupport.getFileInputStream(f)); } } } } factoryClassName = cacheProps.getProperty(factoryId); if(factoryClassName != null){ if (debug) dPrint("found in $java.home/jaxp.properties, value=" + factoryClassName); return newInstance(factoryClassName, classLoader, true); } } catch(Exception ex ) { if( debug ) ex.printStackTrace(); } // Try Jar Service Provider Mechanism Object provider = findJarServiceProvider(factoryId); if (provider != null) { return provider; } if (fallbackClassName == null) { throw new ConfigurationError( "Provider for " + factoryId + " cannot be found", null); } if (debug) dPrint("loaded from fallback value: " + fallbackClassName); return newInstance(fallbackClassName, classLoader, true); } /* * Try to find provider using Jar Service Provider Mechanism * * @return instance of provider class if found or null */ private static Object findJarServiceProvider(String factoryId) throws ConfigurationError { String serviceId = "META-INF/services/" + factoryId; InputStream is = null; // First try the Context ClassLoader ClassLoader cl = SecuritySupport.getContextClassLoader(); if (cl != null) { is = SecuritySupport.getResourceAsStream(cl, serviceId); // If no provider found then try the current ClassLoader if (is == null) { cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } } else { // No Context ClassLoader, try the current // ClassLoader cl = FactoryFinder.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, serviceId); } if (is == null) { // No provider found return null; } if (debug) dPrint("found jar resource=" + serviceId + " using ClassLoader: " + cl); // Read the service provider name in UTF-8 as specified in // the jar spec. Unfortunately this fails in Microsoft // VJ++, which does not implement the UTF-8 // encoding. Theoretically, we should simply let it fail in // that case, since the JVM is obviously broken if it // doesn't support such a basic standard. But since there // are still some users attempting to use VJ++ for // development, we have dropped in a fallback which makes a // second attempt using the platform's default encoding. In // VJ++ this is apparently ASCII, which is a subset of // UTF-8... and since the strings we'll be reading here are // also primarily limited to the 7-bit ASCII range (at // least, in English versions), this should work well // enough to keep us on the air until we're ready to // officially decommit from VJ++. [Edited comment from // jkesselm] BufferedReader rd; try { rd = new BufferedReader(new InputStreamReader(is, "UTF-8"), DEFAULT_LINE_LENGTH); } catch (java.io.UnsupportedEncodingException e) { rd = new BufferedReader(new InputStreamReader(is), DEFAULT_LINE_LENGTH); } String factoryClassName = null; try { // XXX Does not handle all possible input as specified by the // Jar Service Provider specification factoryClassName = rd.readLine(); } catch (IOException x) { // No provider found return null; } finally { try { // try to close the reader. rd.close(); } // Ignore the exception. catch (IOException exc) {} } if (factoryClassName != null && ! "".equals(factoryClassName)) { if (debug) dPrint("found in resource, value=" + factoryClassName); // Note: here we do not want to fall back to the current // ClassLoader because we want to avoid the case where the // resource file was found using one ClassLoader and the // provider class was instantiated using a different one. return newInstance(factoryClassName, cl, false); } // No provider found return null; } static class ConfigurationError extends Error { private Exception exception; /** * Construct a new instance with the specified detail string and * exception. */ ConfigurationError(String msg, Exception x) { super(msg); this.exception = x; } Exception getException() { return exception; } } } javax/xml/transform/OutputKeys.java 100644 0 0 22052 11146172417 15155 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: OutputKeys.java 569994 2007-08-27 04:28:57Z mrglavas $ package javax.xml.transform; /** * Provides string constants that can be used to set * output properties for a Transformer, or to retrieve * output properties from a Transformer or Templates object. *All the fields in this class are read-only.
* * @see * section 16 of the XSL Transformations (XSLT) W3C Recommendation */ public class OutputKeys { /** * Default constructor is private on purpose. This class is * only for static variable access, and should never be constructed. */ private OutputKeys() { } /** * method = "xml" | "html" | "text" | expanded name. * *The value of the method property identifies the overall method that * should be used for outputting the result tree. Other non-namespaced * values may be used, such as "xhtml", but, if accepted, the handling * of such values is implementation defined. If any of the method values * are not accepted and are not namespace qualified, * then {@link javax.xml.transform.Transformer#setOutputProperty} * or {@link javax.xml.transform.Transformer#setOutputProperties} will * throw a {@link java.lang.IllegalArgumentException}.
* * @see * section 16 of the XSL Transformations (XSLT) W3C Recommendation */ public static final String METHOD = "method"; /** * version = nmtoken. * *version
specifies the version of the output
* method.
When the output method is "xml", the version value specifies the * version of XML to be used for outputting the result tree. The default * value for the xml output method is 1.0. When the output method is * "html", the version value indicates the version of the HTML. * The default value for the xml output method is 4.0, which specifies * that the result should be output as HTML conforming to the HTML 4.0 * Recommendation [HTML]. If the output method is "text", the version * property is ignored.
* @see * section 16 of the XSL Transformations (XSLT) W3C Recommendation */ public static final String VERSION = "version"; /** * encoding = string. * *encoding
specifies the preferred character
* encoding that the Transformer should use to encode sequences of
* characters as sequences of bytes. The value of the encoding property should be
* treated case-insensitively. The value must only contain characters in
* the range #x21 to #x7E (i.e., printable ASCII characters). The value
* should either be a charset
registered with the Internet
* Assigned Numbers Authority [IANA],
* [RFC2278] or start with X-
.
omit-xml-declaration
specifies whether the XSLT
* processor should output an XML declaration; the value must be
* yes
or no
.
standalone
specifies whether the Transformer
* should output a standalone document declaration; the value must be
* yes
or no
.
See the documentation for the {@link #DOCTYPE_SYSTEM} property * for a description of what the value of the key should be.
* * @see * section 16 of the XSL Transformations (XSLT) W3C Recommendation */ public static final String DOCTYPE_PUBLIC = "doctype-public"; /** * doctype-system = string. *doctype-system
specifies the system identifier
* to be used in the document type declaration.
If the doctype-system property is specified, the xml output method * should output a document type declaration immediately before the first * element. The name following <!DOCTYPE should be the name of the first * element. If doctype-public property is also specified, then the xml * output method should output PUBLIC followed by the public identifier * and then the system identifier; otherwise, it should output SYSTEM * followed by the system identifier. The internal subset should be empty. * The value of the doctype-public property should be ignored unless the doctype-system * property is specified.
*If the doctype-public or doctype-system properties are specified, * then the html output method should output a document type declaration * immediately before the first element. The name following <!DOCTYPE * should be HTML or html. If the doctype-public property is specified, * then the output method should output PUBLIC followed by the specified * public identifier; if the doctype-system property is also specified, * it should also output the specified system identifier following the * public identifier. If the doctype-system property is specified but * the doctype-public property is not specified, then the output method * should output SYSTEM followed by the specified system identifier.
* *doctype-system
specifies the system identifier
* to be used in the document type declaration.
cdata-section-elements
specifies a whitespace delimited
* list of the names of elements whose text node children should be output
* using CDATA sections. Note that these names must use the format
* described in the section Qualfied Name Representation in
* {@link javax.xml.transform}.
indent
specifies whether the Transformer may
* add additional whitespace when outputting the result tree; the value
* must be yes
or no
.
media-type
specifies the media type (MIME
* content type) of the data that results from outputting the result
* tree. The charset
parameter should not be specified
* explicitly; instead, when the top-level media type is
* text
, a charset
parameter should be added
* according to the character encoding actually used by the output
* method.
An object that implements this interface contains the information * needed to build a transformation result tree.
* * @author Jeff Suttor */ public interface Result { /** * The name of the processing instruction that is sent if the * result tree disables output escaping. * *Normally, result tree serialization escapes & and < (and * possibly other characters) when outputting text nodes. * This ensures that the output is well-formed XML. However, * it is sometimes convenient to be able to produce output that is * almost, but not quite well-formed XML; for example, * the output may include ill-formed sections that will * be transformed into well-formed XML by a subsequent non-XML aware * process. If a processing instruction is sent with this name, * serialization should be output without any escaping.
* *Result DOM trees may also have PI_DISABLE_OUTPUT_ESCAPING and * PI_ENABLE_OUTPUT_ESCAPING inserted into the tree.
* * @see disable-output-escaping in XSLT Specification */ public static final String PI_DISABLE_OUTPUT_ESCAPING = "javax.xml.transform.disable-output-escaping"; /** * The name of the processing instruction that is sent * if the result tree enables output escaping at some point after having * received a PI_DISABLE_OUTPUT_ESCAPING processing instruction. * * @see disable-output-escaping in XSLT Specification */ public static final String PI_ENABLE_OUTPUT_ESCAPING = "javax.xml.transform.enable-output-escaping"; /** * Set the system identifier for this Result. * *If the Result is not to be written to a file, the system identifier is optional. * The application may still want to provide one, however, for use in error messages * and warnings, or to resolve relative output identifiers.
* * @param systemId The system identifier as a URI string. */ public void setSystemId(String systemId); /** * Get the system identifier that was set with setSystemId. * * @return The system identifier that was set with setSystemId, * or null if setSystemId was not called. */ public String getSystemId(); } javax/xml/transform/SecuritySupport.java 100644 0 0 7036 11146172417 16212 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SecuritySupport.java 670282 2008-06-22 01:00:42Z mrglavas $ package javax.xml.transform; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; /** * This class is duplicated for each JAXP subpackage so keep it in sync. * It is package private and therefore is not exposed as part of the JAXP * API. * * Security related methods that only work on J2SE 1.2 and newer. */ final class SecuritySupport { private SecuritySupport() {} static ClassLoader getContextClassLoader() { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (SecurityException ex) { } return cl; } }); } static String getSystemProperty(final String propName) { return (String) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty(propName); } }); } static FileInputStream getFileInputStream(final File file) throws FileNotFoundException { try { return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws FileNotFoundException { return new FileInputStream(file); } }); } catch (PrivilegedActionException e) { throw (FileNotFoundException)e.getException(); } } static InputStream getResourceAsStream(final ClassLoader cl, final String name) { return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { InputStream ris; if (cl == null) { ris = ClassLoader.getSystemResourceAsStream(name); } else { ris = cl.getResourceAsStream(name); } return ris; } }); } static boolean doesFileExist(final File f) { return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return f.exists() ? Boolean.TRUE : Boolean.FALSE; } })).booleanValue(); } } javax/xml/transform/Source.java 100644 0 0 3455 11146172417 14247 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Source.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.transform; /** * An object that implements this interface contains the information * needed to act as source input (XML source or transformation instructions). */ public interface Source { /** * Set the system identifier for this Source. * *The system identifier is optional if the source does not * get its data from a URL, but it may still be useful to provide one. * The application can use a system identifier, for example, to resolve * relative URIs and to include in error messages and warnings.
* * @param systemId The system identifier as a URL string. */ public void setSystemId(String systemId); /** * Get the system identifier that was set with setSystemId. * * @return The system identifier that was set with setSystemId, or null * if setSystemId was not called. */ public String getSystemId(); } javax/xml/transform/SourceLocator.java 100644 0 0 6766 11146172417 15603 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SourceLocator.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.transform; /** * This interface is primarily for the purposes of reporting where * an error occurred in the XML source or transformation instructions. */ public interface SourceLocator { /** * Return the public identifier for the current document event. * *The return value is the public identifier of the document * entity or of the external parsed entity in which the markup that * triggered the event appears.
* * @return A string containing the public identifier, or * null if none is available. * @see #getSystemId */ public String getPublicId(); /** * Return the system identifier for the current document event. * *The return value is the system identifier of the document * entity or of the external parsed entity in which the markup that * triggered the event appears.
* *If the system identifier is a URL, the parser must resolve it * fully before passing it to the application.
* * @return A string containing the system identifier, or null * if none is available. * @see #getPublicId */ public String getSystemId(); /** * Return the line number where the current document event ends. * *Warning: The return value from the method * is intended only as an approximation for the sake of error * reporting; it is not intended to provide sufficient information * to edit the character content of the original XML document.
* *The return value is an approximation of the line number * in the document entity or external parsed entity where the * markup that triggered the event appears.
* * @return The line number, or -1 if none is available. * @see #getColumnNumber */ public int getLineNumber(); /** * Return the character position where the current document event ends. * *Warning: The return value from the method * is intended only as an approximation for the sake of error * reporting; it is not intended to provide sufficient information * to edit the character content of the original XML document.
* *The return value is an approximation of the column number * in the document entity or external parsed entity where the * markup that triggered the event appears.
* * @return The column number, or -1 if none is available. * @see #getLineNumber */ public int getColumnNumber(); } javax/xml/transform/Templates.java 100644 0 0 6301 11146172417 14736 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Templates.java 570103 2007-08-27 13:24:55Z mrglavas $ package javax.xml.transform; import java.util.Properties; /** * An object that implements this interface is the runtime representation of processed * transformation instructions. * *Templates must be thread-safe for a given instance * over multiple threads running concurrently, and may * be used multiple times in a given session.
*/ public interface Templates { /** * Create a new transformation context for this Templates object. * * @return A valid non-null instance of a Transformer. * * @throws TransformerConfigurationException if a Transformer can not be created. */ Transformer newTransformer() throws TransformerConfigurationException; /** * Get the properties corresponding to the effective xsl:output element. * The object returned will * be a clone of the internal values. Accordingly, it can be mutated * without mutating the Templates object, and then handed in to * {@link javax.xml.transform.Transformer#setOutputProperties}. * *The properties returned should contain properties set by the stylesheet, * and these properties are "defaulted" by default properties specified by * section 16 of the * XSL Transformations (XSLT) W3C Recommendation. The properties that * were specifically set by the stylesheet should be in the base * Properties list, while the XSLT default properties that were not * specifically set should be in the "default" Properties list. Thus, * getOutputProperties().getProperty(String key) will obtain any * property in that was set by the stylesheet, or the default * properties, while * getOutputProperties().get(String key) will only retrieve properties * that were explicitly set in the stylesheet.
* *For XSLT, * Attribute * Value Templates attribute values will * be returned unexpanded (since there is no context at this point). The * namespace prefixes inside Attribute Value Templates will be unexpanded, * so that they remain valid XPath values.
* * @return A Properties object, never null. */ Properties getOutputProperties(); } javax/xml/transform/Transformer.java 100644 0 0 33366 11146172417 15335 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Transformer.java 570103 2007-08-27 13:24:55Z mrglavas $ package javax.xml.transform; import java.util.Properties; /** * An instance of this abstract class can transform a * source tree into a result tree. * *An instance of this class can be obtained with the * {@link TransformerFactory#newTransformer TransformerFactory.newTransformer} * method. This instance may then be used to process XML from a * variety of sources and write the transformation output to a * variety of sinks.
* *An object of this class may not be used in multiple threads * running concurrently. Different Transformers may be used * concurrently by different threads.
* *A Transformer
may be used multiple times. Parameters and
* output properties are preserved across transformations.
Reset this Transformer
to its original configuration.
Transformer
is reset to the same state as when it was created with
* {@link TransformerFactory#newTransformer()},
* {@link TransformerFactory#newTransformer(Source source)} or
* {@link Templates#newTransformer()}.
* reset()
is designed to allow the reuse of existing Transformer
s
* thus saving resources associated with the creation of new Transformer
s.
The reset Transformer
is not guaranteed to have the same {@link URIResolver}
* or {@link ErrorListener} Object
s, e.g. {@link Object#equals(Object obj)}.
* It is guaranteed to have a functionally equal URIResolver
* and ErrorListener
.
Transform the XML Source
to a Result
.
* Specific transformation behavior is determined by the settings of the
* TransformerFactory
in effect when the
* Transformer
was instantiated and any modifications made to
* the Transformer
instance.
An empty Source
is represented as an empty document
* as constructed by {@link javax.xml.parsers.DocumentBuilder#newDocument()}.
* The result of transforming an empty Source
depends on
* the transformation behavior; it is not always an empty
* Result
.
Result
of transforming the
* xmlSource
.
*
* @throws TransformerException If an unrecoverable error occurs
* during the course of the transformation.
*/
public abstract void transform(Source xmlSource, Result outputTarget)
throws TransformerException;
/**
* Add a parameter for the transformation.
*
* Pass a qualified name as a two-part string, the namespace URI * enclosed in curly braces ({}), followed by the local name. If the * name has a null URL, the String only contain the local name. An * application can safely check for a non-null URI by testing to see if the * first character of the name is a '{' character.
*For example, if a URI and local name were obtained from an element * defined with <xyz:foo * xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>, * then the qualified name would be "{http://xyz.foo.com/yada/baz.html}foo". * Note that no prefix is used.
* * @param name The name of the parameter, which may begin with a * namespace URI in curly braces ({}). * @param value The value object. This can be any valid Java object. It is * up to the processor to provide the proper object coercion or to simply * pass the object on for use in an extension. * * @throws NullPointerException If value is null. */ public abstract void setParameter(String name, Object value); /** * Get a parameter that was explicitly set with setParameter. * *This method does not return a default parameter value, which
* cannot be determined until the node context is evaluated during
* the transformation process.
*
* @param name of Object
to get
* @return A parameter that has been set with setParameter.
*/
public abstract Object getParameter(String name);
/**
*
Set a list of parameters.
* *Note that the list of parameters is specified as a
* Properties
Object
which limits the parameter
* values to String
s. Multiple calls to
* {@link #setParameter(String name, Object value)} should be used when the
* desired values are non-String
Object
s.
* The parameter names should conform as specified in
* {@link #setParameter(String name, Object value)}.
* An IllegalArgumentException
is thrown if any names do not
* conform.
New parameters in the list are added to any existing parameters. * If the name of a new parameter is equal to the name of an existing * parameter as determined by {@link java.lang.Object#equals(Object obj)}, * the existing parameter is set to the new value.
* * @param params Parameters to set. * * @throws IllegalArgumentException If any parameter names do not conform * to the naming rules. */ /** * Clear all parameters set with setParameter. */ public abstract void clearParameters(); /** * Set an object that will be used to resolve URIs used in * document(). * *If the resolver argument is null, the URIResolver value will * be cleared and the transformer will no longer have a resolver.
* * @param resolver An object that implements the URIResolver interface, * or null. */ public abstract void setURIResolver(URIResolver resolver); /** * Get an object that will be used to resolve URIs used in * document(). * * @return An object that implements the URIResolver interface, * or null. */ public abstract URIResolver getURIResolver(); /** * Set the output properties for the transformation. These * properties will override properties set in the Templates * with xsl:output. * *If argument to this function is null, any properties * previously set are removed, and the value will revert to the value * defined in the templates object.
* *Pass a qualified property key name as a two-part string, the namespace * URI enclosed in curly braces ({}), followed by the local name. If the * name has a null URL, the String only contain the local name. An * application can safely check for a non-null URI by testing to see if the * first character of the name is a '{' character.
*For example, if a URI and local name were obtained from an element * defined with <xyz:foo * xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>, * then the qualified name would be "{http://xyz.foo.com/yada/baz.html}foo". * Note that no prefix is used.
* AnIllegalArgumentException
is thrown if any of the
* argument keys are not recognized and are not namespace qualified.
*
* @param oformat A set of output properties that will be
* used to override any of the same properties in affect
* for the transformation.
*
* @see javax.xml.transform.OutputKeys
* @see java.util.Properties
*
*/
public abstract void setOutputProperties(Properties oformat);
/**
* Get a copy of the output properties for the transformation.
* *The properties returned should contain properties set by the user, * and properties set by the stylesheet, and these properties * are "defaulted" by default properties specified by * section 16 of the * XSL Transformations (XSLT) W3C Recommendation. The properties that * were specifically set by the user or the stylesheet should be in the base * Properties list, while the XSLT default properties that were not * specifically set should be the default Properties list. Thus, * getOutputProperties().getProperty(String key) will obtain any * property in that was set by {@link #setOutputProperty}, * {@link #setOutputProperties}, in the stylesheet, or the default * properties, while * getOutputProperties().get(String key) will only retrieve properties * that were explicitly set by {@link #setOutputProperty}, * {@link #setOutputProperties}, or in the stylesheet.
* *Note that mutation of the Properties object returned will not * effect the properties that the transformer contains.
* *If any of the argument keys are not recognized and are not * namespace qualified, the property will be ignored and not returned. * In other words the behaviour is not orthogonal with * {@link #setOutputProperties setOutputProperties}.
* * @return A copy of the set of output properties in effect for * the next transformation. * * @see javax.xml.transform.OutputKeys * @see java.util.Properties * @see * XSL Transformations (XSLT) Version 1.0 */ public abstract Properties getOutputProperties(); /** * Set an output property that will be in effect for the * transformation. * *Pass a qualified property name as a two-part string, the namespace URI * enclosed in curly braces ({}), followed by the local name. If the * name has a null URL, the String only contain the local name. An * application can safely check for a non-null URI by testing to see if the * first character of the name is a '{' character.
*For example, if a URI and local name were obtained from an element * defined with <xyz:foo * xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>, * then the qualified name would be "{http://xyz.foo.com/yada/baz.html}foo". * Note that no prefix is used.
* *The Properties object that was passed to {@link #setOutputProperties} * won't be effected by calling this method.
* * @param name A non-null String that specifies an output * property name, which may be namespace qualified. * @param value The non-null string value of the output property. * * @throws IllegalArgumentException If the property is not supported, and is * not qualified with a namespace. * * @see javax.xml.transform.OutputKeys */ public abstract void setOutputProperty(String name, String value) throws IllegalArgumentException; /** * Get an output property that is in effect for the * transformer. The property specified may be a property * that was set with setOutputProperty, or it may be a * property specified in the stylesheet. * * @param name A non-null String that specifies an output * property name, which may be namespace qualified. * * @return The string value of the output property, or null * if no property was found. * * @throws IllegalArgumentException If the property is not supported. * * @see javax.xml.transform.OutputKeys */ public abstract String getOutputProperty(String name) throws IllegalArgumentException; /** * Set the error event listener in effect for the transformation. * * @param listener The new error listener. * @throws IllegalArgumentException if listener is null. */ public abstract void setErrorListener(ErrorListener listener) throws IllegalArgumentException; /** * Get the error event handler in effect for the transformation. * Implementations must provide a default error listener. * * @return The current error handler, which should never be null. */ public abstract ErrorListener getErrorListener(); } javax/xml/transform/TransformerConfigurationException.java 100644 0 0 6675 11146172417 21727 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: TransformerConfigurationException.java 569994 2007-08-27 04:28:57Z mrglavas $ package javax.xml.transform; /** * Indicates a serious configuration error. */ public class TransformerConfigurationException extends TransformerException { /** * Create a newTransformerConfigurationException
with no
* detail message.
*/
public TransformerConfigurationException() {
super("Configuration Error");
}
/**
* Create a new TransformerConfigurationException
with
* the String
specified as an error message.
*
* @param msg The error message for the exception.
*/
public TransformerConfigurationException(String msg) {
super(msg);
}
/**
* Create a new TransformerConfigurationException
with a
* given Exception
base cause of the error.
*
* @param e The exception to be encapsulated in a
* TransformerConfigurationException.
*/
public TransformerConfigurationException(Throwable e) {
super(e);
}
/**
* Create a new TransformerConfigurationException
with the
* given Exception
base cause and detail message.
*
* @param e The exception to be encapsulated in a
* TransformerConfigurationException
* @param msg The detail message.
*/
public TransformerConfigurationException(String msg, Throwable e) {
super(msg, e);
}
/**
* Create a new TransformerConfigurationException from a message and a Locator.
*
* This constructor is especially useful when an application is * creating its own exception from within a DocumentHandler * callback.
* * @param message The error or warning message. * @param locator The locator object for the error or warning. */ public TransformerConfigurationException(String message, SourceLocator locator) { super(message, locator); } /** * Wrap an existing exception in a TransformerConfigurationException. * * @param message The error or warning message, or null to * use the message from the embedded exception. * @param locator The locator object for the error or warning. * @param e Any exception. */ public TransformerConfigurationException(String message, SourceLocator locator, Throwable e) { super(message, locator, e); } } javax/xml/transform/TransformerException.java 100644 0 0 30365 11146172417 17210 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: TransformerException.java 569994 2007-08-27 04:28:57Z mrglavas $ package javax.xml.transform; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; /** * This class specifies an exceptional condition that occurred * during the transformation process. */ public class TransformerException extends Exception { // Added serialVersionUID to preserve binary compatibility private static final long serialVersionUID = 975798773772956428L; /** Field locator specifies where the error occurred */ SourceLocator locator; /** * Method getLocator retrieves an instance of a SourceLocator * object that specifies where an error occurred. * * @return A SourceLocator object, or null if none was specified. */ public SourceLocator getLocator() { return locator; } /** * Method setLocator sets an instance of a SourceLocator * object that specifies where an error occurred. * * @param location A SourceLocator object, or null to clear the location. */ public void setLocator(SourceLocator location) { locator = location; } /** Field containedException specifies a wrapped exception. May be null. */ Throwable containedException; /** * This method retrieves an exception that this exception wraps. * * @return An Throwable object, or null. * @see #getCause */ public Throwable getException() { return containedException; } /** * Returns the cause of this throwable ornull
if the
* cause is nonexistent or unknown. (The cause is the throwable that
* caused this throwable to get thrown.)
*/
public Throwable getCause() {
return ((containedException == this)
? null
: containedException);
}
/**
* Initializes the cause of this throwable to the specified value.
* (The cause is the throwable that caused this throwable to get thrown.)
*
* This method can be called at most once. It is generally called from
* within the constructor, or immediately after creating the
* throwable. If this throwable was created
* with {@link #TransformerException(Throwable)} or
* {@link #TransformerException(String,Throwable)}, this method cannot be called
* even once.
*
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A null value is
* permitted, and indicates that the cause is nonexistent or
* unknown.)
* @return a reference to this Throwable
instance.
* @throws IllegalArgumentException if cause
is this
* throwable. (A throwable cannot
* be its own cause.)
* @throws IllegalStateException if this throwable was
* created with {@link #TransformerException(Throwable)} or
* {@link #TransformerException(String,Throwable)}, or this method has already
* been called on this throwable.
*/
public synchronized Throwable initCause(Throwable cause) {
if (this.containedException != null) {
throw new IllegalStateException("Can't overwrite cause");
}
if (cause == this) {
throw new IllegalArgumentException(
"Self-causation not permitted");
}
this.containedException = cause;
return this;
}
/**
* Create a new TransformerException.
*
* @param message The error or warning message.
*/
public TransformerException(String message) {
super(message);
this.containedException = null;
this.locator = null;
}
/**
* Create a new TransformerException wrapping an existing exception.
*
* @param e The exception to be wrapped.
*/
public TransformerException(Throwable e) {
super(e.toString());
this.containedException = e;
this.locator = null;
}
/**
* Wrap an existing exception in a TransformerException.
*
*
This is used for throwing processor exceptions before * the processing has started.
* * @param message The error or warning message, or null to * use the message from the embedded exception. * @param e Any exception */ public TransformerException(String message, Throwable e) { super(((message == null) || (message.length() == 0)) ? e.toString() : message); this.containedException = e; this.locator = null; } /** * Create a new TransformerException from a message and a Locator. * *This constructor is especially useful when an application is * creating its own exception from within a DocumentHandler * callback.
* * @param message The error or warning message. * @param locator The locator object for the error or warning. */ public TransformerException(String message, SourceLocator locator) { super(message); this.containedException = null; this.locator = locator; } /** * Wrap an existing exception in a TransformerException. * * @param message The error or warning message, or null to * use the message from the embedded exception. * @param locator The locator object for the error or warning. * @param e Any exception */ public TransformerException(String message, SourceLocator locator, Throwable e) { super(message); this.containedException = e; this.locator = locator; } /** * Get the error message with location information * appended. * * @return AString
representing the error message with
* location information appended.
*/
public String getMessageAndLocation() {
StringBuffer sbuffer = new StringBuffer();
String message = super.getMessage();
if (null != message) {
sbuffer.append(message);
}
if (null != locator) {
String systemID = locator.getSystemId();
int line = locator.getLineNumber();
int column = locator.getColumnNumber();
if (null != systemID) {
sbuffer.append("; SystemID: ");
sbuffer.append(systemID);
}
if (0 != line) {
sbuffer.append("; Line#: ");
sbuffer.append(line);
}
if (0 != column) {
sbuffer.append("; Column#: ");
sbuffer.append(column);
}
}
return sbuffer.toString();
}
/**
* Get the location information as a string.
*
* @return A string with location info, or null
* if there is no location information.
*/
public String getLocationAsString() {
if (null != locator) {
StringBuffer sbuffer = new StringBuffer();
String systemID = locator.getSystemId();
int line = locator.getLineNumber();
int column = locator.getColumnNumber();
if (null != systemID) {
sbuffer.append("; SystemID: ");
sbuffer.append(systemID);
}
if (0 != line) {
sbuffer.append("; Line#: ");
sbuffer.append(line);
}
if (0 != column) {
sbuffer.append("; Column#: ");
sbuffer.append(column);
}
return sbuffer.toString();
} else {
return null;
}
}
/**
* Print the the trace of methods from where the error
* originated. This will trace all nested exception
* objects, as well as this object.
*/
public void printStackTrace() {
printStackTrace(new java.io.PrintWriter(System.err, true));
}
/**
* Print the the trace of methods from where the error
* originated. This will trace all nested exception
* objects, as well as this object.
* @param s The stream where the dump will be sent to.
*/
public void printStackTrace(java.io.PrintStream s) {
printStackTrace(new java.io.PrintWriter(s));
}
/**
* Print the the trace of methods from where the error
* originated. This will trace all nested exception
* objects, as well as this object.
* @param s The writer where the dump will be sent to.
*/
public void printStackTrace(java.io.PrintWriter s) {
if (s == null) {
s = new java.io.PrintWriter(System.err, true);
}
try {
String locInfo = getLocationAsString();
if (null != locInfo) {
s.println(locInfo);
}
super.printStackTrace(s);
} catch (Throwable e) {}
boolean isJdk14OrHigher = false;
try {
Throwable.class.getMethod("getCause",(Class[]) null);
isJdk14OrHigher = true;
} catch (NoSuchMethodException nsme) {
// do nothing
}
// The printStackTrace method of the Throwable class in jdk 1.4
// and higher will include the cause when printing the backtrace.
// The following code is only required when using jdk 1.3 or lower
if (!isJdk14OrHigher) {
Throwable exception = getException();
for (int i = 0; (i < 10) && (null != exception); i++) {
s.println("---------");
try {
if (exception instanceof TransformerException) {
String locInfo =
((TransformerException) exception)
.getLocationAsString();
if (null != locInfo) {
s.println(locInfo);
}
}
exception.printStackTrace(s);
} catch (Throwable e) {
s.println("Could not print stack trace...");
}
try {
Method meth =
((Object) exception).getClass().getMethod("getException",
(Class[]) null);
if (null != meth) {
Throwable prev = exception;
exception = (Throwable) meth.invoke(exception, (Object[]) null);
if (prev == exception) {
break;
}
} else {
exception = null;
}
} catch (InvocationTargetException ite) {
exception = null;
} catch (IllegalAccessException iae) {
exception = null;
} catch (NoSuchMethodException nsme) {
exception = null;
}
}
}
// insure output is written
s.flush();
}
}
javax/xml/transform/TransformerFactory.java 100644 0 0 36042 11304022204 16637 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: TransformerFactory.java 884963 2009-11-27 19:11:59Z mrglavas $
package javax.xml.transform;
/**
* A TransformerFactory instance can be used to create * {@link javax.xml.transform.Transformer} and * {@link javax.xml.transform.Templates} objects.
* *The system property that determines which Factory implementation
* to create is named "javax.xml.transform.TransformerFactory"
.
* This property names a concrete subclass of the
* TransformerFactory
abstract class. If the property is not
* defined, a platform default is be used.
Get current state of canonicalization.
* * @return current state canonicalization control */ /* public boolean getCanonicalization() { return canonicalState; } */ /** *Set canonicalization control to true
or
* false.
TransformerFactory
.
* This static method creates a new factory instance
* This method uses the following ordered lookup procedure to determine
* the TransformerFactory
implementation class to
* load:
* javax.xml.transform.TransformerFactory
system
* property.
* java.util.Properties
*
format and contains the fully qualified name of the
* implementation class with the key being the system property defined
* above.
*
* The jaxp.properties file is read only once by the JAXP implementation
* and it's values are then cached for future use. If the file does not exist
* when the first attempt is made to read from it, no further attempts are
* made to check for its existence. It is not possible to change the value
* of any property in jaxp.properties after it has been read for the first time.
* META-INF/services/javax.xml.transform.TransformerFactory
* in jars available to the runtime.
* TransformerFactory
instance.
*
* TransformerFactory
it can use the factory to configure
* and obtain parser instances.
*
* @return new TransformerFactory instance, never null.
*
* @throws TransformerFactoryConfigurationError Thrown if the implementation
* is not available or cannot be instantiated.
*/
public static TransformerFactory newInstance()
throws TransformerFactoryConfigurationError {
try {
return (TransformerFactory) FactoryFinder.find(
/* The default property name according to the JAXP spec */
"javax.xml.transform.TransformerFactory",
/* The fallback implementation class name */
"org.apache.xalan.processor.TransformerFactoryImpl");
}
catch (FactoryFinder.ConfigurationError e) {
throw new TransformerFactoryConfigurationError(e.getException(), e.getMessage());
}
}
/**
* @return new TransformerFactory instance, never null.
*
* @throws TransformerFactoryConfigurationError Thrown if the implementation
* is not available or cannot be instantiated.
*/
public static TransformerFactory newInstance(String factoryClassName,
ClassLoader classLoader) throws TransformerFactoryConfigurationError {
if (factoryClassName == null) {
throw new TransformerFactoryConfigurationError("factoryClassName cannot be null.");
}
if (classLoader == null) {
classLoader = SecuritySupport.getContextClassLoader();
}
try {
return (TransformerFactory) FactoryFinder.newInstance(factoryClassName, classLoader, false);
}
catch (FactoryFinder.ConfigurationError e) {
throw new TransformerFactoryConfigurationError(e.getException(), e.getMessage());
}
}
/**
* Process the Source
into a Transformer
* Object
. The Source
is an XSLT document that
* conforms to
* XSL Transformations (XSLT) Version 1.0. Care must
* be taken not to use this Transformer
in multiple
* Thread
s running concurrently.
* Different TransformerFactories
can be used concurrently by
* different Thread
s.
Source
of XSLT document used to create
* Transformer
.
* Examples of XML Source
s include
* {@link javax.xml.transform.stream.StreamSource StreamSource},
* {@link javax.xml.transform.sax.SAXSource SAXSource},
* {@link javax.xml.transform.dom.DOMSource DOMSource} and
* {@link javax.xml.transform.stax.StAXSource StAXSource}.
*
* @return A Transformer
object that may be used to perform
* a transformation in a single Thread
, never
* null
.
*
* @throws TransformerConfigurationException Thrown if there are errors when
* parsing the Source
or it is not possible to create a
* Transformer
instance.
*
* @see
* XSL Transformations (XSLT) Version 1.0
*/
public abstract Transformer newTransformer(Source source)
throws TransformerConfigurationException;
/**
* Create a new Transformer
that performs a copy
* of the Source
to the Result
.
* i.e. the "identity transform".
Transformer
instance.
*/
public abstract Transformer newTransformer()
throws TransformerConfigurationException;
/**
* Process the Source into a Templates object, which is a
* a compiled representation of the source. This Templates object
* may then be used concurrently across multiple threads. Creating
* a Templates object allows the TransformerFactory to do detailed
* performance optimization of transformation instructions, without
* penalizing runtime transformation.
*
* @param source An object that holds a URL, input stream, etc.
*
* @return A Templates object capable of being used for transformation
* purposes, never null.
*
* @exception TransformerConfigurationException May throw this during the
* parse when it is constructing the Templates object and fails.
*/
public abstract Templates newTemplates(Source source)
throws TransformerConfigurationException;
/**
* Get the stylesheet specification(s) associated with the
* XML Source
document via the
*
* xml-stylesheet processing instruction that match the given criteria.
* Note that it is possible to return several stylesheets, in which case
* they are applied as if they were a list of imports or cascades in a
* single stylesheet.
Source
Object
suitable for passing
* to the TransformerFactory
.
*
* @throws TransformerConfigurationException An Exception
* is thrown if an error occurs during parsing of the
* source
.
*
* @see
* Associating Style Sheets with XML documents Version 1.0
*/
public abstract Source getAssociatedStylesheet(
Source source,
String media,
String title,
String charset)
throws TransformerConfigurationException;
/**
* Set an object that is used by default during the transformation
* to resolve URIs used in document(), xsl:import, or xsl:include.
*
* @param resolver An object that implements the URIResolver interface,
* or null.
*/
public abstract void setURIResolver(URIResolver resolver);
/**
* Get the object that is used by default during the transformation
* to resolve URIs used in document(), xsl:import, or xsl:include.
*
* @return The URIResolver that was set with setURIResolver.
*/
public abstract URIResolver getURIResolver();
//======= CONFIGURATION METHODS =======
/**
* Set a feature for this TransformerFactory
and Transformer
s
* or Template
s created by this factory.
* Feature names are fully qualified {@link java.net.URI}s.
* Implementations may define their own features.
* An {@link TransformerConfigurationException} is thrown if this TransformerFactory
or the
* Transformer
s or Template
s it creates cannot support the feature.
* It is possible for an TransformerFactory
to expose a feature value but be unable to change its state.
*
All implementations are required to support the {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING} feature. * When the feature is:
*true
: the implementation will limit XML processing to conform to implementation limits
* and behave in a secure fashion as defined by the implementation.
* Examples include resolving user defined style sheets and functions.
* If XML processing is limited for security reasons, it will be reported via a call to the registered
* {@link ErrorListener#fatalError(TransformerException exception)}.
* See {@link #setErrorListener(ErrorListener listener)}.
* false
: the implementation will processing XML according to the XML specifications without
* regard to possible implementation limits.
* true
or false
.
*
* @throws TransformerConfigurationException if this TransformerFactory
* or the Transformer
s or Template
s it creates cannot support this feature.
* @throws NullPointerException If the name
parameter is null.
*/
public abstract void setFeature(String name, boolean value)
throws TransformerConfigurationException;
/**
* Look up the value of a feature.
*
*
* Feature names are fully qualified {@link java.net.URI}s.
* Implementations may define their own features.
* false
is returned if this TransformerFactory
or the
* Transformer
s or Template
s it creates cannot support the feature.
* It is possible for an TransformerFactory
to expose a feature value but be unable to change its state.
*
true
or false
.
*
* @throws NullPointerException If the name
parameter is null.
*/
public abstract boolean getFeature(String name);
/**
* Allows the user to set specific attributes on the underlying
* implementation. An attribute in this context is defined to
* be an option that the implementation provides.
* An IllegalArgumentException
is thrown if the underlying
* implementation doesn't recognize the attribute.
*
* @param name The name of the attribute.
* @param value The value of the attribute.
*/
public abstract void setAttribute(String name, Object value);
/**
* Allows the user to retrieve specific attributes on the underlying
* implementation.
* An IllegalArgumentException
is thrown if the underlying
* implementation doesn't recognize the attribute.
*
* @param name The name of the attribute.
* @return value The value of the attribute.
*/
public abstract Object getAttribute(String name);
/**
* Set the error event listener for the TransformerFactory, which
* is used for the processing of transformation instructions,
* and not for the transformation itself.
* An IllegalArgumentException
is thrown if the
* ErrorListener
listener is null
.
*
* @param listener The new error listener.
*/
public abstract void setErrorListener(ErrorListener listener);
/**
* Get the error event handler for the TransformerFactory.
*
* @return The current error handler, which should never be null.
*/
public abstract ErrorListener getErrorListener();
}
javax/xml/transform/TransformerFactoryConfigurationError.java 100644 0 0 7046 11146172417 22403 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: TransformerFactoryConfigurationError.java 569994 2007-08-27 04:28:57Z mrglavas $
package javax.xml.transform;
/**
* Thrown when a problem with configuration with the Transformer Factories
* exists. This error will typically be thrown when the class of a
* transformation factory specified in the system properties cannot be found
* or instantiated.
*/
public class TransformerFactoryConfigurationError extends Error {
/**
* Exception
for the
* TransformerFactoryConfigurationError
.
*/
private Exception exception;
/**
* Create a new TransformerFactoryConfigurationError
with no
* detail message.
*/
public TransformerFactoryConfigurationError() {
super();
this.exception = null;
}
/**
* Create a new TransformerFactoryConfigurationError
with
* the String
specified as an error message.
*
* @param msg The error message for the exception.
*/
public TransformerFactoryConfigurationError(String msg) {
super(msg);
this.exception = null;
}
/**
* Create a new TransformerFactoryConfigurationError
with a
* given Exception
base cause of the error.
*
* @param e The exception to be encapsulated in a
* TransformerFactoryConfigurationError.
*/
public TransformerFactoryConfigurationError(Exception e) {
super(e.toString());
this.exception = e;
}
/**
* Create a new TransformerFactoryConfigurationError
with the
* given Exception
base cause and detail message.
*
* @param e The exception to be encapsulated in a
* TransformerFactoryConfigurationError
* @param msg The detail message.
*/
public TransformerFactoryConfigurationError(Exception e, String msg) {
super(msg);
this.exception = e;
}
/**
* Return the message (if any) for this error . If there is no
* message for the exception and there is an encapsulated
* exception then the message of that exception will be returned.
*
* @return The error message.
*/
public String getMessage() {
String message = super.getMessage();
if ((message == null) && (exception != null)) {
return exception.getMessage();
}
return message;
}
/**
* Return the actual exception (if any) that caused this exception to
* be raised.
*
* @return The encapsulated exception, or null if there is none.
*/
public Exception getException() {
return exception;
}
}
javax/xml/transform/URIResolver.java 100644 0 0 3431 11146172417 15162 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: URIResolver.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.transform;
/**
* An object that implements this interface that can be called by the processor * to turn a URI used in document(), xsl:import, or xsl:include into a Source object. */ public interface URIResolver { /** * Called by the processor when it encounters * an xsl:include, xsl:import, or document() function. * * @param href An href attribute, which may be relative or absolute. * @param base The base URI against which the first argument will be made * absolute if the absolute URI is required. * * @return A Source object, or null if the href cannot be resolved, * and the processor should try to resolve the URI itself. * * @throws TransformerException if an error occurs when trying to * resolve the URI. */ public Source resolve(String href, String base) throws TransformerException; } javax/xml/transform/dom/DOMLocator.java 100644 0 0 3211 11146172416 15516 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: DOMLocator.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.transform.dom; import javax.xml.transform.SourceLocator; import org.w3c.dom.Node; /** * Indicates the position of a node in a source DOM, intended * primarily for error reporting. To use a DOMLocator, the receiver of an * error must downcast the {@link javax.xml.transform.SourceLocator} * object returned by an exception. A {@link javax.xml.transform.Transformer} * may use this object for purposes other than error reporting, for instance, * to indicate the source node that originated a result node. */ public interface DOMLocator extends SourceLocator { /** * Return the node where the event occurred. * * @return The node that is the location for the event. */ public Node getOriginatingNode(); } javax/xml/transform/dom/DOMResult.java 100644 0 0 35326 11146172416 15425 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: DOMResult.java 569995 2007-08-27 04:31:06Z mrglavas $ package javax.xml.transform.dom; import javax.xml.transform.Result; import org.w3c.dom.Node; /** *
Acts as a holder for a transformation result tree in the form of a Document Object Model (DOM) tree.
* *If no output DOM source is set, the transformation will create a Document node as the holder for the result of the transformation, * which may be retrieved with {@link #getNode()}.
* * @author Jeff Suttor * @version $Revision: 569995 $, $Date: 2007-08-27 00:31:06 -0400 (Mon, 27 Aug 2007) $ */ public class DOMResult implements Result { /**If {@link javax.xml.transform.TransformerFactory#getFeature}
* returns true
when passed this value as an argument,
* the Transformer
supports Result
output of this type.
Zero-argument default constructor.
* *node
,
* siblingNode
and
* systemId
* will be set to null
.
Use a DOM node to create a new output target.
* *In practice, the node should be * a {@link org.w3c.dom.Document} node, * a {@link org.w3c.dom.DocumentFragment} node, or * a {@link org.w3c.dom.Element} node. * In other words, a node that accepts children.
* *siblingNode
and
* systemId
* will be set to null
.
Use a DOM node to create a new output target with the specified System ID.
* *
In practice, the node should be * a {@link org.w3c.dom.Document} node, * a {@link org.w3c.dom.DocumentFragment} node, or * a {@link org.w3c.dom.Element} node. * In other words, a node that accepts children.
* *siblingNode
will be set to null
.
Use a DOM node to create a new output target specifying the child node where the result nodes should be inserted before.
* *In practice, node
and nextSibling
should be
* a {@link org.w3c.dom.Document} node,
* a {@link org.w3c.dom.DocumentFragment} node, or
* a {@link org.w3c.dom.Element} node.
* In other words, a node that accepts children.
Use nextSibling
to specify the child node
* where the result nodes should be inserted before.
* If nextSibling
is not a sibling of node
,
* then an IllegalArgumentException
is thrown.
* If node
is null
and nextSibling
is not null
,
* then an IllegalArgumentException
is thrown.
* If nextSibling
is null
,
* then the behavior is the same as calling {@link #DOMResult(Node node)},
* i.e. append the result nodes as the last child of the specified node
.
systemId
will be set to null
.
nextSibling
is not a sibling of node
.
* @throws IllegalArgumentException If node
is null
and nextSibling
is not null
.
*
* @since 1.5
*/
public DOMResult(Node node, Node nextSibling) {
// does the corrent parent/child relationship exist?
if (nextSibling != null) {
// cannot be a sibling of a null node
if (node == null) {
throw new IllegalArgumentException("Cannot create a DOMResult when the nextSibling is contained by the \"null\" node.");
}
// nextSibling contained by node?
if ((node.compareDocumentPosition(nextSibling)&Node.DOCUMENT_POSITION_CONTAINED_BY)==0) {
throw new IllegalArgumentException("Cannot create a DOMResult when the nextSibling is not contained by the node.");
}
}
setNode(node);
setNextSibling(nextSibling);
setSystemId(null);
}
/**
* Use a DOM node to create a new output target specifying the child node where the result nodes should be inserted before and * the specified System ID.
* *In practice, node
and nextSibling
should be
* a {@link org.w3c.dom.Document} node,
* a {@link org.w3c.dom.DocumentFragment} node, or a
* {@link org.w3c.dom.Element} node.
* In other words, a node that accepts children.
Use nextSibling
to specify the child node
* where the result nodes should be inserted before.
* If nextSibling
is not a sibling of node
,
* then an IllegalArgumentException
is thrown.
* If node
is null
and nextSibling
is not null
,
* then an IllegalArgumentException
is thrown.
* If nextSibling
is null
,
* then the behavior is the same as calling {@link #DOMResult(Node node, String systemId)},
* i.e. append the result nodes as the last child of the specified node and use the specified System ID.
nextSibling
is not a sibling of node
.
* @throws IllegalArgumentException If node
is null
and nextSibling
is not null
.
*
* @since 1.5
*/
public DOMResult(Node node, Node nextSibling, String systemId) {
// does the current parent/child relationship exist?
if (nextSibling != null) {
// cannot be a sibling of a null node
if (node == null) {
throw new IllegalArgumentException("Cannot create a DOMResult when the nextSibling is contained by the \"null\" node.");
}
// nextSibling contained by node?
if ((node.compareDocumentPosition(nextSibling)&Node.DOCUMENT_POSITION_CONTAINED_BY)==0) {
throw new IllegalArgumentException("Cannot create a DOMResult when the nextSibling is not contained by the node.");
}
}
setNode(node);
setNextSibling(nextSibling);
setSystemId(systemId);
}
/**
* Set the node that will contain the result DOM tree.
* *
In practice, the node should be * a {@link org.w3c.dom.Document} node, * a {@link org.w3c.dom.DocumentFragment} node, or * a {@link org.w3c.dom.Element} node. * In other words, a node that accepts children.
* *An IllegalStateException
is thrown if nextSibling
is not null
and
* node
is not a parent of nextSibling
.
* An IllegalStateException
is thrown if node
is null
and
* nextSibling
is not null
.
nextSibling
is not null
and
* nextSibling
is not a child of node
.
* @throws IllegalStateException If node
is null
and
* nextSibling
is not null
.
*/
public void setNode(Node node) {
// does the corrent parent/child relationship exist?
if (nextSibling != null) {
// cannot be a sibling of a null node
if (node == null) {
throw new IllegalStateException("Cannot create a DOMResult when the nextSibling is contained by the \"null\" node.");
}
// nextSibling contained by node?
if ((node.compareDocumentPosition(nextSibling)&Node.DOCUMENT_POSITION_CONTAINED_BY)==0) {
throw new IllegalArgumentException("Cannot create a DOMResult when the nextSibling is not contained by the node.");
}
}
this.node = node;
}
/**
* Get the node that will contain the result DOM tree.
* *If no node was set via
* {@link #DOMResult(Node node)},
* {@link #DOMResult(Node node, String systeId)},
* {@link #DOMResult(Node node, Node nextSibling)},
* {@link #DOMResult(Node node, Node nextSibling, String systemId)} or
* {@link #setNode(Node node)},
* then the node will be set by the transformation, and may be obtained from this method once the transformation is complete.
* Calling this method before the transformation will return null
.
Set the child node before which the result nodes will be inserted.
* *Use nextSibling
to specify the child node
* before which the result nodes should be inserted.
* If nextSibling
is not a descendant of node
,
* then an IllegalArgumentException
is thrown.
* If node
is null
and nextSibling
is not null
,
* then an IllegalStateException
is thrown.
* If nextSibling
is null
,
* then the behavior is the same as calling {@link #DOMResult(Node node)},
* i.e. append the result nodes as the last child of the specified node
.
nextSibling
is not a descendant of node
.
* @throws IllegalStateException If node
is null
and nextSibling
is not null
.
*
* @since 1.5
*/
public void setNextSibling(Node nextSibling) {
// does the corrent parent/child relationship exist?
if (nextSibling != null) {
// cannot be a sibling of a null node
if (node == null) {
throw new IllegalStateException("Cannot create a DOMResult when the nextSibling is contained by the \"null\" node.");
}
// nextSibling contained by node?
if ((node.compareDocumentPosition(nextSibling)&Node.DOCUMENT_POSITION_CONTAINED_BY)==0) {
throw new IllegalArgumentException("Cannot create a DOMResult when the nextSibling is not contained by the node.");
}
}
this.nextSibling = nextSibling;
}
/**
* Get the child node before which the result nodes will be inserted.
* *If no node was set via
* {@link #DOMResult(Node node, Node nextSibling)},
* {@link #DOMResult(Node node, Node nextSibling, String systemId)} or
* {@link #setNextSibling(Node nextSibling)},
* then null
will be returned.
Set the systemId that may be used in association with the node.
* * @param systemId The system identifier as a URI string. */ public void setSystemId(String systemId) { this.systemId = systemId; } /** *Get the System Identifier.
* *If no System ID was set via
* {@link #DOMResult(Node node, String systemId)},
* {@link #DOMResult(Node node, Node nextSibling, String systemId)} or
* {@link #setSystemId(String systemId)},
* then null
will be returned.
The node to which the transformation will be appended.
*/ private Node node = null; /** *The child node before which the result nodes will be inserted.
* * @since 1.5 */ private Node nextSibling = null; /** *The System ID that may be used in association with the node.
*/ private String systemId = null; } javax/xml/transform/dom/DOMSource.java 100644 0 0 10630 11146172416 15376 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: DOMSource.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.transform.dom; import javax.xml.transform.Source; import org.w3c.dom.Node; /** *Acts as a holder for a transformation Source tree in the * form of a Document Object Model (DOM) tree.
* *Note that XSLT requires namespace support. Attempting to transform a DOM * that was not contructed with a namespace-aware parser may result in errors. * Parsers can be made namespace aware by calling * {@link javax.xml.parsers.DocumentBuilderFactory#setNamespaceAware(boolean awareness)}.
* * @author Jeff Suttor * @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $ * @see Document Object Model (DOM) Level 2 Specification */ public class DOMSource implements Source { /** *Node
to serve as DOM source.
The base ID (URL or system ID) from where URLs * will be resolved.
*/ private String systemID; /** If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an argument, * the Transformer supports Source input of this type. */ public static final String FEATURE = "http://javax.xml.transform.dom.DOMSource/feature"; /** *Zero-argument default constructor. If this constructor is used, and
* no DOM source is set using {@link #setNode(Node node)} , then the
* Transformer
will
* create an empty source {@link org.w3c.dom.Document} using
* {@link javax.xml.parsers.DocumentBuilder#newDocument()}.
This package implements DOM-specific transformation APIs.
The {@link javax.xml.transform.dom.DOMSource} class allows the client of the implementation of this API to specify a DOM {@link org.w3c.dom.Node} as the source of the input tree. The model of how the Transformer deals with the DOM tree in terms of mismatches with the XSLT data model or other data models is beyond the scope of this document. Any of the nodes derived from {@link org.w3c.dom.Node} are legal input.
The {@link javax.xml.transform.dom.DOMResult} class allows a {@link org.w3c.dom.Node} to be specified to which result DOM nodes will be appended. If an output node is not specified, the transformer will use {@link javax.xml.parsers.DocumentBuilder#newDocument} to create an output {@link org.w3c.dom.Document} node. If a node is specified, it should be one of the following: {@link org.w3c.dom.Document}, {@link org.w3c.dom.Element}, or {@link org.w3c.dom.DocumentFragment}. Specification of any other node type is implementation dependent and undefined by this API. If the result is a {@link org.w3c.dom.Document}, the output of the transformation must have a single element root to set as the document element.
The {@link javax.xml.transform.dom.DOMLocator} node may be passed to {@link javax.xml.transform.TransformerException} objects, and retrieved by trying to cast the result of the {@link javax.xml.transform.TransformerException#getLocator()} method. The implementation has no responsibility to use a DOMLocator instead of a {@link javax.xml.transform.SourceLocator} (though line numbers and the like do not make much sense for a DOM), so the result of getLocator must always be tested with an instanceof.
javax/xml/transform/overview.html 100644 0 0 22553 11146172417 14720 0 ustar 0 0This overview describes the set of APIs contained in javax.xml.transform. For the sake of brevity, these interfaces are referred to as TrAX (Transformations for XML).
There is a broad need for Java applications to be able to transform XML and related tree-shaped data structures. In fact, XML is not normally very useful to an application without going through some sort of transformation, unless the semantic structure is used directly as data. Almost all XML-related applications need to perform transformations. Transformations may be described by Java code, Perl code, XSLT Stylesheets, other types of script, or by proprietary formats. The inputs, one or multiple, to a transformation, may be a URL, XML stream, a DOM tree, SAX Events, or a proprietary format or data structure. The output types are the pretty much the same types as the inputs, but different inputs may need to be combined with different outputs.
The great challenge of a transformation API is how to deal with all the possible combinations of inputs and outputs, without becoming specialized for any of the given types.
The Java community will greatly benefit from a common API that will allow them to understand and apply a single model, write to consistent interfaces, and apply the transformations polymorphically. TrAX attempts to define a model that is clean and generic, yet fills general application requirements across a wide variety of uses.
This section will explain some general terminology used in this document. Technical terminology will be explained in the Model section. In many cases, the general terminology overlaps with the technical terminology.
Tree
This term, as used within this document, describes an
abstract structure that consists of nodes or events that may be produced by
XML. A Tree physically may be a DOM tree, a series of well balanced parse
events (such as those coming from a SAX2 ContentHander), a series of requests
(the result of which can describe a tree), or a stream of marked-up
characters.
Source Tree(s)
One or more trees that are the inputs to the
transformation.
Result Tree(s)
One or more trees that are the output of the
transformation.
Transformation
The processor of consuming a stream or tree to produce
another stream or tree.
Identity (or Copy) Transformation
The process of transformation from a source to a result,
making as few structural changes as possible and no informational changes. The
term is somewhat loosely used, as the process is really a copy. from one
"format" (such as a DOM tree, stream, or set of SAX events) to
another.
Serialization
The process of taking a tree and turning it into a stream. In
some sense, a serialization is a specialized transformation.
Parsing
The process of taking a stream and turning it into a tree. In
some sense, parsing is a specialized transformation.
Transformer
A Transformer is the object that executes the transformation.
Transformation instructions
Describes the transformation. A form of code, script, or
simply a declaration or series of declarations.
Stylesheet
The same as "transformation instructions," except it is
likely to be used in conjunction with XSLT.
Templates
Another form of "transformation instructions." In the TrAX
interface, this term is used to describe processed or compiled transformation
instructions. The Source flows through a Templates object to be formed into the
Result.
Processor
A general term for the thing that may both process the
transformation instructions, and perform the transformation.
DOM
Document Object Model, specifically referring to the
Document Object Model
(DOM) Level 2 Specification.
SAX
Simple API for XML, specifically referring to the SAX 2.0.2 release.
The section defines the abstract model for TrAX, apart from the details of the interfaces.
A TRaX TransformerFactory is an object that processes transformation instructions, and produces Templates (in the technical terminology). A Templates object provides a Transformer, which transforms one or more Sources into one or more Results.
To use the TRaX interface, you create a TransformerFactory, which may directly provide a Transformers, or which can provide Templates from a variety of Sources. The Templates object is a processed or compiled representation of the transformation instructions, and provides a Transformer. The Transformer processes a Source according to the instructions found in the Templates, and produces a Result.
The process of transformation from a tree, either in the form of an
object model, or in the form of parse events, into a stream, is known as
serialization
. We believe this is the most suitable term for
this process, despite the overlap with Java object serialization.
Processor
Intent: Generic concept for the
set of objects that implement the TrAX interfaces.
Responsibilities: Create compiled transformation instructions, transform
sources, and manage transformation parameters and
properties.
Thread safety: Only the Templates object can be
used concurrently in multiple threads. The rest of the processor does not do
synchronized blocking, and so may not be used to perform multiple concurrent
operations. Different Processors can be used concurrently by different
threads.
TransformerFactory
Intent: Serve as a vendor-neutral Processor interface for
XSLT and similar
processors.
Responsibilities: Serve as a factory for a concrete
implementation of an TransformerFactory, serve as a direct factory for
Transformer objects, serve as a factory for Templates objects, and manage
processor specific features.
Thread safety: A
TransformerFactory may not perform multiple concurrent
operations.
Templates
Intent: The
runtime representation of the transformation instructions.
Responsibilities: A data bag for transformation instructions; act as a factory
for Transformers.
Thread safety: Thread-safe for concurrent
usage over multiple threads once construction is complete.
Transformer
Intent: Act as a per-thread
execution context for transformations, act as an interface for performing the
transformation.
Responsibilities: Perform the
transformation.
Thread safety: Only one instance per thread
is safe.
Notes: The Transformer is bound to the Templates
object that created it.
Source
Intent: Serve as a
single vendor-neutral object for multiple types of input.
Responsibilities: Act as simple data holder for System IDs, DOM nodes, streams,
etc.
Thread safety: Thread-safe concurrently over multiple
threads for read-only operations; must be synchronized for edit
operations.
Result
Potential alternate name: ResultTarget
Intent: Serve
as a single object for multiple types of output, so there can be simple process
method signatures.
Responsibilities: Act as simple data holder for
output stream, DOM node, ContentHandler, etc.
Thread safety: Thread-safe concurrently over multiple threads for read-only,
must be synchronized for edit.
This package defines the generic APIs for processing transformation instructions, and performing a transformation from source to result. These interfaces have no dependencies on SAX or the DOM standard, and try to make as few assumptions as possible about the details of the source and result of a transformation. It achieves this by defining {@link javax.xml.transform.Source} and {@link javax.xml.transform.Result} interfaces.
To define concrete classes for the user, the API defines specializations of the interfaces found at the root level. These interfaces are found in {@link javax.xml.transform.sax}, {@link javax.xml.transform.dom}, and {@link javax.xml.transform.stream}.
The API allows a concrete {@link javax.xml.transform.TransformerFactory} object to be created from the static function {@link javax.xml.transform.TransformerFactory#newInstance}.
This API defines two interface objects called {@link javax.xml.transform.Source} and {@link javax.xml.transform.Result}. In order to pass Source and Result objects to the interfaces, concrete classes must be used. Three concrete representations are defined for each of these objects: {@link javax.xml.transform.stream.StreamSource} and {@link javax.xml.transform.stream.StreamResult}, {@link javax.xml.transform.sax.SAXSource} and {@link javax.xml.transform.sax.SAXResult}, and {@link javax.xml.transform.dom.DOMSource} and {@link javax.xml.transform.dom.DOMResult}. Each of these objects defines a FEATURE string (which is i the form of a URL), which can be passed into {@link javax.xml.transform.TransformerFactory#getFeature} to see if the given type of Source or Result object is supported. For instance, to test if a DOMSource and a StreamResult is supported, you can apply the following test.
TransformerFactory tfactory = TransformerFactory.newInstance();
if (tfactory.getFeature(DOMSource.FEATURE) && tfactory.getFeature(StreamResult.FEATURE)) {
...
}
Namespaces present something of a problem area when dealing with XML objects. Qualified Names appear in XML markup as prefixed names. But the prefixes themselves do not hold identity. Rather, it is the URIs that they contextually map to that hold the identity. Therefore, when passing a Qualified Name like "xyz:foo" among Java programs, one must provide a means to map "xyz" to a namespace.
One solution has been to create a "QName" object that holds the namespace URI, as well as the prefix and local name, but this is not always an optimal solution, as when, for example, you want to use unique strings as keys in a dictionary object. Not having a string representation also makes it difficult to specify a namespaced identity outside the context of an XML document.
In order to pass namespaced values to transformations, for instance when setting a property or a parameter on a {@link javax.xml.transform.Transformer} object, this specification defines that a String "qname" object parameter be passed as two-part string, the namespace URI enclosed in curly braces ({}), followed by the local name. If the qname has a null URI, then the String object only contains the local name. An application can safely check for a non-null URI by testing to see if the first character of the name is a '{' character.
For example, if a URI and local name were obtained from an element defined with <xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>, then the Qualified Name would be "{http://xyz.foo.com/yada/baz.html}foo". Note that the prefix is lost.
Serialization of the result tree to a stream can be controlled with the {@link javax.xml.transform.Transformer#setOutputProperties} and the {@link javax.xml.transform.Transformer#setOutputProperty} methods. These properties only apply to stream results, they have no effect when the result is a DOM tree or SAX event stream.
Strings that match the XSLT specification for xsl:output attributes can be referenced from the {@link javax.xml.transform.OutputKeys} class. Other strings can be specified as well. If the transformer does not recognize an output key, a {@link java.lang.IllegalArgumentException} is thrown, unless the key name is namespace qualified. Output key names that are namespace qualified are always allowed, although they may be ignored by some implementations.
If all that is desired is the simple identity transformation of a source to a result, then {@link javax.xml.transform.TransformerFactory} provides a {@link javax.xml.transform.TransformerFactory#newTransformer()} method with no arguments. This method creates a Transformer that effectively copies the source to the result. This method may be used to create a DOM from SAX events or to create an XML or HTML stream from a DOM or SAX events.
The transformation API throw three types of specialized exceptions. A {@link javax.xml.transform.TransformerFactoryConfigurationError} is parallel to the {@link javax.xml.parsers.FactoryConfigurationError}, and is thrown when a configuration problem with the TransformerFactory exists. This error will typically be thrown when the transformation factory class specified with the "javax.xml.transform.TransformerFactory" system property cannot be found or instantiated.
A {@link javax.xml.transform.TransformerConfigurationException} may be thrown if for any reason a Transformer can not be created. A TransformerConfigurationException may be thrown if there is a syntax error in the transformation instructions, for example when {@link javax.xml.transform.TransformerFactory#newTransformer} is called.
{@link javax.xml.transform.TransformerException} is a general exception that occurs during the course of a transformation. A transformer exception may wrap another exception, and if any of the {@link javax.xml.transform.TransformerException#printStackTrace()} methods are called on it, it will produce a list of stack dumps, starting from the most recent. The transformer exception also provides a {@link javax.xml.transform.SourceLocator} object which indicates where in the source tree or transformation instructions the error occurred. {@link javax.xml.transform.TransformerException#getMessageAndLocation()} may be called to get an error message with location info, and {@link javax.xml.transform.TransformerException#getLocationAsString()} may be called to get just the location string.
Transformation warnings and errors are sent to an
{@link javax.xml.transform.ErrorListener}, at which point the
application may decide to report the error or warning, and may decide to throw
an Exception
for a non-fatal error. The ErrorListener
may be set via
{@link javax.xml.transform.TransformerFactory#setErrorListener} for
reporting errors that have to do with syntax errors in the transformation
instructions, or via
{@link javax.xml.transform.Transformer#setErrorListener} to report
errors that occur during the transformation. The ErrorListener
on both objects
will always be valid and non-null
, whether set by the application or a default
implementation provided by the processor.
The default implementation provided by the processor will report all warnings and errors to System.err
and does not throw any Exception
s.
Applications are strongly encouraged to register and use
ErrorListener
s that insure proper behavior for warnings and
errors.
The API provides a way for URIs referenced from within the stylesheet
instructions or within the transformation to be resolved by the calling
application. This can be done by creating a class that implements the
{@link javax.xml.transform.URIResolver} interface, with its one method,
{@link javax.xml.transform.URIResolver#resolve}, and use this class to
set the URI resolution for the transformation instructions or transformation
with {@link javax.xml.transform.TransformerFactory#setURIResolver} or
{@link javax.xml.transform.Transformer#setURIResolver}. The
URIResolver.resolve
method takes two String arguments, the URI found in the
stylesheet instructions or built as part of the transformation process, and the
base URI
against which the first argument will be made absolute if the
absolute URI is required.
The returned {@link javax.xml.transform.Source} object must be usable by
the transformer, as specified in its implemented features.
Acts as an holder for a transformation Result.
* * @author Jeff Suttor */ public class SAXResult implements Result { /** * If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an argument, * the Transformer supports Result output of this type. */ public static final String FEATURE = "http://javax.xml.transform.sax.SAXResult/feature"; /** * Zero-argument default constructor. */ public SAXResult() { } /** * Create a SAXResult that targets a SAX2 {@link org.xml.sax.ContentHandler}. * * @param handler Must be a non-null ContentHandler reference. */ public SAXResult(ContentHandler handler) { setHandler(handler); } /** * Set the target to be a SAX2 {@link org.xml.sax.ContentHandler}. * * @param handler Must be a non-null ContentHandler reference. */ public void setHandler(ContentHandler handler) { this.handler = handler; } /** * Get the {@link org.xml.sax.ContentHandler} that is the Result. * * @return The ContentHandler that is to be transformation output. */ public ContentHandler getHandler() { return handler; } /** * Set the SAX2 {@link org.xml.sax.ext.LexicalHandler} for the output. * *This is needed to handle XML comments and the like. If the
* lexical handler is not set, an attempt should be made by the
* transformer to cast the {@link org.xml.sax.ContentHandler} to a
* LexicalHandler
.
LexicalHandler
for
* handling lexical parse events.
*/
public void setLexicalHandler(LexicalHandler handler) {
this.lexhandler = handler;
}
/**
* Get a SAX2 {@link org.xml.sax.ext.LexicalHandler} for the output.
*
* @return A LexicalHandler
, or null.
*/
public LexicalHandler getLexicalHandler() {
return lexhandler;
}
/**
* Method setSystemId Set the systemID that may be used in association
* with the {@link org.xml.sax.ContentHandler}.
*
* @param systemId The system identifier as a URI string.
*/
public void setSystemId(String systemId) {
this.systemId = systemId;
}
/**
* Get the system identifier that was set with setSystemId.
*
* @return The system identifier that was set with setSystemId, or null
* if setSystemId was not called.
*/
public String getSystemId() {
return systemId;
}
//////////////////////////////////////////////////////////////////////
// Internal state.
//////////////////////////////////////////////////////////////////////
/**
* The handler for parse events.
*/
private ContentHandler handler;
/**
* The handler for lexical events.
*/
private LexicalHandler lexhandler;
/**
* The systemID that may be used in association
* with the node.
*/
private String systemId;
}
javax/xml/transform/sax/SAXSource.java 100644 0 0 16220 11146172417 15430 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: SAXSource.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.transform.sax;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
/**
* Acts as an holder for SAX-style Source.
* *Note that XSLT requires namespace support. Attempting to transform an * input source that is not * generated with a namespace-aware parser may result in errors. * Parsers can be made namespace aware by calling the * {@link javax.xml.parsers.SAXParserFactory#setNamespaceAware(boolean awareness)} method.
* * @author Jeff Suttor * @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $ */ public class SAXSource implements Source { /** * If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an argument, * the Transformer supports Source input of this type. */ public static final String FEATURE = "http://javax.xml.transform.sax.SAXSource/feature"; /** *Zero-argument default constructor. If this constructor is used, and
* no SAX source is set using
* {@link #setInputSource(InputSource inputSource)} , then the
* Transformer
will
* create an empty source {@link org.xml.sax.InputSource} using
* {@link org.xml.sax.InputSource#InputSource() new InputSource()}.
SAXSource
, using an {@link org.xml.sax.XMLReader}
* and a SAX InputSource. The {@link javax.xml.transform.Transformer}
* or {@link javax.xml.transform.sax.SAXTransformerFactory} will set itself
* to be the reader's {@link org.xml.sax.ContentHandler}, and then will call
* reader.parse(inputSource).
*
* @param reader An XMLReader to be used for the parse.
* @param inputSource A SAX input source reference that must be non-null
* and that will be passed to the reader parse method.
*/
public SAXSource(XMLReader reader, InputSource inputSource) {
this.reader = reader;
this.inputSource = inputSource;
}
/**
* Create a SAXSource
, using a SAX InputSource
.
* The {@link javax.xml.transform.Transformer} or
* {@link javax.xml.transform.sax.SAXTransformerFactory} creates a
* reader via {@link org.xml.sax.helpers.XMLReaderFactory}
* (if setXMLReader is not used), sets itself as
* the reader's {@link org.xml.sax.ContentHandler}, and calls
* reader.parse(inputSource).
*
* @param inputSource An input source reference that must be non-null
* and that will be passed to the parse method of the reader.
*/
public SAXSource(InputSource inputSource) {
this.inputSource = inputSource;
}
/**
* Set the XMLReader to be used for the Source.
*
* @param reader A valid XMLReader or XMLFilter reference.
*/
public void setXMLReader(XMLReader reader) {
this.reader = reader;
}
/**
* Get the XMLReader to be used for the Source.
*
* @return A valid XMLReader or XMLFilter reference, or null.
*/
public XMLReader getXMLReader() {
return reader;
}
/**
* Set the SAX InputSource to be used for the Source.
*
* @param inputSource A valid InputSource reference.
*/
public void setInputSource(InputSource inputSource) {
this.inputSource = inputSource;
}
/**
* Get the SAX InputSource to be used for the Source.
*
* @return A valid InputSource reference, or null.
*/
public InputSource getInputSource() {
return inputSource;
}
/**
* Set the system identifier for this Source. If an input source
* has already been set, it will set the system ID or that
* input source, otherwise it will create a new input source.
*
* The system identifier is optional if there is a byte stream * or a character stream, but it is still useful to provide one, * since the application can use it to resolve relative URIs * and can include it in error messages and warnings (the parser * will attempt to open a connection to the URI only if * no byte stream or character stream is specified).
* * @param systemId The system identifier as a URI string. */ public void setSystemId(String systemId) { if (null == inputSource) { inputSource = new InputSource(systemId); } else { inputSource.setSystemId(systemId); } } /** *Get the base ID (URI or system ID) from where URIs * will be resolved.
* * @return Base URL for theSource
, or null
.
*/
public String getSystemId() {
if (inputSource == null) {
return null;
} else {
return inputSource.getSystemId();
}
}
/**
* The XMLReader to be used for the source tree input. May be null.
*/
private XMLReader reader;
/**
* The SAX InputSource to be used for the source tree input.
* Should not be null
.
If an application wants to set the ErrorHandler or EntityResolver * for an XMLReader used during a transformation, it should use a URIResolver * to return the SAXSource which provides (with getXMLReader) a reference to * the XMLReader.
*/ public abstract class SAXTransformerFactory extends TransformerFactory { /** If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an argument, * the TransformerFactory returned from * {@link javax.xml.transform.TransformerFactory#newInstance} may * be safely cast to a SAXTransformerFactory. */ public static final String FEATURE = "http://javax.xml.transform.sax.SAXTransformerFactory/feature"; /** If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an argument, * the {@link #newXMLFilter(Source src)} * and {@link #newXMLFilter(Templates templates)} methods are supported. */ public static final String FEATURE_XMLFILTER = "http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter"; /** * The default constructor is protected on purpose. */ protected SAXTransformerFactory() {} /** * Get a TransformerHandler object that can process SAX * ContentHandler events into a Result, based on the transformation * instructions specified by the argument. * * @param src The Source of the transformation instructions. * * @return TransformerHandler ready to transform SAX events. * * @throws TransformerConfigurationException If for some reason the * TransformerHandler can not be created. */ public abstract TransformerHandler newTransformerHandler(Source src) throws TransformerConfigurationException; /** * Get a TransformerHandler object that can process SAX * ContentHandler events into a Result, based on the Templates argument. * * @param templates The compiled transformation instructions. * * @return TransformerHandler ready to transform SAX events. * * @throws TransformerConfigurationException If for some reason the * TransformerHandler can not be created. */ public abstract TransformerHandler newTransformerHandler( Templates templates) throws TransformerConfigurationException; /** * Get a TransformerHandler object that can process SAX * ContentHandler events into a Result. The transformation * is defined as an identity (or copy) transformation, for example * to copy a series of SAX parse events into a DOM tree. * * @return A non-null reference to a TransformerHandler, that may * be used as a ContentHandler for SAX parse events. * * @throws TransformerConfigurationException If for some reason the * TransformerHandler cannot be created. */ public abstract TransformerHandler newTransformerHandler() throws TransformerConfigurationException; /** * Get a TemplatesHandler object that can process SAX * ContentHandler events into a Templates object. * * @return A non-null reference to a TransformerHandler, that may * be used as a ContentHandler for SAX parse events. * * @throws TransformerConfigurationException If for some reason the * TemplatesHandler cannot be created. */ public abstract TemplatesHandler newTemplatesHandler() throws TransformerConfigurationException; /** * Create an XMLFilter that uses the given Source as the * transformation instructions. * * @param src The Source of the transformation instructions. * * @return An XMLFilter object, or null if this feature is not supported. * * @throws TransformerConfigurationException If for some reason the * TemplatesHandler cannot be created. */ public abstract XMLFilter newXMLFilter(Source src) throws TransformerConfigurationException; /** * Create an XMLFilter, based on the Templates argument.. * * @param templates The compiled transformation instructions. * * @return An XMLFilter object, or null if this feature is not supported. * * @throws TransformerConfigurationException If for some reason the * TemplatesHandler cannot be created. */ public abstract XMLFilter newXMLFilter(Templates templates) throws TransformerConfigurationException; } javax/xml/transform/sax/TemplatesHandler.java 100644 0 0 4434 11146172417 17034 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: TemplatesHandler.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.transform.sax; import javax.xml.transform.*; import org.xml.sax.ContentHandler; /** * A SAX ContentHandler that may be used to process SAX * parse events (parsing transformation instructions) into a Templates object. * *Note that TemplatesHandler does not need to implement LexicalHandler.
*/ public interface TemplatesHandler extends ContentHandler { /** * When a TemplatesHandler object is used as a ContentHandler * for the parsing of transformation instructions, it creates a Templates object, * which the caller can get once the SAX events have been completed. * * @return The Templates object that was created during * the SAX event process, or null if no Templates object has * been created. * */ public Templates getTemplates(); /** * Set the base ID (URI or system ID) for the Templates object * created by this builder. This must be set in order to * resolve relative URIs in the stylesheet. This must be * called before the startDocument event. * * @param systemID Base URI for this stylesheet. */ public void setSystemId(String systemID); /** * Get the base ID (URI or system ID) from where relative * URLs will be resolved. * @return The systemID that was set with {@link #setSystemId}. */ public String getSystemId(); } javax/xml/transform/sax/TransformerHandler.java 100644 0 0 4734 11146172417 17403 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: TransformerHandler.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.transform.sax; import javax.xml.transform.Result; import javax.xml.transform.Transformer; import org.xml.sax.ContentHandler; import org.xml.sax.DTDHandler; import org.xml.sax.ext.LexicalHandler; /** * A TransformerHandler * listens for SAX ContentHandler parse events and transforms * them to a Result. */ public interface TransformerHandler extends ContentHandler, LexicalHandler, DTDHandler { /** *Set the Result
associated with this
* TransformerHandler
to be used for the transformation.
Result
instance, should not be
* null
.
*
* @throws IllegalArgumentException if result is invalid for some reason.
*/
public void setResult(Result result) throws IllegalArgumentException;
/**
* Set the base ID (URI or system ID) from where relative
* URLs will be resolved.
* @param systemID Base URI for the source tree.
*/
public void setSystemId(String systemID);
/**
* Get the base ID (URI or system ID) from where relative
* URLs will be resolved.
* @return The systemID that was set with {@link #setSystemId}.
*/
public String getSystemId();
/**
* Get the Transformer
associated with this handler, which
* is needed in order to set parameters and output properties.
Transformer
associated with this
* TransformerHandler
.
*/
public Transformer getTransformer();
}
javax/xml/transform/sax/package.html 100644 0 0 7504 11146172417 15217 0 ustar 0 0
This package implements SAX2-specific transformation APIs. It provides classes which allow input from {@link org.xml.sax.ContentHandler} events, and also classes that produce org.xml.sax.ContentHandler events. It also provides methods to set the input source as an {@link org.xml.sax.XMLReader}, or to use a {@link org.xml.sax.InputSource} as the source. It also allows the creation of a {@link org.xml.sax.XMLFilter}, which enables transformations to "pull" from other transformations, and lets the transformer to be used polymorphically as an {@link org.xml.sax.XMLReader}.
The {@link javax.xml.transform.sax.SAXSource} class allows the setting of an {@link org.xml.sax.XMLReader} to be used for "pulling" parse events, and an {@link org.xml.sax.InputSource} that may be used to specify the SAX source.
The {@link javax.xml.transform.sax.SAXResult} class allows the setting of a {@link org.xml.sax.ContentHandler} to be the receiver of SAX2 events from the transformation.
The {@link javax.xml.transform.sax.SAXTransformerFactory} extends {@link javax.xml.transform.TransformerFactory} to provide factory methods for creating {@link javax.xml.transform.sax.TemplatesHandler}, {@link javax.xml.transform.sax.TransformerHandler}, and {@link org.xml.sax.XMLReader} instances.
To obtain a {@link javax.xml.transform.sax.SAXTransformerFactory}, the caller must cast the {@link javax.xml.transform.TransformerFactory} instance returned from {@link javax.xml.transform.TransformerFactory#newInstance}.
The {@link javax.xml.transform.sax.TransformerHandler} interface allows a transformation to be created from SAX2 parse events, which is a "push" model rather than the "pull" model that normally occurs for a transformation. Normal parse events are received through the {@link org.xml.sax.ContentHandler} interface, lexical events such as startCDATA and endCDATA are received through the {@link org.xml.sax.ext.LexicalHandler} interface, and events that signal the start or end of disabling output escaping are received via {@link org.xml.sax.ContentHandler#processingInstruction}, with the target parameter being {@link javax.xml.transform.Result#PI_DISABLE_OUTPUT_ESCAPING} and {@link javax.xml.transform.Result#PI_ENABLE_OUTPUT_ESCAPING}. If parameters, output properties, or other features need to be set on the Transformer handler, a {@link javax.xml.transform.Transformer} reference will need to be obtained from {@link javax.xml.transform.sax.TransformerHandler#getTransformer}, and the methods invoked from that reference.
The {@link javax.xml.transform.sax.TemplatesHandler} interface allows the creation of {@link javax.xml.transform.Templates} objects from SAX2 parse events. Once the {@link org.xml.sax.ContentHandler} events are complete, the Templates object may be obtained from {@link javax.xml.transform.sax.TemplatesHandler#getTemplates}. Note that {@link javax.xml.transform.sax.TemplatesHandler#setSystemId} should normally be called in order to establish a base system ID from which relative URLs may be resolved.
The {@link javax.xml.transform.sax.SAXTransformerFactory#newXMLFilter} method allows the creation of a {@link org.xml.sax.XMLFilter}, which encapsulates the SAX2 notion of a "pull" transformation. The following illustrates several transformations chained together. Each filter points to a parent {@link org.xml.sax.XMLReader}, and the final transformation is caused by invoking {@link org.xml.sax.XMLReader#parse} on the final reader in the chain.
javax/xml/transform/stax/StAXResult.java 100644 0 0 4353 11146172416 16001 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: StAXResult.java 670395 2008-06-22 18:50:54Z mrglavas $ package javax.xml.transform.stax; import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.Result; public class StAXResult implements Result { public static final String FEATURE = "http://javax.xml.transform.stax.StAXResult/feature"; private final XMLStreamWriter xmlStreamWriter; private final XMLEventWriter xmlEventWriter; public StAXResult(XMLStreamWriter xmlStreamWriter) { if (xmlStreamWriter == null) { throw new IllegalArgumentException("XMLStreamWriter cannot be null."); } this.xmlStreamWriter = xmlStreamWriter; this.xmlEventWriter = null; } public StAXResult(XMLEventWriter xmlEventWriter) { if (xmlEventWriter == null) { throw new IllegalArgumentException("XMLEventWriter cannot be null."); } this.xmlStreamWriter = null; this.xmlEventWriter = xmlEventWriter; } public XMLStreamWriter getXMLStreamWriter() { return xmlStreamWriter; } public XMLEventWriter getXMLEventWriter() { return xmlEventWriter; } public String getSystemId() { return null; } public void setSystemId(String systemId) { throw new UnsupportedOperationException("Setting systemId is not supported."); } } javax/xml/transform/stax/StAXSource.java 100644 0 0 6177 11146172416 15771 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: StAXSource.java 670394 2008-06-22 18:50:36Z mrglavas $ package javax.xml.transform.stax; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.events.XMLEvent; import javax.xml.transform.Source; public class StAXSource implements Source { public static final String FEATURE = "http://javax.xml.transform.stax.StAXSource/feature"; private final XMLStreamReader xmlStreamReader; private final XMLEventReader xmlEventReader; private final String systemId; public StAXSource(XMLStreamReader xmlStreamReader) { if (xmlStreamReader == null) { throw new IllegalArgumentException("XMLStreamReader cannot be null."); } final int event = xmlStreamReader.getEventType(); if (event != XMLStreamConstants.START_DOCUMENT && event != XMLStreamConstants.START_ELEMENT) { throw new IllegalStateException("The state of the XMLStreamReader must be START_DOCUMENT or START_ELEMENT"); } this.xmlStreamReader = xmlStreamReader; this.xmlEventReader = null; this.systemId = xmlStreamReader.getLocation().getSystemId(); } public StAXSource(XMLEventReader xmlEventReader) throws XMLStreamException { if (xmlEventReader == null) { throw new IllegalArgumentException("XMLEventReader cannot be null."); } final XMLEvent event = xmlEventReader.peek(); if (!event.isStartDocument() && !event.isStartElement()) { throw new IllegalStateException("The state of the XMLEventReader must be START_DOCUMENT or START_ELEMENT"); } this.xmlStreamReader = null; this.xmlEventReader = xmlEventReader; this.systemId = event.getLocation().getSystemId(); } public XMLStreamReader getXMLStreamReader() { return xmlStreamReader; } public XMLEventReader getXMLEventReader() { return xmlEventReader; } public String getSystemId() { return systemId; } public void setSystemId(String systemId) { throw new UnsupportedOperationException("Setting systemId is not supported."); } } javax/xml/transform/stream/FilePathToURI.java 100644 0 0 11435 11146172416 16675 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package javax.xml.transform.stream; class FilePathToURI { // which ASCII characters need to be escaped private static boolean gNeedEscaping[] = new boolean[128]; // the first hex character if a character needs to be escaped private static char gAfterEscaping1[] = new char[128]; // the second hex character if a character needs to be escaped private static char gAfterEscaping2[] = new char[128]; private static char[] gHexChs = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; // initialize the above 3 arrays static { for (int i = 0; i <= 0x1f; i++) { gNeedEscaping[i] = true; gAfterEscaping1[i] = gHexChs[i >> 4]; gAfterEscaping2[i] = gHexChs[i & 0xf]; } gNeedEscaping[0x7f] = true; gAfterEscaping1[0x7f] = '7'; gAfterEscaping2[0x7f] = 'F'; char[] escChs = {' ', '<', '>', '#', '%', '"', '{', '}', '|', '\\', '^', '~', '[', ']', '`'}; int len = escChs.length; char ch; for (int i = 0; i < len; i++) { ch = escChs[i]; gNeedEscaping[ch] = true; gAfterEscaping1[ch] = gHexChs[ch >> 4]; gAfterEscaping2[ch] = gHexChs[ch & 0xf]; } } // To escape a file path to a URI, by using %HH to represent // special ASCII characters: 0x00~0x1F, 0x7F, ' ', '<', '>', '#', '%' // and '"' and non-ASCII characters (whose value >= 128). public static String filepath2URI(String path){ // return null if path is null. if (path == null) return null; char separator = java.io.File.separatorChar; path = path.replace(separator, '/'); int len = path.length(), ch; StringBuffer buffer = new StringBuffer(len*3); buffer.append("file://"); // change C:/blah to /C:/blah if (len >= 2 && path.charAt(1) == ':') { ch = Character.toUpperCase(path.charAt(0)); if (ch >= 'A' && ch <= 'Z') { buffer.append('/'); } } // for each character in the path int i = 0; for (; i < len; i++) { ch = path.charAt(i); // if it's not an ASCII character, break here, and use UTF-8 encoding if (ch >= 128) break; if (gNeedEscaping[ch]) { buffer.append('%'); buffer.append(gAfterEscaping1[ch]); buffer.append(gAfterEscaping2[ch]); // record the fact that it's escaped } else { buffer.append((char)ch); } } // we saw some non-ascii character if (i < len) { // get UTF-8 bytes for the remaining sub-string byte[] bytes = null; byte b; try { bytes = path.substring(i).getBytes("UTF-8"); } catch (java.io.UnsupportedEncodingException e) { // should never happen return path; } len = bytes.length; // for each byte for (i = 0; i < len; i++) { b = bytes[i]; // for non-ascii character: make it positive, then escape if (b < 0) { ch = b + 256; buffer.append('%'); buffer.append(gHexChs[ch >> 4]); buffer.append(gHexChs[ch & 0xf]); } else if (gNeedEscaping[b]) { buffer.append('%'); buffer.append(gAfterEscaping1[b]); buffer.append(gAfterEscaping2[b]); } else { buffer.append((char)b); } } } return buffer.toString(); } }//FilePathToURI javax/xml/transform/stream/StreamResult.java 100644 0 0 14634 11271410562 16750 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: StreamResult.java 829970 2009-10-26 21:15:29Z mrglavas $ package javax.xml.transform.stream; import java.io.File; import java.io.OutputStream; import java.io.Writer; import javax.xml.transform.Result; /** *Acts as an holder for a transformation result, * which may be XML, plain Text, HTML, or some other form of markup.
* * @author Jeff Suttor */ public class StreamResult implements Result { /** If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an argument, * the Transformer supports Result output of this type. */ public static final String FEATURE = "http://javax.xml.transform.stream.StreamResult/feature"; /** * Zero-argument default constructor. */ public StreamResult() { } /** * Construct a StreamResult from a byte stream. Normally, * a stream should be used rather than a reader, so that * the transformer may use instructions contained in the * transformation instructions to control the encoding. * * @param outputStream A valid OutputStream reference. */ public StreamResult(OutputStream outputStream) { setOutputStream(outputStream); } /** * Construct a StreamResult from a character stream. Normally, * a stream should be used rather than a reader, so that * the transformer may use instructions contained in the * transformation instructions to control the encoding. However, * there are times when it is useful to write to a character * stream, such as when using a StringWriter. * * @param writer A valid Writer reference. */ public StreamResult(Writer writer) { setWriter(writer); } /** * Construct a StreamResult from a URL. * * @param systemId Must be a String that conforms to the URI syntax. */ public StreamResult(String systemId) { this.systemId = systemId; } /** * Construct a StreamResult from a File. * * @param f Must a non-null File reference. */ public StreamResult(File f) { setSystemId(f); } /** * Set the ByteStream that is to be written to. Normally, * a stream should be used rather than a reader, so that * the transformer may use instructions contained in the * transformation instructions to control the encoding. * * @param outputStream A valid OutputStream reference. */ public void setOutputStream(OutputStream outputStream) { this.outputStream = outputStream; } /** * Get the byte stream that was set with setOutputStream. * * @return The byte stream that was set with setOutputStream, or null * if setOutputStream or the ByteStream constructor was not called. */ public OutputStream getOutputStream() { return outputStream; } /** * Set the writer that is to receive the result. Normally, * a stream should be used rather than a writer, so that * the transformer may use instructions contained in the * transformation instructions to control the encoding. However, * there are times when it is useful to write to a writer, * such as when using a StringWriter. * * @param writer A valid Writer reference. */ public void setWriter(Writer writer) { this.writer = writer; } /** * Get the character stream that was set with setWriter. * * @return The character stream that was set with setWriter, or null * if setWriter or the Writer constructor was not called. */ public Writer getWriter() { return writer; } /** * Set the systemID that may be used in association * with the byte or character stream, or, if neither is set, use * this value as a writeable URI (probably a file name). * * @param systemId The system identifier as a URI string. */ public void setSystemId(String systemId) { this.systemId = systemId; } /** *Set the system ID from a File
reference.
Note the use of {@link File#toURI()} and {@link File#toURL()}.
* toURI()
is preferred and used if possible.
* To allow JAXP 1.3 to run on J2SE 1.3, toURL()
* is used if a {@link NoSuchMethodException} is thrown by the attempt
* to use toURI()
.
Acts as an holder for a transformation Source in the form * of a stream of XML markup.
* *Note: Due to their internal use of either a {@link Reader} or {@link InputStream} instance,
* StreamSource
instances may only be used once.
Zero-argument default constructor. If this constructor is used, and
* no Stream source is set using
* {@link #setInputStream(java.io.InputStream inputStream)} or
* {@link #setReader(java.io.Reader reader)}, then the
* Transformer
will
* create an empty source {@link java.io.InputStream} using
* {@link java.io.InputStream#InputStream() new InputStream()}.
If this constructor is used to process a stylesheet, normally * setSystemId should also be called, so that relative URI references * can be resolved.
* * @param inputStream A valid InputStream reference to an XML stream. */ public StreamSource(InputStream inputStream) { setInputStream(inputStream); } /** * Construct a StreamSource from a byte stream. Normally, * a stream should be used rather than a reader, so that * the XML parser can resolve character encoding specified * by the XML declaration. * *This constructor allows the systemID to be set in addition * to the input stream, which allows relative URIs * to be processed.
* * @param inputStream A valid InputStream reference to an XML stream. * @param systemId Must be a String that conforms to the URI syntax. */ public StreamSource(InputStream inputStream, String systemId) { setInputStream(inputStream); setSystemId(systemId); } /** * Construct a StreamSource from a character reader. Normally, * a stream should be used rather than a reader, so that * the XML parser can resolve character encoding specified * by the XML declaration. However, in many cases the encoding * of the input stream is already resolved, as in the case of * reading XML from a StringReader. * * @param reader A valid Reader reference to an XML character stream. */ public StreamSource(Reader reader) { setReader(reader); } /** * Construct a StreamSource from a character reader. Normally, * a stream should be used rather than a reader, so that * the XML parser may resolve character encoding specified * by the XML declaration. However, in many cases the encoding * of the input stream is already resolved, as in the case of * reading XML from a StringReader. * * @param reader A valid Reader reference to an XML character stream. * @param systemId Must be a String that conforms to the URI syntax. */ public StreamSource(Reader reader, String systemId) { setReader(reader); setSystemId(systemId); } /** * Construct a StreamSource from a URL. * * @param systemId Must be a String that conforms to the URI syntax. */ public StreamSource(String systemId) { this.systemId = systemId; } /** * Construct a StreamSource from a File. * * @param f Must a non-null File reference. */ public StreamSource(File f) { setSystemId(f); } /** * Set the byte stream to be used as input. Normally, * a stream should be used rather than a reader, so that * the XML parser can resolve character encoding specified * by the XML declaration. * *If this Source object is used to process a stylesheet, normally * setSystemId should also be called, so that relative URL references * can be resolved.
* * @param inputStream A valid InputStream reference to an XML stream. */ public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } /** * Get the byte stream that was set with setByteStream. * * @return The byte stream that was set with setByteStream, or null * if setByteStream or the ByteStream constructor was not called. */ public InputStream getInputStream() { return inputStream; } /** * Set the input to be a character reader. Normally, * a stream should be used rather than a reader, so that * the XML parser can resolve character encoding specified * by the XML declaration. However, in many cases the encoding * of the input stream is already resolved, as in the case of * reading XML from a StringReader. * * @param reader A valid Reader reference to an XML CharacterStream. */ public void setReader(Reader reader) { this.reader = reader; } /** * Get the character stream that was set with setReader. * * @return The character stream that was set with setReader, or null * if setReader or the Reader constructor was not called. */ public Reader getReader() { return reader; } /** * Set the public identifier for this Source. * *The public identifier is always optional: if the application * writer includes one, it will be provided as part of the * location information.
* * @param publicId The public identifier as a string. */ public void setPublicId(String publicId) { this.publicId = publicId; } /** * Get the public identifier that was set with setPublicId. * * @return The public identifier that was set with setPublicId, or null * if setPublicId was not called. */ public String getPublicId() { return publicId; } /** * Set the system identifier for this Source. * *The system identifier is optional if there is a byte stream * or a character stream, but it is still useful to provide one, * since the application can use it to resolve relative URIs * and can include it in error messages and warnings (the parser * will attempt to open a connection to the URI only if * there is no byte stream or character stream specified).
* * @param systemId The system identifier as a URL string. */ public void setSystemId(String systemId) { this.systemId = systemId; } /** * Get the system identifier that was set with setSystemId. * * @return The system identifier that was set with setSystemId, or null * if setSystemId was not called. */ public String getSystemId() { return systemId; } /** * Set the system ID from a File reference. * * @param f Must a non-null File reference. */ public void setSystemId(File f) { this.systemId = FilePathToURI.filepath2URI(f.getAbsolutePath()); } ////////////////////////////////////////////////////////////////////// // Internal state. ////////////////////////////////////////////////////////////////////// /** * The public identifier for this input source, or null. */ private String publicId; /** * The system identifier as a URL string, or null. */ private String systemId; /** * The byte stream for this Source, or null. */ private InputStream inputStream; /** * The character stream for this Source, or null. */ private Reader reader; } javax/xml/transform/stream/package.html 100644 0 0 3055 11146172416 15713 0 ustar 0 0This package implements stream- and URI- specific transformation APIs.
The {@link javax.xml.transform.stream.StreamSource} class provides methods for specifying {@link java.io.InputStream} input, {@link java.io.Reader} input, and URL input in the form of strings. Even if an input stream or reader is specified as the source, {@link javax.xml.transform.stream.StreamSource#setSystemId} should still be called, so that the transformer can know from where it should resolve relative URIs. The public identifier is always optional: if the application writer includes one, it will be provided as part of the {@link javax.xml.transform.SourceLocator} information.
The {@link javax.xml.transform.stream.StreamResult} class provides methods for specifying {@link java.io.OutputStream}, {@link java.io.Writer}, or an output system ID, as the output of the transformation result.
Normally streams should be used rather than readers or writers, for both the Source and Result, since readers and writers already have the encoding established to and from the internal Unicode format. However, there are times when it is useful to write to a character stream, such as when using a StringWriter in order to write to a String, or in the case of reading source XML from a StringReader.
javax/xml/validation/Schema.java 100644 0 0 6445 11146172412 14323 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Schema.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.validation; /** * Immutable in-memory representation of grammar. * ** This object represents a set of constraints that can be checked/ * enforced against an XML document. * *
* A {@link Schema} object is thread safe and applications are * encouraged to share it across many parsers in many threads. * *
* A {@link Schema} object is immutable in the sense that it shouldn't * change the set of constraints once it is created. In other words, * if an application validates the same document twice against the same * {@link Schema}, it must always produce the same result. * *
* A {@link Schema} object is usually created from {@link SchemaFactory}. * *
* Two kinds of validators can be created from a {@link Schema} object. * One is {@link Validator}, which provides highly-level validation * operations that cover typical use cases. The other is * {@link ValidatorHandler}, which works on top of SAX for better * modularity. * *
* This specification does not refine
* the {@link java.lang.Object#equals(java.lang.Object)} method.
* In other words, if you parse the same schema twice, you may
* still get !schemaA.equals(schemaB)
.
*
* @author Kohsuke Kawaguchi
* @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $
* @see XML Schema Part 1: Structures
* @see Extensible Markup Language (XML) 1.1
* @see Extensible Markup Language (XML) 1.0 (Second Edition)
* @since 1.5
*/
public abstract class Schema {
/**
* Constructor for the derived class.
*
*
* The constructor does nothing. */ protected Schema() { } /** * Creates a new {@link Validator} for this {@link Schema}. * *
* A validator enforces/checks the set of constraints this object * represents. * * @return * Always return a non-null valid object. */ public abstract Validator newValidator(); /** * Creates a new {@link ValidatorHandler} for this {@link Schema}. * * @return * Always return a non-null valid object. */ public abstract ValidatorHandler newValidatorHandler(); } javax/xml/validation/SchemaFactory.java 100644 0 0 70377 11304020221 15662 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SchemaFactory.java 884952 2009-11-27 18:55:08Z mrglavas $ package javax.xml.validation; import java.io.File; import java.net.URL; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import org.w3c.dom.ls.LSResourceResolver; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; /** * Factory that creates {@link Schema} objects. Entry-point to * the validation API. * *
* {@link SchemaFactory} is a schema compiler. It reads external * representations of schemas and prepares them for validation. * *
* The {@link SchemaFactory} class is not thread-safe. In other words, * it is the application's responsibility to ensure that at most * one thread is using a {@link SchemaFactory} object at any * given moment. Implementations are encouraged to mark methods * as synchronized to protect themselves from broken clients. * *
* {@link SchemaFactory} is not re-entrant. While one of the
* newSchema
methods is being invoked, applications
* may not attempt to recursively invoke the newSchema
method,
* even from the same thread.
*
*
* This spec uses a namespace URI to designate a schema language. * The following table shows the values defined by this specification. *
* To be compliant with the spec, the implementation * is only required to support W3C XML Schema 1.0. However, * if it chooses to support other schema languages listed here, * it must conform to the relevant behaviors described in this spec. * *
* Schema languages not listed here are expected to * introduce their own URIs to represent themselves. * The {@link SchemaFactory} class is capable of locating other * implementations for other schema languages at run-time. * *
* Note that because the XML DTD is strongly tied to the parsing process * and has a significant effect on the parsing process, it is impossible * to define the DTD validation as a process independent from parsing. * For this reason, this specification does not define the semantics for * the XML DTD. This doesn't prohibit implementors from implementing it * in a way they see fit, but users are warned that any DTD * validation implemented on this interface necessarily deviate from * the XML DTD semantics as defined in the XML 1.0. * *
value | *language | *
---|---|
{@link javax.xml.XMLConstants#W3C_XML_SCHEMA_NS_URI} ("http://www.w3.org/2001/XMLSchema ") |
* W3C XML Schema 1.0 | *
{@link javax.xml.XMLConstants#RELAXNG_NS_URI} ("http://relaxng.org/ns/structure/1.0 ") |
* RELAX NG 1.0 | *
Constructor for derived classes.
* *The constructor does nothing.
* *Derived classes must create {@link SchemaFactory} objects that have
* null
{@link ErrorHandler} and
* null
{@link LSResourceResolver}.
Lookup an implementation of the SchemaFactory
that supports the specified
* schema language and return it.
To find a SchemaFactory
object for a given schema language,
* this method looks the following places in the following order
* where "the class loader" refers to the context class loader:
"javax.xml.validation.SchemaFactory:schemaLanguage"
* is present (where schemaLanguage is the parameter
* to this method), then its value is read
* as a class name. The method will try to
* create a new instance of this class by using the class loader,
* and returns it if it is successfully created.
* $java.home/lib/jaxp.properties
is read and
* the value associated with the key being the system property above
* is looked for. If present, the value is processed just like above.
* The class loader is asked for service provider provider-configuration files matching
* javax.xml.validation.SchemaFactory
in the resource directory META-INF/services.
* See the JAR File Specification for file format and parsing rules.
* Each potential service provider is required to implement the method:
* {@link #isSchemaLanguageSupported(String schemaLanguage)} ** The first service provider found in class loader order that supports the specified schema language is returned. *
SchemaFactory
is located
* in a implementation specific way. There must be a platform default
* SchemaFactory
for W3C XML Schema.
* If everything fails, {@link IllegalArgumentException} will be thrown.
* *Tip for Trouble-shooting:
*See {@link java.util.Properties#load(java.io.InputStream)} for * exactly how a property file is parsed. In particular, colons ':' * need to be escaped in a property file, so make sure schema language * URIs are properly escaped in it. For example:
** http\://www.w3.org/2001/XMLSchema=org.acme.foo.XSSchemaFactory ** * @param schemaLanguage * Specifies the schema language which the returned * SchemaFactory will understand. See * the list of available * schema languages for the possible values. * * @return New instance of a
SchemaFactory
*
* @throws IllegalArgumentException
* If no implementation of the schema language is available.
*
* @throws NullPointerException
* If the schemLanguage parameter is null.
*/
public static final SchemaFactory newInstance(String schemaLanguage) {
ClassLoader cl;
cl = SecuritySupport.getContextClassLoader();
if (cl == null) {
//cl = ClassLoader.getSystemClassLoader();
//use the current class loader
cl = SchemaFactory.class.getClassLoader();
}
SchemaFactory f = new SchemaFactoryFinder(cl).newFactory(schemaLanguage);
if (f == null) {
throw new IllegalArgumentException(schemaLanguage);
}
return f;
}
/**
* @return New instance of a SchemaFactory
*
* @throws IllegalArgumentException
* If no implementation of the schema language is available.
*
* @throws NullPointerException
* If the schemLanguage parameter is null.
*/
public static SchemaFactory newInstance(String schemaLanguage,
String factoryClassName, ClassLoader classLoader) {
if (schemaLanguage == null) {
throw new NullPointerException();
}
if (factoryClassName == null) {
throw new IllegalArgumentException("factoryClassName cannot be null.");
}
if (classLoader == null) {
classLoader = SecuritySupport.getContextClassLoader();
}
SchemaFactory f = new SchemaFactoryFinder(classLoader).createInstance(factoryClassName);
if (f == null || !f.isSchemaLanguageSupported(schemaLanguage)) {
throw new IllegalArgumentException(schemaLanguage);
}
return f;
}
/**
* Is specified schema supported by this SchemaFactory
?
SchemaFactory
will understand.
* schemaLanguage
must specify a valid schema language.
*
* @return true
if SchemaFactory
supports schemaLanguage
, else false
.
*
* @throws NullPointerException If schemaLanguage
is null
.
* @throws IllegalArgumentException If schemaLanguage.length() == 0
* or schemaLanguage
does not specify a valid schema language.
*/
public abstract boolean isSchemaLanguageSupported(String schemaLanguage);
/**
* Look up the value of a feature flag.
*
* The feature name is any fully-qualified URI. It is * possible for a {@link SchemaFactory} to recognize a feature name but * temporarily be unable to return its value. * *
Implementors are free (and encouraged) to invent their own features, * using names built on their own URIs.
* * @param name The feature name, which is a non-null fully-qualified URI. * @return The current value of the feature (true or false). * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link SchemaFactory} recognizes the feature name but * cannot determine its value at this time. * @exception NullPointerException * if the name parameter is null. * @see #setFeature(String, boolean) */ public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if (name == null) { throw new NullPointerException("the name parameter is null"); } throw new SAXNotRecognizedException(name); } /** * Set the value of a feature flag. * ** Feature can be used to control the way a {@link SchemaFactory} * parses schemas, although {@link SchemaFactory}s are not required * to recognize any specific feature names.
* *The feature name is any fully-qualified URI. It is * possible for a {@link SchemaFactory} to expose a feature value but * to be unable to change the current value.
* *All implementations are required to support the {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING} feature. * When the feature is:
*true
: the implementation will limit XML processing to conform to implementation limits.
* Examples include entity expansion limits and XML Schema constructs that would consume large amounts of resources.
* If XML processing is limited for security reasons, it will be reported via a call to the registered
* {@link ErrorHandler#fatalError(SAXParseException exception)}.
* See {@link #setErrorHandler(ErrorHandler errorHandler)}.
* false
: the implementation will processing XML according to the XML specifications without
* regard to possible implementation limits.
* The property name is any fully-qualified URI. It is * possible for a {@link SchemaFactory} to recognize a property name but * to be unable to change the current value.
* *{@link SchemaFactory}s are not required to recognize setting * any specific property names.
* * @param name The property name, which is a non-null fully-qualified URI. * @param object The requested value for the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link SchemaFactory} recognizes the property name but * cannot set the requested value. * @exception NullPointerException * if the name parameter is null. */ public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException { if (name == null) { throw new NullPointerException("the name parameter is null"); } throw new SAXNotRecognizedException(name); } /** * Look up the value of a property. * *The property name is any fully-qualified URI. It is * possible for a {@link SchemaFactory} to recognize a property name but * temporarily be unable to return its value.
* *{@link SchemaFactory}s are not required to recognize any specific * property names.
* *Implementors are free (and encouraged) to invent their own properties, * using names built on their own URIs.
* * @param name The property name, which is a non-null fully-qualified URI. * @return The current value of the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * XMLReader recognizes the property name but * cannot determine its value at this time. * @exception NullPointerException * if the name parameter is null. * @see #setProperty(String, Object) */ public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if (name == null) { throw new NullPointerException("the name parameter is null"); } throw new SAXNotRecognizedException(name); } /** * Sets the {@link ErrorHandler} to receive errors encountered * during thenewSchema
method invocation.
*
* * Error handler can be used to customize the error handling process * during schema parsing. When an {@link ErrorHandler} is set, * errors found during the parsing of schemas will be first sent * to the {@link ErrorHandler}. * *
* The error handler can abort the parsing of a schema immediately * by throwing {@link SAXException} from the handler. Or for example * it can print an error to the screen and try to continue the * processing by returning normally from the {@link ErrorHandler} * *
* If any {@link Throwable} (or instances of its derived classes)
* is thrown from an {@link ErrorHandler},
* the caller of the newSchema
method will be thrown
* the same {@link Throwable} object.
*
*
* {@link SchemaFactory} is not allowed to * throw {@link SAXException} without first reporting it to * {@link ErrorHandler}. * *
* Applications can call this method even during a {@link Schema} * is being parsed. * *
* When the {@link ErrorHandler} is null, the implementation will * behave as if the following {@link ErrorHandler} is set: *
* class DraconianErrorHandler implements {@link ErrorHandler} { * public void fatalError( {@link org.xml.sax.SAXParseException} e ) throws {@link SAXException} { * throw e; * } * public void error( {@link org.xml.sax.SAXParseException} e ) throws {@link SAXException} { * throw e; * } * public void warning( {@link org.xml.sax.SAXParseException} e ) throws {@link SAXException} { * // noop * } * } ** *
* When a new {@link SchemaFactory} object is created, initially * this field is set to null. This field will NOT be * inherited to {@link Schema}s, {@link Validator}s, or * {@link ValidatorHandler}s that are created from this {@link SchemaFactory}. * * * @param errorHandler * A new error handler to be set. This parameter can be null. */ public abstract void setErrorHandler(ErrorHandler errorHandler); /** * Gets the current {@link ErrorHandler} set to this {@link SchemaFactory}. * * @return * This method returns the object that was last set through * the {@link #setErrorHandler(ErrorHandler)} method, or null * if that method has never been called since this {@link SchemaFactory} * has created. * * @see #setErrorHandler(ErrorHandler) */ public abstract ErrorHandler getErrorHandler(); /** * Sets the {@link LSResourceResolver} to customize * resource resolution when parsing schemas. * *
* {@link SchemaFactory} uses a {@link LSResourceResolver} * when it needs to locate external resources while parsing schemas, * although exactly what constitutes "locating external resources" is * up to each schema language. For example, for W3C XML Schema, * this includes files <include>d or <import>ed, * and DTD referenced from schema files, etc. * *
* Applications can call this method even during a {@link Schema} * is being parsed. * *
* When the {@link LSResourceResolver} is null, the implementation will * behave as if the following {@link LSResourceResolver} is set: *
* class DumbDOMResourceResolver implements {@link LSResourceResolver} { * public {@link org.w3c.dom.ls.LSInput} resolveResource( * String publicId, String systemId, String baseURI) { * * return null; // always return null * } * } ** *
* If a {@link LSResourceResolver} throws a {@link RuntimeException}
* (or instances of its derived classes),
* then the {@link SchemaFactory} will abort the parsing and
* the caller of the newSchema
method will receive
* the same {@link RuntimeException}.
*
*
* When a new {@link SchemaFactory} object is created, initially * this field is set to null. This field will NOT be * inherited to {@link Schema}s, {@link Validator}s, or * {@link ValidatorHandler}s that are created from this {@link SchemaFactory}. * * @param resourceResolver * A new resource resolver to be set. This parameter can be null. */ public abstract void setResourceResolver(LSResourceResolver resourceResolver); /** * Gets the current {@link LSResourceResolver} set to this {@link SchemaFactory}. * * @return * This method returns the object that was last set through * the {@link #setResourceResolver(LSResourceResolver)} method, or null * if that method has never been called since this {@link SchemaFactory} * has created. * * @see #setErrorHandler(ErrorHandler) */ public abstract LSResourceResolver getResourceResolver(); /** *
Parses the specified source as a schema and returns it as a schema.
* *This is a convenience method for {@link #newSchema(Source[] schemas)}.
* * @param schema Source that represents a schema. * * @return NewSchema
from parsing schema
.
*
* @throws SAXException If a SAX error occurs during parsing.
* @throws NullPointerException if schema is null.
*/
public Schema newSchema(Source schema) throws SAXException {
return newSchema(new Source[]{schema});
}
/**
* Parses the specified File
as a schema and returns it as a Schema
.
This is a convenience method for {@link #newSchema(Source schema)}.
* * @param schema File that represents a schema. * * @return NewSchema
from parsing schema
.
*
* @throws SAXException If a SAX error occurs during parsing.
* @throws NullPointerException if schema is null.
*/
public Schema newSchema(File schema) throws SAXException {
return newSchema(new StreamSource(schema));
}
/**
* Parses the specified URL
as a schema and returns it as a Schema
.
This is a convenience method for {@link #newSchema(Source schema)}.
* * @param schemaURL
that represents a schema.
*
* @return New Schema
from parsing schema
.
*
* @throws SAXException If a SAX error occurs during parsing.
* @throws NullPointerException if schema is null.
*/
public Schema newSchema(URL schema) throws SAXException {
return newSchema(new StreamSource(schema.toExternalForm()));
}
/**
* Parses the specified source(s) as a schema and returns it as a schema.
*
* * The callee will read all the {@link Source}s and combine them into a * single schema. The exact semantics of the combination depends on the schema * language that this {@link SchemaFactory} object is created for. * *
* When an {@link ErrorHandler} is set, the callee will report all the errors * found in sources to the handler. If the handler throws an exception, it will * abort the schema compilation and the same exception will be thrown from * this method. Also, after an error is reported to a handler, the callee is allowed * to abort the further processing by throwing it. If an error handler is not set, * the callee will throw the first error it finds in the sources. * *
* The resulting schema contains components from the specified sources. * The same result would be achieved if all these sources were * imported, using appropriate values for schemaLocation and namespace, * into a single schema document with a different targetNamespace * and no components of its own, if the import elements were given * in the same order as the sources. Section 4.2.3 of the XML Schema * recommendation describes the options processors have in this * regard. While a processor should be consistent in its treatment of * JAXP schema sources and XML Schema imports, the behaviour between * JAXP-compliant parsers may vary; in particular, parsers may choose * to ignore all but the first <import> for a given namespace, * regardless of information provided in schemaLocation. * *
* If the parsed set of schemas includes error(s) as * specified in the section 5.1 of the XML Schema spec, then * the error must be reported to the {@link ErrorHandler}. * *
For RELAX NG, this method must throw {@link UnsupportedOperationException}
* if schemas.length!=1.
*
*
* @param schemas
* inputs to be parsed. {@link SchemaFactory} is required
* to recognize {@link StreamSource},
* {@link javax.xml.transform.sax.SAXSource},
* {@link javax.xml.transform.dom.DOMSource}
* and {@link javax.xml.transform.stax.StAXSource}.
*
* @return
* Always return a non-null valid {@link Schema} object.
* Note that when an error has been reported, there is no
* guarantee that the returned {@link Schema} object is
* meaningful.
*
* @throws SAXException
* If an error is found during processing the specified inputs.
* When an {@link ErrorHandler} is set, errors are reported to
* there first. See {@link #setErrorHandler(ErrorHandler)}.
* @throws NullPointerException
* If the schemas
parameter itself is null or
* any item in the array is null.
* @throws IllegalArgumentException
* If any item in the array is not recognized by this method.
* @throws UnsupportedOperationException
* If the schema language doesn't support this operation.
*/
public abstract Schema newSchema(Source[] schemas) throws SAXException;
/**
* Creates a special {@link Schema} object.
*
*
* The exact semantics of the returned {@link Schema} object depends * on the schema language that this {@link SchemaFactory} is created * for. * *
* Also, implementations are allowed to use implementation-specific * property/feature to alter the semantics of this method. * * *
* For XML Schema, this method creates a {@link Schema} object that * performs validation by using location hints specified in documents. * *
* The returned {@link Schema} object assumes that if documents * refer to the same URL in the schema location hints, * they will always resolve to the same schema document. This * assumption allows implementations to reuse parsed results of * schema documents so that multiple validations against the same * schema will run faster. * *
* Note that the use of schema location hints introduces a * vulnerability to denial-of-service attacks. * * *
* RELAX NG does not support this operation. * * @return * Always return non-null valid {@link Schema} object. * * @throws UnsupportedOperationException * If this operation is not supported by the callee. * @throws SAXException * If this operation is supported but failed for some reason. */ public abstract Schema newSchema() throws SAXException; } javax/xml/validation/SchemaFactoryFinder.java 100644 0 0 45440 11146172412 17021 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SchemaFactoryFinder.java 727367 2008-12-17 13:05:26Z mrglavas $ package javax.xml.validation; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Properties; import javax.xml.XMLConstants; /** * Implementation of {@link SchemaFactory#newInstance(String)}. * * @author Kohsuke Kawaguchi * @version $Revision: 727367 $, $Date: 2008-12-17 08:05:26 -0500 (Wed, 17 Dec 2008) $ * @since 1.5 */ final class SchemaFactoryFinder { /** XML Schema language identifiers. */ private static final String W3C_XML_SCHEMA10_NS_URI = "http://www.w3.org/XML/XMLSchema/v1.0"; private static final String W3C_XML_SCHEMA11_NS_URI = "http://www.w3.org/XML/XMLSchema/v1.1"; /** debug support code. */ private static boolean debug = false; /** *
Cache properties for performance.
*/ private static Properties cacheProps = new Properties(); /** *First time requires initialization overhead.
*/ private static boolean firstTime = true; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; static { // Use try/catch block to support applets try { String val = SecuritySupport.getSystemProperty("jaxp.debug"); // Allow simply setting the prop to turn on debug debug = val != null && (! "false".equals(val)); } catch (Exception _) { debug = false; } } /** *Conditional debug printing.
* * @param msg to print */ private static void debugPrintln(String msg) { if (debug) { System.err.println("JAXP: " + msg); } } /** *ClassLoader
to use to find SchemaFactory
.
Constructor that specifies ClassLoader
to use
* to find SchemaFactory
.
Creates a new {@link SchemaFactory} object for the specified * schema language.
* * @param schemaLanguage * See {@link SchemaFactory Schema Language} table inSchemaFactory
* for the list of available schema languages.
*
* @return null
if the callee fails to create one.
*
* @throws NullPointerException
* If the schemaLanguage parameter is null.
*/
public SchemaFactory newFactory(String schemaLanguage) {
if(schemaLanguage==null) throw new NullPointerException();
SchemaFactory f = _newFactory(schemaLanguage);
if (debug) {
if (f != null) {
debugPrintln("factory '" + f.getClass().getName() + "' was found for " + schemaLanguage);
} else {
debugPrintln("unable to find a factory for " + schemaLanguage);
}
}
return f;
}
/**
* Lookup a SchemaFactory
for the given schemaLanguage
.
SchemaFactory
for.
*
* @return SchemaFactory
for the given schemaLanguage
.
*/
private SchemaFactory _newFactory(String schemaLanguage) {
SchemaFactory sf;
String propertyName = SERVICE_CLASS.getName() + ":" + schemaLanguage;
// system property look up
try {
if (debug) debugPrintln("Looking up system property '"+propertyName+"'" );
String r = SecuritySupport.getSystemProperty(propertyName);
if (r != null && r.length() > 0) {
if (debug) debugPrintln("The value is '"+r+"'");
sf = createInstance(r);
if(sf!=null) return sf;
}
else if (debug) {
debugPrintln("The property is undefined.");
}
}
// The VM ran out of memory or there was some other serious problem. Re-throw.
catch (VirtualMachineError vme) {
throw vme;
}
// ThreadDeath should always be re-thrown
catch (ThreadDeath td) {
throw td;
}
catch (Throwable t) {
if( debug ) {
debugPrintln("failed to look up system property '"+propertyName+"'" );
t.printStackTrace();
}
}
String javah = SecuritySupport.getSystemProperty( "java.home" );
String configFile = javah + File.separator +
"lib" + File.separator + "jaxp.properties";
String factoryClassName = null ;
// try to read from $java.home/lib/jaxp.properties
try {
if(firstTime){
synchronized(cacheProps){
if(firstTime){
File f=new File( configFile );
firstTime = false;
if(SecuritySupport.doesFileExist(f)){
if (debug) debugPrintln("Read properties file " + f);
cacheProps.load(SecuritySupport.getFileInputStream(f));
}
}
}
}
factoryClassName = cacheProps.getProperty(propertyName);
if (debug) debugPrintln("found " + factoryClassName + " in $java.home/jaxp.properties");
if (factoryClassName != null) {
sf = createInstance(factoryClassName);
if(sf != null){
return sf;
}
}
} catch (Exception ex) {
if (debug) {
ex.printStackTrace();
}
}
/**
// try to read from $java.home/lib/jaxp.properties
try {
String javah = ss.getSystemProperty( "java.home" );
String configFile = javah + File.separator +
"lib" + File.separator + "jaxp.properties";
File f = new File( configFile );
if( ss.doesFileExist(f)) {
sf = loadFromProperty(
propertyName,f.getAbsolutePath(), new FileInputStream(f));
if(sf!=null) return sf;
} else {
debugPrintln("Tried to read "+ f.getAbsolutePath()+", but it doesn't exist.");
}
} catch(Throwable e) {
if( debug ) {
debugPrintln("failed to read $java.home/lib/jaxp.properties");
e.printStackTrace();
}
}
*/
// try META-INF/services files
Iterator sitr = createServiceFileIterator();
while(sitr.hasNext()) {
URL resource = (URL)sitr.next();
if (debug) debugPrintln("looking into " + resource);
try {
sf = loadFromServicesFile(schemaLanguage,resource.toExternalForm(),SecuritySupport.getURLInputStream(resource));
if(sf!=null) return sf;
} catch(IOException e) {
if( debug ) {
debugPrintln("failed to read "+resource);
e.printStackTrace();
}
}
}
// platform defaults
if (schemaLanguage.equals(XMLConstants.W3C_XML_SCHEMA_NS_URI) || schemaLanguage.equals(W3C_XML_SCHEMA10_NS_URI)) {
if (debug) debugPrintln("attempting to use the platform default XML Schema 1.0 validator");
return createInstance("org.apache.xerces.jaxp.validation.XMLSchemaFactory");
}
else if (schemaLanguage.equals(W3C_XML_SCHEMA11_NS_URI)) {
if (debug) debugPrintln("attempting to use the platform default XML Schema 1.1 validator");
return createInstance("org.apache.xerces.jaxp.validation.XMLSchema11Factory");
}
if (debug) debugPrintln("all things were tried, but none was found. bailing out.");
return null;
}
/**
* Creates an instance of the specified and returns it.
* * @param className * fully qualified class name to be instantiated. * * @return null * if it fails. Error messages will be printed by this method. */ SchemaFactory createInstance( String className ) { try { if (debug) debugPrintln("instanciating "+className); Class clazz; if( classLoader!=null ) clazz = classLoader.loadClass(className); else clazz = Class.forName(className); if(debug) debugPrintln("loaded it from "+which(clazz)); Object o = clazz.newInstance(); if( o instanceof SchemaFactory ) return (SchemaFactory)o; if (debug) debugPrintln(className+" is not assignable to "+SERVICE_CLASS.getName()); } // The VM ran out of memory or there was some other serious problem. Re-throw. catch (VirtualMachineError vme) { throw vme; } // ThreadDeath should always be re-thrown catch (ThreadDeath td) { throw td; } catch (Throwable t) { debugPrintln("failed to instanciate "+className); if(debug) t.printStackTrace(); } return null; } /** Iterator that lazily computes one value and returns it. */ private static abstract class SingleIterator implements Iterator { private boolean seen = false; public final void remove() { throw new UnsupportedOperationException(); } public final boolean hasNext() { return !seen; } public final Object next() { if(seen) throw new NoSuchElementException(); seen = true; return value(); } protected abstract Object value(); } /** * Returns an {@link Iterator} that enumerates all * the META-INF/services files that we care. */ private Iterator createServiceFileIterator() { if (classLoader == null) { return new SingleIterator() { protected Object value() { ClassLoader classLoader = SchemaFactoryFinder.class.getClassLoader(); //return (ClassLoader.getSystemResource( SERVICE_ID )); return SecuritySupport.getResourceAsURL(classLoader, SERVICE_ID); } }; } else { try { //final Enumeration e = classLoader.getResources(SERVICE_ID); final Enumeration e = SecuritySupport.getResources(classLoader, SERVICE_ID); if(debug && !e.hasMoreElements()) { debugPrintln("no "+SERVICE_ID+" file was found"); } // wrap it into an Iterator. return new Iterator() { public void remove() { throw new UnsupportedOperationException(); } public boolean hasNext() { return e.hasMoreElements(); } public Object next() { return e.nextElement(); } }; } catch (IOException e) { if (debug) { debugPrintln("failed to enumerate resources "+SERVICE_ID); e.printStackTrace(); } return new ArrayList().iterator(); // empty iterator } } } /** Searches for a SchemaFactory for a given schema language in a META-INF/services file. */ private SchemaFactory loadFromServicesFile(String schemaLanguage, String resourceName, InputStream in) { if (debug) debugPrintln("Reading "+resourceName ); // Read the service provider name in UTF-8 as specified in // the jar spec. Unfortunately this fails in Microsoft // VJ++, which does not implement the UTF-8 // encoding. Theoretically, we should simply let it fail in // that case, since the JVM is obviously broken if it // doesn't support such a basic standard. But since there // are still some users attempting to use VJ++ for // development, we have dropped in a fallback which makes a // second attempt using the platform's default encoding. In // VJ++ this is apparently ASCII, which is a subset of // UTF-8... and since the strings we'll be reading here are // also primarily limited to the 7-bit ASCII range (at // least, in English versions), this should work well // enough to keep us on the air until we're ready to // officially decommit from VJ++. [Edited comment from // jkesselm] BufferedReader rd; try { rd = new BufferedReader(new InputStreamReader(in, "UTF-8"), DEFAULT_LINE_LENGTH); } catch (java.io.UnsupportedEncodingException e) { rd = new BufferedReader(new InputStreamReader(in), DEFAULT_LINE_LENGTH); } String factoryClassName = null; SchemaFactory resultFactory = null; // See spec for provider-configuration files: http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Provider%20Configuration%20File while (true) { try { factoryClassName = rd.readLine(); } catch (IOException x) { // No provider found break; } if (factoryClassName != null) { // Ignore comments in the provider-configuration file int hashIndex = factoryClassName.indexOf('#'); if (hashIndex != -1) { factoryClassName = factoryClassName.substring(0, hashIndex); } // Ignore leading and trailing whitespace factoryClassName = factoryClassName.trim(); // If there's no text left or if this was a blank line, go to the next one. if (factoryClassName.length() == 0) { continue; } try { // Found the right SchemaFactory if its isSchemaLanguageSupported(schemaLanguage) method returns true. SchemaFactory foundFactory = (SchemaFactory) createInstance(factoryClassName); if (foundFactory.isSchemaLanguageSupported(schemaLanguage)) { resultFactory = foundFactory; break; } } catch (Exception e) {} } else { break; } } try { // try to close the reader. rd.close(); } // Ignore the exception. catch (IOException exc) {} return resultFactory; } private static final Class SERVICE_CLASS = SchemaFactory.class; private static final String SERVICE_ID = "META-INF/services/" + SERVICE_CLASS.getName(); private static String which( Class clazz ) { return which( clazz.getName(), clazz.getClassLoader() ); } /** *Search the specified classloader for the given classname.
* * @param classname the fully qualified name of the class to search for * @param loader the classloader to search * * @return the source location of the resource, or null if it wasn't found */ private static String which(String classname, ClassLoader loader) { String classnameAsResource = classname.replace('.', '/') + ".class"; if( loader==null ) loader = ClassLoader.getSystemClassLoader(); //URL it = loader.getResource(classnameAsResource); URL it = SecuritySupport.getResourceAsURL(loader, classnameAsResource); if (it != null) { return it.toString(); } else { return null; } } } javax/xml/validation/SchemaFactoryLoader.java 100644 0 0 2457 11146172412 17001 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SchemaFactoryLoader.java 448801 2006-09-22 04:19:20Z mrglavas $ package javax.xml.validation; /** *This class was removed from JAXP 1.3 before it was finalized but * was mistakenly included in Java 5. It only exists now for compatibility * reasons. Applications should avoid using it.
*/ public abstract class SchemaFactoryLoader { protected SchemaFactoryLoader() {} public abstract SchemaFactory newFactory(String schemaLanguage); } // SchemaFactoryLoader javax/xml/validation/SecuritySupport.java 100644 0 0 12675 11146172413 16352 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SecuritySupport.java 522337 2007-03-25 20:03:27Z mrglavas $ package javax.xml.validation; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.util.Enumeration; /** * This class is duplicated for each JAXP subpackage so keep it in sync. * It is package private and therefore is not exposed as part of the JAXP * API. * * Security related methods that only work on J2SE 1.2 and newer. */ final class SecuritySupport { private SecuritySupport() {} static ClassLoader getContextClassLoader() { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (SecurityException ex) { } return cl; } }); } static String getSystemProperty(final String propName) { return (String) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty(propName); } }); } static FileInputStream getFileInputStream(final File file) throws FileNotFoundException { try { return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws FileNotFoundException { return new FileInputStream(file); } }); } catch (PrivilegedActionException e) { throw (FileNotFoundException)e.getException(); } } static InputStream getURLInputStream(final URL url) throws IOException { try { return (InputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException { return url.openStream(); } }); } catch (PrivilegedActionException e) { throw (IOException)e.getException(); } } static URL getResourceAsURL(final ClassLoader cl, final String name) { return (URL) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { URL url; if (cl == null) { url = ClassLoader.getSystemResource(name); } else { url = cl.getResource(name); } return url; } }); } static Enumeration getResources(final ClassLoader cl, final String name) throws IOException { try{ return (Enumeration) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException{ Enumeration enumeration; if (cl == null) { enumeration = ClassLoader.getSystemResources(name); } else { enumeration = cl.getResources(name); } return enumeration; } }); }catch(PrivilegedActionException e){ throw (IOException)e.getException(); } } static InputStream getResourceAsStream(final ClassLoader cl, final String name) { return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { InputStream ris; if (cl == null) { ris = ClassLoader.getSystemResourceAsStream(name); } else { ris = cl.getResourceAsStream(name); } return ris; } }); } static boolean doesFileExist(final File f) { return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return f.exists() ? Boolean.TRUE : Boolean.FALSE; } })).booleanValue(); } } javax/xml/validation/TypeInfoProvider.java 100644 0 0 15525 11304014203 16377 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: TypeInfoProvider.java 884939 2009-11-27 18:20:46Z mrglavas $ package javax.xml.validation; import org.w3c.dom.TypeInfo; /** * This class provides access to the type information determined * by {@link ValidatorHandler}. * ** Some schema languages, such as W3C XML Schema, encourages a validator * to report the "type" it assigns to each attribute/element. * Those applications who wish to access this type information can invoke * methods defined on this "interface" to access such type information. * *
* Implementation of this "interface" can be obtained through the * {@link ValidatorHandler#getTypeInfoProvider()} method. * * @author Kohsuke Kawaguchi * @version $Revision: 884939 $, $Date: 2009-11-27 13:20:46 -0500 (Fri, 27 Nov 2009) $ * @see org.w3c.dom.TypeInfo * @since 1.5 */ public abstract class TypeInfoProvider { /** * Constructor for the derived class. * *
* The constructor does nothing. */ protected TypeInfoProvider() { } /** *
Returns the immutable {@link TypeInfo} object for the current element.
* ** The method may only be called by the startElement and endElement event of * the {@link org.xml.sax.ContentHandler} that the application sets to the * {@link ValidatorHandler}.
* * @throws IllegalStateException * If this method is called from other {@link org.xml.sax.ContentHandler} * methods. * @return * An immutable {@link TypeInfo} object that represents the * type of the current element. * Note that the caller can keep references to the obtained * {@link TypeInfo} longer than the callback scope. * * Otherwise, this method returns * null if the validator is unable to * determine the type of the current element for some reason * (for example, if the validator is recovering from * an earlier error.) * */ public abstract TypeInfo getElementTypeInfo(); /** * Returns the immutable {@link TypeInfo} object for the specified * attribute of the current element. * ** The method may only be called by the startElement event of * the {@link org.xml.sax.ContentHandler} that the application sets to the * {@link ValidatorHandler}. * * @param index * The index of the attribute. The same index for * the {@link org.xml.sax.Attributes} object passed to the * startElement callback. * * @throws IndexOutOfBoundsException * If the index is invalid. * @throws IllegalStateException * If this method is called from other {@link org.xml.sax.ContentHandler} * methods. * * @return * An immutable {@link TypeInfo} object that represents the * type of the specified attribute. * Note that the caller can keep references to the obtained * {@link TypeInfo} longer than the callback scope. * * Otherwise, this method returns * null if the validator is unable to * determine the type. */ public abstract TypeInfo getAttributeTypeInfo(int index); /** * Returns true if the specified attribute is determined * to be ID. * *
* Exactly how an attribute is "determined to be ID" is up to the * schema language. In case of W3C XML Schema, this means * that the actual type of the attribute is the built-in ID type * or its derived type. * *
* A {@link javax.xml.parsers.DocumentBuilder} uses this information * to properly implement {@link org.w3c.dom.Attr#isId()}. * *
* The method may only be called by the startElement event of * the {@link org.xml.sax.ContentHandler} that the application sets to the * {@link ValidatorHandler}. * * @param index * The index of the attribute. The same index for * the {@link org.xml.sax.Attributes} object passed to the * startElement callback. * * @throws IndexOutOfBoundsException * If the index is invalid. * @throws IllegalStateException * If this method is called from other {@link org.xml.sax.ContentHandler} * methods. * * @return true * if the type of the specified attribute is ID. */ public abstract boolean isIdAttribute(int index); /** * Returns false if the attribute was added by the validator. * *
* This method provides information necessary for * a {@link javax.xml.parsers.DocumentBuilder} to determine what * the DOM tree should return from the {@link org.w3c.dom.Attr#getSpecified()} method. * *
* The method may only be called by the startElement event of * the {@link org.xml.sax.ContentHandler} that the application sets to the * {@link ValidatorHandler}. * *
* A general guideline for validators is to return true if * the attribute was originally present in the pipeline, and * false if it was added by the validator. * * @param index * The index of the attribute. The same index for * the {@link org.xml.sax.Attributes} object passed to the * startElement callback. * * @throws IndexOutOfBoundsException * If the index is invalid. * @throws IllegalStateException * If this method is called from other {@link org.xml.sax.ContentHandler} * methods. * * @return * true if the attribute was present before the validator * processes input. false if the attribute was added * by the validator. */ public abstract boolean isSpecified(int index); } javax/xml/validation/Validator.java 100644 0 0 43240 11307760075 15071 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: Validator.java 888884 2009-12-09 17:36:46Z mrglavas $ package javax.xml.validation; import java.io.IOException; import javax.xml.transform.Result; import javax.xml.transform.Source; import org.w3c.dom.ls.LSResourceResolver; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; /** *
A processor that checks an XML document against {@link Schema}.
* ** A validator is a thread-unsafe and non-reentrant object. * In other words, it is the application's responsibility to make * sure that one {@link Validator} object is not used from * more than one thread at any given time, and while the validate * method is invoked, applications may not recursively call * the validate method. *
*
* Note that while the {@link #validate(javax.xml.transform.Source)} and {@link #validate(javax.xml.transform.Source, javax.xml.transform.Result)}
* methods take a {@link Source} instance, the Source
* instance must be a SAXSource
, DOMSource
, StAXSource
or StreamSource
.
*
* @author Kohsuke Kawaguchi
* @version $Revision: 888884 $, $Date: 2009-12-09 12:36:46 -0500 (Wed, 09 Dec 2009) $
* @since 1.5
*/
public abstract class Validator {
/**
* Constructor for derived classes.
*
*
* The constructor does nothing. * *
* Derived classes must create {@link Validator} objects that have * null {@link ErrorHandler} and * null {@link LSResourceResolver}. */ protected Validator() { } /** *
Reset this Validator
to its original configuration.
Validator
is reset to the same state as when it was created with
* {@link Schema#newValidator()}.
* reset()
is designed to allow the reuse of existing Validator
s
* thus saving resources associated with the creation of new Validator
s.
The reset Validator
is not guaranteed to have the same {@link LSResourceResolver} or {@link ErrorHandler}
* Object
s, e.g. {@link Object#equals(Object obj)}. It is guaranteed to have a functionally equal
* LSResourceResolver
and ErrorHandler
.
* This is just a convenience method of: *
* validate(source,null); ** * @see #setErrorHandler(ErrorHandler) */ public void validate(Source source) throws SAXException, IOException { validate(source, null); } /** * Validates the specified input and send the augmented validation * result to the specified output. * *
* This method places the following restrictions on the types of * the {@link Source}/{@link Result} accepted. * *
* | {@link javax.xml.transform.sax.SAXSource} | *{@link javax.xml.transform.dom.DOMSource} | *{@link javax.xml.transform.stax.StAXSource} | *{@link javax.xml.transform.stream.StreamSource} | *
null | *OK | *OK | *OK | *OK | *
{@link javax.xml.transform.sax.SAXResult} | *OK | *Err | *Err | *Err | *
{@link javax.xml.transform.dom.DOMResult} | *Err | *OK | *Err | *Err | *
{@link javax.xml.transform.stax.StAXResult} | *Err | *Err | *OK | *Err | *
{@link javax.xml.transform.stream.StreamResult} | *Err | *Err | *Err | *OK | *
* To validate one {@link Source} into another kind of {@link Result}, use the identity transformer * (see {@link javax.xml.transform.TransformerFactory#newTransformer()}). * *
* Errors found during the validation is sent to the specified * {@link ErrorHandler}. * *
* If a document is valid, or if a document contains some errors
* but none of them were fatal and the {@link ErrorHandler} didn't
* throw any exception, then the method returns normally.
*
* @param source
* XML to be validated. Must not be null.
*
* @param result
* The {@link Result} object that receives (possibly augmented)
* XML. This parameter can be null if the caller is not interested
* in it.
*
* Note that when a {@link javax.xml.transform.dom.DOMResult} is used,
* a validator might just pass the same DOM node from
* {@link javax.xml.transform.dom.DOMSource} to
* {@link javax.xml.transform.dom.DOMResult}
* (in which case source.getNode()==result.getNode()),
* it might copy the entire DOM tree, or it might alter the
* node given by the source.
*
* @throws IllegalArgumentException
* If the {@link Result} type doesn't match the {@link Source} type,
* or if the specified source is not a
* {@link javax.xml.transform.sax.SAXSource},
* {@link javax.xml.transform.dom.DOMSource},
* {@link javax.xml.transform.stax.StAXSource} or
* {@link javax.xml.transform.stream.StreamSource}.
*
* @throws SAXException
* If the {@link ErrorHandler} throws a {@link SAXException} or
* if a fatal error is found and the {@link ErrorHandler} returns
* normally.
*
* @throws IOException
* If the validator is processing a
* {@link javax.xml.transform.sax.SAXSource} and the
* underlying {@link org.xml.sax.XMLReader} throws an
* {@link IOException}.
*
* @throws NullPointerException
* If the source parameter is null.
*
* @see #validate(Source)
*/
public abstract void validate(Source source, Result result) throws SAXException, IOException;
/**
* Sets the {@link ErrorHandler} to receive errors encountered
* during the validate
method invocation.
*
*
* Error handler can be used to customize the error handling process * during a validation. When an {@link ErrorHandler} is set, * errors found during the validation will be first sent * to the {@link ErrorHandler}. * *
* The error handler can abort further validation immediately * by throwing {@link SAXException} from the handler. Or for example * it can print an error to the screen and try to continue the * validation by returning normally from the {@link ErrorHandler} * *
* If any {@link Throwable} is thrown from an {@link ErrorHandler},
* the caller of the validate
method will be thrown
* the same {@link Throwable} object.
*
*
* {@link Validator} is not allowed to * throw {@link SAXException} without first reporting it to * {@link ErrorHandler}. * *
* When the {@link ErrorHandler} is null, the implementation will * behave as if the following {@link ErrorHandler} is set: *
* class DraconianErrorHandler implements {@link ErrorHandler} { * public void fatalError( {@link org.xml.sax.SAXParseException} e ) throws {@link SAXException} { * throw e; * } * public void error( {@link org.xml.sax.SAXParseException} e ) throws {@link SAXException} { * throw e; * } * public void warning( {@link org.xml.sax.SAXParseException} e ) throws {@link SAXException} { * // noop * } * } ** *
* When a new {@link Validator} object is created, initially * this field is set to null. * * @param errorHandler * A new error handler to be set. This parameter can be null. */ public abstract void setErrorHandler(ErrorHandler errorHandler); /** * Gets the current {@link ErrorHandler} set to this {@link Validator}. * * @return * This method returns the object that was last set through * the {@link #setErrorHandler(ErrorHandler)} method, or null * if that method has never been called since this {@link Validator} * has created. * * @see #setErrorHandler(ErrorHandler) */ public abstract ErrorHandler getErrorHandler(); /** * Sets the {@link LSResourceResolver} to customize * resource resolution while in a validation episode. * *
* {@link Validator} uses a {@link LSResourceResolver} * when it needs to locate external resources while a validation, * although exactly what constitutes "locating external resources" is * up to each schema language. * *
* When the {@link LSResourceResolver} is null, the implementation will * behave as if the following {@link LSResourceResolver} is set: *
* class DumbLSResourceResolver implements {@link LSResourceResolver} { * public {@link org.w3c.dom.ls.LSInput} resolveResource( * String publicId, String systemId, String baseURI) { * * return null; // always return null * } * } ** *
* If a {@link LSResourceResolver} throws a {@link RuntimeException}
* (or instances of its derived classes),
* then the {@link Validator} will abort the parsing and
* the caller of the validate
method will receive
* the same {@link RuntimeException}.
*
*
* When a new {@link Validator} object is created, initially * this field is set to null. * * @param resourceResolver * A new resource resolver to be set. This parameter can be null. */ public abstract void setResourceResolver(LSResourceResolver resourceResolver); /** * Gets the current {@link LSResourceResolver} set to this {@link Validator}. * * @return * This method returns the object that was last set through * the {@link #setResourceResolver(LSResourceResolver)} method, or null * if that method has never been called since this {@link Validator} * has created. * * @see #setErrorHandler(ErrorHandler) */ public abstract LSResourceResolver getResourceResolver(); /** * Look up the value of a feature flag. * *
The feature name is any fully-qualified URI. It is * possible for a {@link Validator} to recognize a feature name but * temporarily be unable to return its value. * Some feature values may be available only in specific * contexts, such as before, during, or after a validation. * *
Implementors are free (and encouraged) to invent their own features, * using names built on their own URIs.
* * @param name The feature name, which is a non-null fully-qualified URI. * @return The current value of the feature (true or false). * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link Validator} recognizes the feature name but * cannot determine its value at this time. * @throws NullPointerException * When the name parameter is null. * @see #setFeature(String, boolean) */ public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException("the name parameter is null"); throw new SAXNotRecognizedException(name); } /** * Set the value of a feature flag. * ** Feature can be used to control the way a {@link Validator} * parses schemas, although {@link Validator}s are not required * to recognize any specific property names.
* *The feature name is any fully-qualified URI. It is * possible for a {@link Validator} to expose a feature value but * to be unable to change the current value. * Some feature values may be immutable or mutable only * in specific contexts, such as before, during, or after * a validation.
* * @param name The feature name, which is a non-null fully-qualified URI. * @param value The requested value of the feature (true or false). * * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link Validator} recognizes the feature name but * cannot set the requested value. * @throws NullPointerException * When the name parameter is null. * * @see #getFeature(String) */ public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException("the name parameter is null"); throw new SAXNotRecognizedException(name); } /** * Set the value of a property. * *The property name is any fully-qualified URI. It is * possible for a {@link Validator} to recognize a property name but * to be unable to change the current value. * Some property values may be immutable or mutable only * in specific contexts, such as before, during, or after * a validation.
* *{@link Validator}s are not required to recognize setting * any specific property names.
* * @param name The property name, which is a non-null fully-qualified URI. * @param object The requested value for the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link Validator} recognizes the property name but * cannot set the requested value. * @throws NullPointerException * When the name parameter is null. */ public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException("the name parameter is null"); throw new SAXNotRecognizedException(name); } /** * Look up the value of a property. * *The property name is any fully-qualified URI. It is * possible for a {@link Validator} to recognize a property name but * temporarily be unable to return its value. * Some property values may be available only in specific * contexts, such as before, during, or after a validation.
* *{@link Validator}s are not required to recognize any specific * property names.
* *Implementors are free (and encouraged) to invent their own properties, * using names built on their own URIs.
* * @param name The property name, which is a non-null fully-qualified URI. * @return The current value of the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * XMLReader recognizes the property name but * cannot determine its value at this time. * @throws NullPointerException * When the name parameter is null. * @see #setProperty(String, Object) */ public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException("the name parameter is null"); throw new SAXNotRecognizedException(name); } } javax/xml/validation/ValidatorHandler.java 100644 0 0 44766 11146172412 16376 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: ValidatorHandler.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.validation; import org.w3c.dom.ls.LSResourceResolver; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; /** * Streaming validator that works on SAX stream. * ** A {@link ValidatorHandler} object is a thread-unsafe, non-reentrant object. * In other words, it is the application's responsibility to make * sure that one {@link ValidatorHandler} object is not used from * more than one thread at any given time. * *
* {@link ValidatorHandler} checks if the SAX events follow * the set of constraints described in the associated {@link Schema}, * and additionally it may modify the SAX events (for example * by adding default values, etc.) * *
* {@link ValidatorHandler} extends from {@link ContentHandler}, * but it refines the underlying {@link ContentHandler} in * the following way: *
uri
, localName
, and qname
,
* even though SAX allows some of them to be null.
* Similarly, the user-specified {@link ContentHandler} will receive non-null
* Strings for all three parameters.
*
* * A {@link ValidatorHandler} is automatically reset every time * the startDocument method is invoked. * *
* This spec defines the following feature that must be recognized * by all {@link ValidatorHandler} implementations. * *
http://xml.org/sax/features/namespace-prefixes
* This feature controls how a {@link ValidatorHandler} introduces
* namespace bindings that were not present in the original SAX event
* stream.
* When this feature is set to true, it must make
* sure that the user's {@link ContentHandler} will see
* the corresponding xmlns*
attribute in
* the {@link org.xml.sax.Attributes} object of the
* {@link ContentHandler#startElement(String,String,String,Attributes)}
* callback. Otherwise, xmlns*
attributes must not be
* added to {@link org.xml.sax.Attributes} that's passed to the
* user-specified {@link ContentHandler}.
*
* (Note that regardless of this switch, namespace bindings are * always notified to applications through * {@link ContentHandler#startPrefixMapping(String,String)} and * {@link ContentHandler#endPrefixMapping(String)} methods of the * {@link ContentHandler} specified by the user.) * *
* Note that this feature does NOT affect the way * a {@link ValidatorHandler} receives SAX events. It merely * changes the way it augments SAX events. * *
This feature is set to false
by default.
* The constructor does nothing. * *
* Derived classes must create {@link ValidatorHandler} objects that have * null {@link ErrorHandler} and * null {@link LSResourceResolver}. */ protected ValidatorHandler() { } /** * Sets the {@link ContentHandler} which receives * the augmented validation result. * *
* When a {@link ContentHandler} is specified, a * {@link ValidatorHandler} will work as a filter * and basically copy the incoming events to the * specified {@link ContentHandler}. * *
* In doing so, a {@link ValidatorHandler} may modify * the events, for example by adding defaulted attributes. * *
* A {@link ValidatorHandler} may buffer events to certain * extent, but to allow {@link ValidatorHandler} to be used * by a parser, the following requirement has to be met. * *
* When a callback method on the specified {@link ContentHandler} * throws an exception, the same exception object must be thrown * from the {@link ValidatorHandler}. The {@link ErrorHandler} * should not be notified of such an exception. * *
* This method can be called even during a middle of a validation. * * @param receiver * A {@link ContentHandler} or a null value. */ public abstract void setContentHandler(ContentHandler receiver); /** * Gets the {@link ContentHandler} which receives the * augmented validation result. * * @return * This method returns the object that was last set through * the {@link #getContentHandler()} method, or null * if that method has never been called since this {@link ValidatorHandler} * has created. * * @see #setContentHandler(ContentHandler) */ public abstract ContentHandler getContentHandler(); /** * Sets the {@link ErrorHandler} to receive errors encountered * during the validation. * *
* Error handler can be used to customize the error handling process * during a validation. When an {@link ErrorHandler} is set, * errors found during the validation will be first sent * to the {@link ErrorHandler}. * *
* The error handler can abort further validation immediately * by throwing {@link org.xml.sax.SAXException} from the handler. Or for example * it can print an error to the screen and try to continue the * validation by returning normally from the {@link ErrorHandler} * *
* If any {@link Throwable} is thrown from an {@link ErrorHandler}, * the same {@link Throwable} object will be thrown toward the * root of the call stack. * *
* {@link ValidatorHandler} is not allowed to * throw {@link org.xml.sax.SAXException} without first reporting it to * {@link ErrorHandler}. * *
* When the {@link ErrorHandler} is null, the implementation will * behave as if the following {@link ErrorHandler} is set: *
* class DraconianErrorHandler implements {@link ErrorHandler} { * public void fatalError( {@link org.xml.sax.SAXParseException} e ) throws {@link org.xml.sax.SAXException} { * throw e; * } * public void error( {@link org.xml.sax.SAXParseException} e ) throws {@link org.xml.sax.SAXException} { * throw e; * } * public void warning( {@link org.xml.sax.SAXParseException} e ) throws {@link org.xml.sax.SAXException} { * // noop * } * } ** *
* When a new {@link ValidatorHandler} object is created, initially * this field is set to null. * * @param errorHandler * A new error handler to be set. This parameter can be null. */ public abstract void setErrorHandler(ErrorHandler errorHandler); /** * Gets the current {@link ErrorHandler} set to this {@link ValidatorHandler}. * * @return * This method returns the object that was last set through * the {@link #setErrorHandler(ErrorHandler)} method, or null * if that method has never been called since this {@link ValidatorHandler} * has created. * * @see #setErrorHandler(ErrorHandler) */ public abstract ErrorHandler getErrorHandler(); /** * Sets the {@link LSResourceResolver} to customize * resource resolution while in a validation episode. * *
* {@link ValidatorHandler} uses a {@link LSResourceResolver} * when it needs to locate external resources while a validation, * although exactly what constitutes "locating external resources" is * up to each schema language. * *
* When the {@link LSResourceResolver} is null, the implementation will * behave as if the following {@link LSResourceResolver} is set: *
* class DumbLSResourceResolver implements {@link LSResourceResolver} { * public {@link org.w3c.dom.ls.LSInput} resolveResource( * String publicId, String systemId, String baseURI) { * * return null; // always return null * } * } ** *
* If a {@link LSResourceResolver} throws a {@link RuntimeException}
* (or instances of its derived classes),
* then the {@link ValidatorHandler} will abort the parsing and
* the caller of the validate
method will receive
* the same {@link RuntimeException}.
*
*
* When a new {@link ValidatorHandler} object is created, initially * this field is set to null. * * @param resourceResolver * A new resource resolver to be set. This parameter can be null. */ public abstract void setResourceResolver(LSResourceResolver resourceResolver); /** * Gets the current {@link LSResourceResolver} set to this {@link ValidatorHandler}. * * @return * This method returns the object that was last set through * the {@link #setResourceResolver(LSResourceResolver)} method, or null * if that method has never been called since this {@link ValidatorHandler} * has created. * * @see #setErrorHandler(ErrorHandler) */ public abstract LSResourceResolver getResourceResolver(); /** * Obtains the {@link TypeInfoProvider} implementation of this * {@link ValidatorHandler}. * *
* The obtained {@link TypeInfoProvider} can be queried during a parse * to access the type information determined by the validator. * *
* Some schema languages do not define the notion of type, * for those languages, this method may not be supported. * However, to be compliant with this specification, implementations * for W3C XML Schema 1.0 must support this operation. * * @return * null if the validator / schema language does not support * the notion of {@link org.w3c.dom.TypeInfo}. * Otherwise a non-null valid {@link TypeInfoProvider}. */ public abstract TypeInfoProvider getTypeInfoProvider(); /** * Look up the value of a feature flag. * *
The feature name is any fully-qualified URI. It is * possible for a {@link ValidatorHandler} to recognize a feature name but * temporarily be unable to return its value. * Some feature values may be available only in specific * contexts, such as before, during, or after a validation. * *
Implementors are free (and encouraged) to invent their own features, * using names built on their own URIs.
* * @param name The feature name, which is a non-null fully-qualified URI. * @return The current value of the feature (true or false). * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link ValidatorHandler} recognizes the feature name but * cannot determine its value at this time. * @throws NullPointerException * When the name parameter is null. * @see #setFeature(String, boolean) */ public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException(); throw new SAXNotRecognizedException(name); } /** * Set the value of a feature flag. * ** Feature can be used to control the way a {@link ValidatorHandler} * parses schemas, although {@link ValidatorHandler}s are not required * to recognize any specific property names.
* *The feature name is any fully-qualified URI. It is * possible for a {@link ValidatorHandler} to expose a feature value but * to be unable to change the current value. * Some feature values may be immutable or mutable only * in specific contexts, such as before, during, or after * a validation.
* * @param name The feature name, which is a non-null fully-qualified URI. * @param value The requested value of the feature (true or false). * * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link ValidatorHandler} recognizes the feature name but * cannot set the requested value. * @throws NullPointerException * When the name parameter is null. * * @see #getFeature(String) */ public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException(); throw new SAXNotRecognizedException(name); } /** * Set the value of a property. * *The property name is any fully-qualified URI. It is * possible for a {@link ValidatorHandler} to recognize a property name but * to be unable to change the current value. * Some property values may be immutable or mutable only * in specific contexts, such as before, during, or after * a validation.
* *{@link ValidatorHandler}s are not required to recognize setting * any specific property names.
* * @param name The property name, which is a non-null fully-qualified URI. * @param object The requested value for the property. * * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * {@link ValidatorHandler} recognizes the property name but * cannot set the requested value. * @throws NullPointerException * When the name parameter is null. */ public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException(); throw new SAXNotRecognizedException(name); } /** * Look up the value of a property. * *The property name is any fully-qualified URI. It is * possible for a {@link ValidatorHandler} to recognize a property name but * temporarily be unable to return its value. * Some property values may be available only in specific * contexts, such as before, during, or after a validation.
* *{@link ValidatorHandler}s are not required to recognize any specific * property names.
* *Implementors are free (and encouraged) to invent their own properties, * using names built on their own URIs.
* * @param name The property name, which is a non-null fully-qualified URI. * @return The current value of the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * XMLReader recognizes the property name but * cannot determine its value at this time. * @throws NullPointerException * When the name parameter is null. * @see #setProperty(String, Object) */ public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if(name==null) throw new NullPointerException(); throw new SAXNotRecognizedException(name); } } javax/xml/validation/package.html 100644 0 0 13330 11146172413 14551 0 ustar 0 0This package provides an API for validation of XML documents. Validation is the process of verifying that an XML document is an instance of a specified XML schema. An XML schema defines the content model (also called a grammar or vocabulary) that its instance documents will represent.
There are a number of popular technologies available for creating an XML schema. Some of the most popular include:
Previous versions of JAXP supported validation as a feature of an XML parser, represented by either a {@link javax.xml.parsers.SAXParser} or {@link javax.xml.parsers.DocumentBuilder} instance.
The JAXP validation API decouples the validation of an instance document from the parsing of an XML document. This is advantageous for several reasons, some of which are:
Usage example. The following example demonstrates validating an XML document with the Validation API (for readability, some exception handling is not shown):
// parse an XML document into a DOM tree DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance(); parserFactory.setNamespaceAware(true); DocumentBuilder parser = parserFactory.newDocumentBuilder(); Document document = parser.parse(new File("instance.xml")); // create a SchemaFactory capable of understanding WXS schemas SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); // load a WXS schema, represented by a Schema instance Source schemaFile = new StreamSource(new File("mySchema.xsd")); Schema schema = factory.newSchema(schemaFile); // create a Validator instance, which can be used to validate an instance document Validator validator = schema.newValidator(); // validate the DOM tree try { validator.validate(new DOMSource(document)); } catch (SAXException e) { // instance document is invalid! }
The JAXP parsing API has been integrated with the Validation API. Applications may create a {@link javax.xml.validation.Schema} with the validation API
and associate it with a {@link javax.xml.parsers.DocumentBuilderFactory} or a {@link javax.xml.parsers.SAXParserFactory} instance
by using the {@link javax.xml.parsers.DocumentBuilderFactory#setSchema(Schema)} and {@link javax.xml.parsers.SAXParserFactory#setSchema(Schema)}
methods. You should not both set a schema and call setValidating(true)
on a parser factory. The former technique
will cause parsers to use the new validation API; the latter will cause parsers to use their own internal validation
facilities. Turning on both of these options simultaneously will cause either redundant behavior or error conditions.
javax/xml/xpath/SecuritySupport.java 100644 0 0 12670 11146172412 15336 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: SecuritySupport.java 522337 2007-03-25 20:03:27Z mrglavas $ package javax.xml.xpath; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.util.Enumeration; /** * This class is duplicated for each JAXP subpackage so keep it in sync. * It is package private and therefore is not exposed as part of the JAXP * API. * * Security related methods that only work on J2SE 1.2 and newer. */ final class SecuritySupport { private SecuritySupport() {} static ClassLoader getContextClassLoader() { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (SecurityException ex) { } return cl; } }); } static String getSystemProperty(final String propName) { return (String) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty(propName); } }); } static FileInputStream getFileInputStream(final File file) throws FileNotFoundException { try { return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws FileNotFoundException { return new FileInputStream(file); } }); } catch (PrivilegedActionException e) { throw (FileNotFoundException)e.getException(); } } static InputStream getURLInputStream(final URL url) throws IOException { try { return (InputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException { return url.openStream(); } }); } catch (PrivilegedActionException e) { throw (IOException)e.getException(); } } static URL getResourceAsURL(final ClassLoader cl, final String name) { return (URL) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { URL url; if (cl == null) { url = ClassLoader.getSystemResource(name); } else { url = cl.getResource(name); } return url; } }); } static Enumeration getResources(final ClassLoader cl, final String name) throws IOException { try{ return (Enumeration) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException{ Enumeration enumeration; if (cl == null) { enumeration = ClassLoader.getSystemResources(name); } else { enumeration = cl.getResources(name); } return enumeration; } }); }catch(PrivilegedActionException e){ throw (IOException)e.getException(); } } static InputStream getResourceAsStream(final ClassLoader cl, final String name) { return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { InputStream ris; if (cl == null) { ris = ClassLoader.getSystemResourceAsStream(name); } else { ris = cl.getResourceAsStream(name); } return ris; } }); } static boolean doesFileExist(final File f) { return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return f.exists() ? Boolean.TRUE : Boolean.FALSE; } })).booleanValue(); } } javax/xml/xpath/XPath.java 100644 0 0 32665 11146172412 13164 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XPath.java 569998 2007-08-27 04:40:02Z mrglavas $ package javax.xml.xpath; import org.xml.sax.InputSource; import javax.xml.namespace.QName; import javax.xml.namespace.NamespaceContext; /** *
XPath
provides access to the XPath evaluation environment and expressions.
Evaluation of XPath Expressions. | *|
---|---|
context | ** If a request is made to evaluate the expression in the absence * of a context item, an empty document node will be used for the context. * For the purposes of evaluating XPath expressions, a DocumentFragment * is treated like a Document node. * | *
variables | *
* If the expression contains a variable reference, its value will be found through the {@link XPathVariableResolver}
* set with {@link #setXPathVariableResolver(XPathVariableResolver resolver)}.
* An {@link XPathExpressionException} is raised if the variable resolver is undefined or
* the resolver returns null for the variable.
* The value of a variable must be immutable through the course of any single evaluation.
* |
*
functions | *
* If the expression contains a function reference, the function will be found through the {@link XPathFunctionResolver}
* set with {@link #setXPathFunctionResolver(XPathFunctionResolver resolver)}.
* An {@link XPathExpressionException} is raised if the function resolver is undefined or
* the function resolver returns null for the function.
* |
*
QNames | ** QNames in the expression are resolved against the XPath namespace context * set with {@link #setNamespaceContext(NamespaceContext nsContext)}. * | *
result | ** This result of evaluating an expression is converted to an instance of the desired return type. * Valid return types are defined in {@link XPathConstants}. * Conversion to the return type follows XPath conversion rules. * | *
Reset this XPath
to its original configuration.
XPath
is reset to the same state as when it was created with
* {@link XPathFactory#newXPath()}.
* reset()
is designed to allow the reuse of existing XPath
s
* thus saving resources associated with the creation of new XPath
s.
The reset XPath
is not guaranteed to have the same {@link XPathFunctionResolver}, {@link XPathVariableResolver}
* or {@link NamespaceContext} Object
s, e.g. {@link Object#equals(Object obj)}.
* It is guaranteed to have a functionally equal XPathFunctionResolver
, XPathVariableResolver
* and NamespaceContext
.
Establish a variable resolver.
* *A NullPointerException
is thrown if resolver
is null
.
resolver
is null
.
*/
public void setXPathVariableResolver(XPathVariableResolver resolver);
/**
* Return the current variable resolver.
* *null
is returned in no variable resolver is in effect.
Establish a function resolver.
* *A NullPointerException
is thrown if resolver
is null
.
resolver
is null
.
*/
public void setXPathFunctionResolver(XPathFunctionResolver resolver);
/**
* Return the current function resolver.
* *null
is returned in no function resolver is in effect.
Establish a namespace context.
* *A NullPointerException
is thrown if nsContext
is null
.
nsContext
is null
.
*/
public void setNamespaceContext(NamespaceContext nsContext);
/**
* Return the current namespace context.
* *null
is returned in no namespace context is in effect.
Compile an XPath expression for later evaluation.
* *If expression
contains any {@link XPathFunction}s,
* they must be available via the {@link XPathFunctionResolver}.
* An {@link XPathExpressionException} will be thrown if the XPathFunction
* cannot be resolved with the XPathFunctionResolver
.
If expression
is null
, a NullPointerException
is thrown.
expression
cannot be compiled.
* @throws NullPointerException If expression
is null
.
*/
public XPathExpression compile(String expression)
throws XPathExpressionException;
/**
* Evaluate an XPath
expression in the specified context and return the result as the specified type.
See Evaluation of XPath Expressions for context item evaluation,
* variable, function and QName
resolution and return type conversion.
If returnType
is not one of the types defined in {@link XPathConstants} (
* {@link XPathConstants#NUMBER NUMBER},
* {@link XPathConstants#STRING STRING},
* {@link XPathConstants#BOOLEAN BOOLEAN},
* {@link XPathConstants#NODE NODE} or
* {@link XPathConstants#NODESET NODESET})
* then an IllegalArgumentException
is thrown.
If a null
value is provided for
* item
, an empty document will be used for the
* context.
* If expression
or returnType
is null
, then a
* NullPointerException
is thrown.
Object
of returnType
.
*
* @throws XPathExpressionException If expression
cannot be evaluated.
* @throws IllegalArgumentException If returnType
is not one of the types defined in {@link XPathConstants}.
* @throws NullPointerException If expression
or returnType
is null
.
*/
public Object evaluate(String expression, Object item, QName returnType)
throws XPathExpressionException;
/**
* Evaluate an XPath expression in the specified context and return the result as a String
.
This method calls {@link #evaluate(String expression, Object item, QName returnType)} with a returnType
of
* {@link XPathConstants#STRING}.
See Evaluation of XPath Expressions for context item evaluation, * variable, function and QName resolution and return type conversion.
* *If a null
value is provided for
* item
, an empty document will be used for the
* context.
* If expression
is null
, then a NullPointerException
is thrown.
String
that is the result of evaluating the expression and
* converting the result to a String
.
*
* @throws XPathExpressionException If expression
cannot be evaluated.
* @throws NullPointerException If expression
is null
.
*/
public String evaluate(String expression, Object item)
throws XPathExpressionException;
/**
* Evaluate an XPath expression in the context of the specified InputSource
* and return the result as the specified type.
This method builds a data model for the {@link InputSource} and calls * {@link #evaluate(String expression, Object item, QName returnType)} on the resulting document object.
* *See Evaluation of XPath Expressions for context item evaluation, * variable, function and QName resolution and return type conversion.
* *If returnType
is not one of the types defined in {@link XPathConstants},
* then an IllegalArgumentException
is thrown.
If expression
, source
or returnType
is null
,
* then a NullPointerException
is thrown.
Object
that encapsulates the result of evaluating the expression.
*
* @throws XPathExpressionException If expression cannot be evaluated.
* @throws IllegalArgumentException If returnType
is not one of the types defined in {@link XPathConstants}.
* @throws NullPointerException If expression
, source
or returnType
* is null
.
*/
public Object evaluate(
String expression,
InputSource source,
QName returnType)
throws XPathExpressionException;
/**
* Evaluate an XPath expression in the context of the specified InputSource
* and return the result as a String
.
This method calls {@link #evaluate(String expression, InputSource source, QName returnType)} with a
* returnType
of {@link XPathConstants#STRING}.
See Evaluation of XPath Expressions for context item evaluation, * variable, function and QName resolution and return type conversion.
* *If expression
or source
is null
,
* then a NullPointerException
is thrown.
InputSource
of the document to evaluate over.
*
* @return The String
that is the result of evaluating the expression and
* converting the result to a String
.
*
* @throws XPathExpressionException If expression cannot be evaluated.
* @throws NullPointerException If expression
or source
is null
.
*/
public String evaluate(String expression, InputSource source)
throws XPathExpressionException;
}
javax/xml/xpath/XPathConstants.java 100644 0 0 5360 11146172412 15031 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathConstants.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.xpath;
import javax.xml.namespace.QName;
/**
* XPath constants.
* * @author Norman Walsh * @author Jeff Suttor * @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $ * @see XML Path Language (XPath) Version 1.0 * @since 1.5 */ public class XPathConstants { /** *Private constructor to prevent instantiation.
*/ private XPathConstants() { } /** *The XPath 1.0 number data type.
* *Maps to Java {@link Double}.
*/ public static final QName NUMBER = new QName("http://www.w3.org/1999/XSL/Transform", "NUMBER"); /** *The XPath 1.0 string data type.
* *Maps to Java {@link String}.
*/ public static final QName STRING = new QName("http://www.w3.org/1999/XSL/Transform", "STRING"); /** *The XPath 1.0 boolean data type.
* *Maps to Java {@link Boolean}.
*/ public static final QName BOOLEAN = new QName("http://www.w3.org/1999/XSL/Transform", "BOOLEAN"); /** *The XPath 1.0 NodeSet data type.
* *Maps to Java {@link org.w3c.dom.NodeList}.
*/ public static final QName NODESET = new QName("http://www.w3.org/1999/XSL/Transform", "NODESET"); /** *The XPath 1.0 NodeSet data type. * *
Maps to Java {@link org.w3c.dom.Node}.
*/ public static final QName NODE = new QName("http://www.w3.org/1999/XSL/Transform", "NODE"); /** *The URI for the DOM object model, "http://java.sun.com/jaxp/xpath/dom".
*/ public static final String DOM_OBJECT_MODEL = "http://java.sun.com/jaxp/xpath/dom"; } javax/xml/xpath/XPathException.java 100644 0 0 6463 11146172412 15020 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XPathException.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.xpath; import java.io.PrintWriter; /** *XPathException
represents a generic XPath exception.
*
* @author Norman Walsh
* @author Jeff Suttor
* @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $
* @since 1.5
*/
public class XPathException extends Exception {
private final Throwable cause;
/**
* Stream Unique Identifier.
*/ private static final long serialVersionUID = -1837080260374986980L; /** *Constructs a new XPathException
with the specified detail message
.
The cause
is not initialized.
If message
is null
, then a NullPointerException
is thrown.
Constructs a new XPathException
with the specified cause
.
If cause
is null
, then a NullPointerException
is thrown.
cause
is null
.
*/
public XPathException(Throwable cause) {
super(cause == null ? null : cause.toString());
this.cause = cause;
if ( cause == null ) {
throw new NullPointerException ( "cause can't be null");
}
}
public Throwable getCause() {
return cause;
}
public void printStackTrace( java.io.PrintStream s ) {
if( getCause() != null ) {
getCause().printStackTrace(s);
s.println("--------------- linked to ------------------");
}
super.printStackTrace(s);
}
public void printStackTrace() {
printStackTrace(System.err);
}
public void printStackTrace(PrintWriter s) {
if( getCause() != null ) {
getCause().printStackTrace(s);
s.println("--------------- linked to ------------------");
}
super.printStackTrace(s);
}
}
javax/xml/xpath/XPathExpression.java 100644 0 0 21212 11146172412 15226 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathExpression.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.xpath;
import org.xml.sax.InputSource;
import javax.xml.namespace.QName;
/**
* XPathExpression
provides access to compiled XPath expressions.
Evaluation of XPath Expressions. | *|
---|---|
context | ** If a request is made to evaluate the expression in the absence * of a context item, an empty document node will be used for the context. * For the purposes of evaluating XPath expressions, a DocumentFragment * is treated like a Document node. * | *
variables | *
* If the expression contains a variable reference, its value will be found through the {@link XPathVariableResolver}.
* An {@link XPathExpressionException} is raised if the variable resolver is undefined or
* the resolver returns null for the variable.
* The value of a variable must be immutable through the course of any single evaluation.
* |
*
functions | *
* If the expression contains a function reference, the function will be found through the {@link XPathFunctionResolver}.
* An {@link XPathExpressionException} is raised if the function resolver is undefined or
* the function resolver returns null for the function.
* |
*
QNames | ** QNames in the expression are resolved against the XPath namespace context. * | *
result | ** This result of evaluating an expression is converted to an instance of the desired return type. * Valid return types are defined in {@link XPathConstants}. * Conversion to the return type follows XPath conversion rules. * | *
Evaluate the compiled XPath expression in the specified context and return the result as the specified type.
* *See Evaluation of XPath Expressions for context item evaluation, * variable, function and QName resolution and return type conversion.
* *If returnType
is not one of the types defined in {@link XPathConstants},
* then an IllegalArgumentException
is thrown.
If a null
value is provided for
* item
, an empty document will be used for the
* context.
* If returnType
is null
, then a NullPointerException
is thrown.
Object
that is the result of evaluating the expression and converting the result to
* returnType
.
*
* @throws XPathExpressionException If the expression cannot be evaluated.
* @throws IllegalArgumentException If returnType
is not one of the types defined in {@link XPathConstants}.
* @throws NullPointerException If returnType
is null
.
*/
public Object evaluate(Object item, QName returnType)
throws XPathExpressionException;
/**
* Evaluate the compiled XPath expression in the specified context and return the result as a String
.
This method calls {@link #evaluate(Object item, QName returnType)} with a returnType
of
* {@link XPathConstants#STRING}.
See Evaluation of XPath Expressions for context item evaluation, * variable, function and QName resolution and return type conversion.
* *If a null
value is provided for
* item
, an empty document will be used for the
* context.
*
* @param item The starting context (node or node list, for example).
*
* @return The String
that is the result of evaluating the expression and converting the result to a
* String
.
*
* @throws XPathExpressionException If the expression cannot be evaluated.
*/
public String evaluate(Object item)
throws XPathExpressionException;
/**
*
Evaluate the compiled XPath expression in the context of the specified InputSource
and return the result as the
* specified type.
This method builds a data model for the {@link InputSource} and calls * {@link #evaluate(Object item, QName returnType)} on the resulting document object.
* *See Evaluation of XPath Expressions for context item evaluation, * variable, function and QName resolution and return type conversion.
* *If returnType
is not one of the types defined in {@link XPathConstants},
* then an IllegalArgumentException
is thrown.
If source
or returnType
is null
,
* then a NullPointerException
is thrown.
InputSource
of the document to evaluate over.
* @param returnType The desired return type.
*
* @return The Object
that is the result of evaluating the expression and converting the result to
* returnType
.
*
* @throws XPathExpressionException If the expression cannot be evaluated.
* @throws IllegalArgumentException If returnType
is not one of the types defined in {@link XPathConstants}.
* @throws NullPointerException If source
or returnType
is null
.
*/
public Object evaluate(InputSource source, QName returnType)
throws XPathExpressionException;
/**
* Evaluate the compiled XPath expression in the context of the specified InputSource
and return the result as a
* String
.
This method calls {@link #evaluate(InputSource source, QName returnType)} with a returnType
of
* {@link XPathConstants#STRING}.
See Evaluation of XPath Expressions for context item evaluation, * variable, function and QName resolution and return type conversion.
* *If source
is null
, then a NullPointerException
is thrown.
InputSource
of the document to evaluate over.
*
* @return The String
that is the result of evaluating the expression and converting the result to a
* String
.
*
* @throws XPathExpressionException If the expression cannot be evaluated.
* @throws NullPointerException If source
is null
.
*/
public String evaluate(InputSource source)
throws XPathExpressionException;
}
javax/xml/xpath/XPathExpressionException.java 100644 0 0 4532 11146172412 17073 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathExpressionException.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.xpath;
/**
* XPathExpressionException
represents an error in an XPath expression.
*
* @author Norman Walsh
* @author Jeff Suttor
* @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $
* @since 1.5
*/
public class XPathExpressionException extends XPathException {
/**
* Stream Unique Identifier.
*/ private static final long serialVersionUID = -1837080260374986980L; /** *Constructs a new XPathExpressionException
with the specified detail message
.
The cause
is not initialized.
If message
is null
, then a NullPointerException
is thrown.
Constructs a new XPathExpressionException
with the specified cause
.
If cause
is null
, then a NullPointerException
is thrown.
cause
is null
.
*/
public XPathExpressionException(Throwable cause) {
super(cause);
}
}
javax/xml/xpath/XPathFactory.java 100644 0 0 31457 11307760705 14521 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathFactory.java 888889 2009-12-09 17:43:18Z mrglavas $
package javax.xml.xpath;
/**
* An XPathFactory
instance can be used to create
* {@link javax.xml.xpath.XPath} objects.
See {@link #newInstance(String uri)} for lookup mechanism.
* * @author Norman Walsh * @author Jeff Suttor * @version $Revision: 888889 $, $Date: 2009-12-09 12:43:18 -0500 (Wed, 09 Dec 2009) $ * @since 1.5 */ public abstract class XPathFactory { /** *The default property name according to the JAXP spec.
*/ public static final String DEFAULT_PROPERTY_NAME = "javax.xml.xpath.XPathFactory"; /** *Default Object Model URI.
*/ public static final String DEFAULT_OBJECT_MODEL_URI = "http://java.sun.com/jaxp/xpath/dom"; /** *Protected constructor as {@link #newInstance()}, {@link #newInstance(String uri)}
* or {@link #newInstance(String uri, String factoryClassName, ClassLoader classLoader)}
* should be used to create a new instance of an XPathFactory
.
Get a new XPathFactory
instance using the default object model,
* {@link #DEFAULT_OBJECT_MODEL_URI},
* the W3C DOM.
This method is functionally equivalent to:
** newInstance(DEFAULT_OBJECT_MODEL_URI) ** *
Since the implementation for the W3C DOM is always available, this method will never fail.
* * @return Instance of anXPathFactory
.
*/
public static final XPathFactory newInstance() {
try {
return newInstance(DEFAULT_OBJECT_MODEL_URI);
}
catch (XPathFactoryConfigurationException xpathFactoryConfigurationException) {
throw new RuntimeException(
"XPathFactory#newInstance() failed to create an XPathFactory for the default object model: "
+ DEFAULT_OBJECT_MODEL_URI
+ " with the XPathFactoryConfigurationException: "
+ xpathFactoryConfigurationException.toString()
);
}
}
/**
* Get a new XPathFactory
instance using the specified object model.
To find a XPathFactory
object,
* this method looks the following places in the following order where "the class loader" refers to the context class loader:
javax.xml.xpath.XPathFactory
* in the resource directory META-INF/services.
* See the JAR File Specification for file format and parsing rules.
* Each potential service provider is required to implement the method:
* * {@link #isObjectModelSupported(String objectModel)} ** The first service provider found in class loader order that supports the specified object model is returned. *
XPathFactory
is located in a platform specific way.
* There must be a platform default XPathFactory for the W3C DOM, i.e. {@link #DEFAULT_OBJECT_MODEL_URI}.
* If everything fails, an XPathFactoryConfigurationException
will be thrown.
Tip for Trouble-shooting:
*See {@link java.util.Properties#load(java.io.InputStream)} for exactly how a property file is parsed. * In particular, colons ':' need to be escaped in a property file, so make sure the URIs are properly escaped in it. * For example:
** http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory ** * @param uri Identifies the underlying object model. * The specification only defines the URI {@link #DEFAULT_OBJECT_MODEL_URI}, *
http://java.sun.com/jaxp/xpath/dom
for the W3C DOM,
* the org.w3c.dom package, and implementations are free to introduce other URIs for other object models.
*
* @return Instance of an XPathFactory
.
*
* @throws XPathFactoryConfigurationException If the specified object model is unavailable.
* @throws NullPointerException If uri
is null
.
* @throws IllegalArgumentException If uri.length() == 0
.
*/
public static final XPathFactory newInstance(final String uri)
throws XPathFactoryConfigurationException {
if (uri == null) {
throw new NullPointerException(
"XPathFactory#newInstance(String uri) cannot be called with uri == null"
);
}
if (uri.length() == 0) {
throw new IllegalArgumentException(
"XPathFactory#newInstance(String uri) cannot be called with uri == \"\""
);
}
ClassLoader classLoader = SecuritySupport.getContextClassLoader();
if (classLoader == null) {
//use the current class loader
classLoader = XPathFactory.class.getClassLoader();
}
XPathFactory xpathFactory = new XPathFactoryFinder(classLoader).newFactory(uri);
if (xpathFactory == null) {
throw new XPathFactoryConfigurationException(
"No XPathFctory implementation found for the object model: "
+ uri
);
}
return xpathFactory;
}
/**
* @return Instance of an XPathFactory
.
*
* @throws XPathFactoryConfigurationException If the specified object model is unavailable.
* @throws NullPointerException If uri
is null
.
* @throws IllegalArgumentException If uri.length() == 0
.
*/
public static XPathFactory newInstance(String uri, String factoryClassName,
ClassLoader classLoader) throws XPathFactoryConfigurationException {
if (uri == null) {
throw new NullPointerException(
"XPathFactory#newInstance(String uri) cannot be called with uri == null"
);
}
if (uri.length() == 0) {
throw new IllegalArgumentException(
"XPathFactory#newInstance(String uri) cannot be called with uri == \"\""
);
}
if (factoryClassName == null) {
throw new XPathFactoryConfigurationException("factoryClassName cannot be null.");
}
if (classLoader == null) {
classLoader = SecuritySupport.getContextClassLoader();
}
XPathFactory xpathFactory = new XPathFactoryFinder(classLoader).createInstance(factoryClassName);
if (xpathFactory == null || !xpathFactory.isObjectModelSupported(uri)) {
throw new XPathFactoryConfigurationException(
"No XPathFctory implementation found for the object model: "
+ uri
);
}
return xpathFactory;
}
/**
* Is specified object model supported by this XPathFactory
?
XPathFactory
will understand.
*
* @return true
if XPathFactory
supports objectModel
, else false
.
*
* @throws NullPointerException If objectModel
is null
.
* @throws IllegalArgumentException If objectModel.length() == 0
.
*/
public abstract boolean isObjectModelSupported(String objectModel);
/**
* Set a feature for this XPathFactory
and XPath
s created by this factory.
* Feature names are fully qualified {@link java.net.URI}s.
* Implementations may define their own features.
* An {@link XPathFactoryConfigurationException} is thrown if this XPathFactory
or the XPath
s
* it creates cannot support the feature.
* It is possible for an XPathFactory
to expose a feature value but be unable to change its state.
*
* All implementations are required to support the {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING} feature.
* When the feature is true
, any reference to an external function is an error.
* Under these conditions, the implementation must not call the {@link XPathFunctionResolver}
* and must throw an {@link XPathFunctionException}.
*
true
or false
.
*
* @throws XPathFactoryConfigurationException if this XPathFactory
or the XPath
s
* it creates cannot support this feature.
* @throws NullPointerException if name
is null
.
*/
public abstract void setFeature(String name, boolean value)
throws XPathFactoryConfigurationException;
/**
* Get the state of the named feature.
* *
* Feature names are fully qualified {@link java.net.URI}s.
* Implementations may define their own features.
* An {@link XPathFactoryConfigurationException} is thrown if this XPathFactory
or the XPath
s
* it creates cannot support the feature.
* It is possible for an XPathFactory
to expose a feature value but be unable to change its state.
*
XPathFactory
or the XPath
s
* it creates cannot support this feature.
* @throws NullPointerException if name
is null
.
*/
public abstract boolean getFeature(String name)
throws XPathFactoryConfigurationException;
/**
* Establish a default variable resolver.
* *Any XPath
objects constructed from this factory will use
* the specified resolver by default.
A NullPointerException
is thrown if resolver
is null
.
resolver
is null
.
*/
public abstract void setXPathVariableResolver(XPathVariableResolver resolver);
/**
* Establish a default function resolver.
* *Any XPath
objects constructed from this factory will use
* the specified resolver by default.
A NullPointerException
is thrown if resolver
is null
.
resolver
is null
.
*/
public abstract void setXPathFunctionResolver(XPathFunctionResolver resolver);
/**
* Return a new XPath
using the underlying object
* model determined when the XPathFactory
was instantiated.
XPath
.
*/
public abstract XPath newXPath();
}
javax/xml/xpath/XPathFactoryConfigurationException.java 100644 0 0 4723 11146172412 21075 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathFactoryConfigurationException.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.xpath;
/**
* XPathFactoryConfigurationException
represents a configuration error in a XPathFactory
environment.
*
* @author Norman Walsh
* @author Jeff Suttor
* @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $
* @since 1.5
*/
public class XPathFactoryConfigurationException extends XPathException {
/**
* Stream Unique Identifier.
*/ private static final long serialVersionUID = -1837080260374986980L; /** *Constructs a new XPathFactoryConfigurationException
with the specified detail message
.
The cause
is not initialized.
If message
is null
, then a NullPointerException
is thrown.
Constructs a new XPathFactoryConfigurationException
with the specified cause
.
If cause
is null
, then a NullPointerException
is thrown.
cause
is null
.
*/
public XPathFactoryConfigurationException(Throwable cause) {
super(cause);
}
}
javax/xml/xpath/XPathFactoryFinder.java 100644 0 0 40162 11146172412 15633 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathFactoryFinder.java 670432 2008-06-23 02:02:08Z mrglavas $
package javax.xml.xpath;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Properties;
import javax.xml.validation.SchemaFactory;
/**
* Implementation of {@link XPathFactory#newInstance(String)}.
*
* @author Kohsuke Kawaguchi
* @version $Revision: 670432 $, $Date: 2008-06-22 22:02:08 -0400 (Sun, 22 Jun 2008) $
* @since 1.5
*/
final class XPathFactoryFinder {
/** debug support code. */
private static boolean debug = false;
/**
* Default columns per line.
*/
private static final int DEFAULT_LINE_LENGTH = 80;
static {
// Use try/catch block to support applets
try {
String val = SecuritySupport.getSystemProperty("jaxp.debug");
// Allow simply setting the prop to turn on debug
debug = val != null && (! "false".equals(val));
} catch (Exception _) {
debug = false;
}
}
/**
* Cache properties for performance.
*/ private static Properties cacheProps = new Properties(); /** *First time requires initialization overhead.
*/ private static boolean firstTime = true; /** *Conditional debug printing.
* * @param msg to print */ private static void debugPrintln(String msg) { if (debug) { System.err.println("JAXP: " + msg); } } /** *ClassLoader
to use to find SchemaFactory
.
Constructor that specifies ClassLoader
to use
* to find SchemaFactory
.
Creates a new {@link XPathFactory} object for the specified * schema language.
* * @param uri * Identifies the underlying object model. * * @returnnull
if the callee fails to create one.
*
* @throws NullPointerException
* If the parameter is null.
*/
public XPathFactory newFactory(String uri) {
if(uri==null) throw new NullPointerException();
XPathFactory f = _newFactory(uri);
if (debug) {
if (f != null) {
debugPrintln("factory '" + f.getClass().getName() + "' was found for " + uri);
} else {
debugPrintln("unable to find a factory for " + uri);
}
}
return f;
}
/**
* Lookup a {@link XPathFactory} for the given object model.
* * @param uri identifies the object model. * * @return {@link XPathFactory} for the given object model. */ private XPathFactory _newFactory(String uri) { XPathFactory xpf; String propertyName = SERVICE_CLASS.getName() + ":" + uri; // system property look up try { if (debug) debugPrintln("Looking up system property '"+propertyName+"'" ); String r = SecuritySupport.getSystemProperty(propertyName); if (r != null && r.length() > 0) { if (debug) debugPrintln("The value is '"+r+"'"); xpf = createInstance(r); if(xpf!=null) return xpf; } else if (debug) { debugPrintln("The property is undefined."); } } // The VM ran out of memory or there was some other serious problem. Re-throw. catch (VirtualMachineError vme) { throw vme; } // ThreadDeath should always be re-thrown catch (ThreadDeath td) { throw td; } catch (Throwable t) { if( debug ) { debugPrintln("failed to look up system property '"+propertyName+"'" ); t.printStackTrace(); } } String javah = SecuritySupport.getSystemProperty( "java.home" ); String configFile = javah + File.separator + "lib" + File.separator + "jaxp.properties"; String factoryClassName = null ; // try to read from $java.home/lib/jaxp.properties try { if(firstTime){ synchronized(cacheProps){ if(firstTime){ File f=new File( configFile ); firstTime = false; if(SecuritySupport.doesFileExist(f)){ if (debug) debugPrintln("Read properties file " + f); cacheProps.load(SecuritySupport.getFileInputStream(f)); } } } } factoryClassName = cacheProps.getProperty(propertyName); if (debug) debugPrintln("found " + factoryClassName + " in $java.home/jaxp.properties"); if (factoryClassName != null) { xpf = createInstance(factoryClassName); if(xpf != null){ return xpf; } } } catch (Exception ex) { if (debug) { ex.printStackTrace(); } } // try META-INF/services files Iterator sitr = createServiceFileIterator(); while(sitr.hasNext()) { URL resource = (URL)sitr.next(); if (debug) debugPrintln("looking into " + resource); try { xpf = loadFromServicesFile(uri, resource.toExternalForm(), SecuritySupport.getURLInputStream(resource)); if(xpf!=null) return xpf; } catch(IOException e) { if( debug ) { debugPrintln("failed to read "+resource); e.printStackTrace(); } } } // platform default if(uri.equals(XPathFactory.DEFAULT_OBJECT_MODEL_URI)) { if (debug) debugPrintln("attempting to use the platform default W3C DOM XPath lib"); return createInstance("org.apache.xpath.jaxp.XPathFactoryImpl"); } if (debug) debugPrintln("all things were tried, but none was found. bailing out."); return null; } /** *Creates an instance of the specified and returns it.
* * @param className * fully qualified class name to be instanciated. * * @return null * if it fails. Error messages will be printed by this method. */ XPathFactory createInstance( String className ) { try { if (debug) debugPrintln("instanciating "+className); Class clazz; if( classLoader!=null ) clazz = classLoader.loadClass(className); else clazz = Class.forName(className); if(debug) debugPrintln("loaded it from "+which(clazz)); Object o = clazz.newInstance(); if( o instanceof XPathFactory ) return (XPathFactory)o; if (debug) debugPrintln(className+" is not assignable to "+SERVICE_CLASS.getName()); } // The VM ran out of memory or there was some other serious problem. Re-throw. catch (VirtualMachineError vme) { throw vme; } // ThreadDeath should always be re-thrown catch (ThreadDeath td) { throw td; } catch (Throwable t) { if (debug) { debugPrintln("failed to instanciate "+className); t.printStackTrace(); } } return null; } /** Iterator that lazily computes one value and returns it. */ private static abstract class SingleIterator implements Iterator { private boolean seen = false; public final void remove() { throw new UnsupportedOperationException(); } public final boolean hasNext() { return !seen; } public final Object next() { if(seen) throw new NoSuchElementException(); seen = true; return value(); } protected abstract Object value(); } /** Searches for a XPathFactory for a given uri in a META-INF/services file. */ private XPathFactory loadFromServicesFile(String uri, String resourceName, InputStream in) { if (debug) debugPrintln("Reading " + resourceName ); BufferedReader rd; try { rd = new BufferedReader(new InputStreamReader(in, "UTF-8"), DEFAULT_LINE_LENGTH); } catch (java.io.UnsupportedEncodingException e) { rd = new BufferedReader(new InputStreamReader(in), DEFAULT_LINE_LENGTH); } String factoryClassName = null; XPathFactory resultFactory = null; // See spec for provider-configuration files: http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Provider%20Configuration%20File while (true) { try { factoryClassName = rd.readLine(); } catch (IOException x) { // No provider found break; } if (factoryClassName != null) { // Ignore comments in the provider-configuration file int hashIndex = factoryClassName.indexOf('#'); if (hashIndex != -1) { factoryClassName = factoryClassName.substring(0, hashIndex); } // Ignore leading and trailing whitespace factoryClassName = factoryClassName.trim(); // If there's no text left or if this was a blank line, go to the next one. if (factoryClassName.length() == 0) { continue; } try { // Found the right XPathFactory if its isObjectModelSupported(String uri) method returns true. XPathFactory foundFactory = (XPathFactory) createInstance(factoryClassName); if (foundFactory.isObjectModelSupported(uri)) { resultFactory = foundFactory; break; } } catch (Exception e) {} } else { break; } } try { // try to close the reader. rd.close(); } // Ignore the exception. catch (IOException exc) {} return resultFactory; } /** * Returns an {@link Iterator} that enumerates all * the META-INF/services files that we care. */ private Iterator createServiceFileIterator() { if (classLoader == null) { return new SingleIterator() { protected Object value() { ClassLoader classLoader = XPathFactoryFinder.class.getClassLoader(); return SecuritySupport.getResourceAsURL(classLoader, SERVICE_ID); //return (ClassLoader.getSystemResource( SERVICE_ID )); } }; } else { try { //final Enumeration e = classLoader.getResources(SERVICE_ID); final Enumeration e = SecuritySupport.getResources(classLoader, SERVICE_ID); if (debug && !e.hasMoreElements()) { debugPrintln("no "+SERVICE_ID+" file was found"); } // wrap it into an Iterator. return new Iterator() { public void remove() { throw new UnsupportedOperationException(); } public boolean hasNext() { return e.hasMoreElements(); } public Object next() { return e.nextElement(); } }; } catch (IOException e) { if (debug) { debugPrintln("failed to enumerate resources "+SERVICE_ID); e.printStackTrace(); } return new ArrayList().iterator(); // empty iterator } } } private static final Class SERVICE_CLASS = XPathFactory.class; private static final String SERVICE_ID = "META-INF/services/" + SERVICE_CLASS.getName(); private static String which( Class clazz ) { return which( clazz.getName(), clazz.getClassLoader() ); } /** *Search the specified classloader for the given classname.
* * @param classname the fully qualified name of the class to search for * @param loader the classloader to search * * @return the source location of the resource, or null if it wasn't found */ private static String which(String classname, ClassLoader loader) { String classnameAsResource = classname.replace('.', '/') + ".class"; if( loader==null ) loader = ClassLoader.getSystemClassLoader(); //URL it = loader.getResource(classnameAsResource); URL it = SecuritySupport.getResourceAsURL(loader, classnameAsResource); if (it != null) { return it.toString(); } else { return null; } } } javax/xml/xpath/XPathFunction.java 100644 0 0 4126 11146172412 14641 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $Id: XPathFunction.java 446598 2006-09-15 12:55:40Z jeremias $ package javax.xml.xpath; import java.util.List; /** *XPathFunction
provides access to XPath functions.
Functions are identified by QName and arity in XPath.
* * @author Norman Walsh * @author Jeff Suttor * @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $ * @since 1.5 */ public interface XPathFunction { /** *Evaluate the function with the specified arguments.
* *To the greatest extent possible, side-effects should be avoided in the * definition of extension functions. The implementation evaluating an * XPath expression is under no obligation to call extension functions in * any particular order or any particular number of times.
* * @param args The arguments,null
is a valid value.
*
* @return The result of evaluating the XPath
function as an Object
.
*
* @throws XPathFunctionException If args
cannot be evaluated with this XPath
function.
*/
public Object evaluate(List args)
throws XPathFunctionException;
}
javax/xml/xpath/XPathFunctionException.java 100644 0 0 4526 11146172412 16524 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathFunctionException.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.xpath;
/**
* XPathFunctionException
represents an error with an XPath function.
*
* @author Norman Walsh
* @author Jeff Suttor
* @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $
* @since 1.5
*/
public class XPathFunctionException extends XPathExpressionException {
/**
* Stream Unique Identifier.
*/ private static final long serialVersionUID = -1837080260374986980L; /** *Constructs a new XPathFunctionException
with the specified detail message
.
The cause
is not initialized.
If message
is null
, then a NullPointerException
is thrown.
Constructs a new XPathFunctionException
with the specified cause
.
If cause
is null
, then a NullPointerException
is thrown.
cause
is null
.
*/
public XPathFunctionException(Throwable cause) {
super(cause);
}
}
javax/xml/xpath/XPathFunctionResolver.java 100644 0 0 5667 11146172412 16376 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathFunctionResolver.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.xpath;
import javax.xml.namespace.QName;
/**
* XPathFunctionResolver
provides access to the set of user defined XPathFunction
s.
XPath functions are resolved by name and arity. * The resolver is not needed for XPath built-in functions and the resolver * cannot be used to override those functions.
* *In particular, the resolver is only called for functions in an another
* namespace (functions with an explicit prefix). This means that you cannot
* use the XPathFunctionResolver
to implement specifications
* like XML-Signature Syntax
* and Processing which extend the function library of XPath 1.0 in the
* same namespace. This is a consequence of the design of the resolver.
If you wish to implement additional built-in functions, you will have to * extend the underlying implementation directly.
* * @author Norman Walsh * @author Jeff Suttor * @version $Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $ * @see XML Path Language (XPath) Version 1.0, Core Function Library * @since 1.5 */ public interface XPathFunctionResolver { /** *Find a function in the set of available functions.
* *If functionName
or arity
is null
, then a NullPointerException
is thrown.
null
if no function named functionName
with arity
arguments exists.
*
* @throws NullPointerException If functionName
or arity
is null
.
*/
public XPathFunction resolveFunction(QName functionName, int arity);
}
javax/xml/xpath/XPathVariableResolver.java 100644 0 0 4606 11146172412 16326 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// $Id: XPathVariableResolver.java 446598 2006-09-15 12:55:40Z jeremias $
package javax.xml.xpath;
import javax.xml.namespace.QName;
/**
* XPathVariableResolver
provides access to the set of user defined XPath variables.
The XPathVariableResolver
and the XPath evaluator must adhere to a contract that
* cannot be directly enforced by the API. Although variables may be mutable,
* that is, an application may wish to evaluate the same XPath expression more
* than once with different variable values, in the course of evaluating any
* single XPath expression, a variable's value must be immutable.
Find a variable in the set of available variables.
* *If variableName
is null
, then a NullPointerException
is thrown.
QName
of the variable name.
*
* @return The variables value, or null
if no variable named variableName
* exists. The value returned must be of a type appropriate for the underlying object model.
*
* @throws NullPointerException If variableName
is null
.
*/
public Object resolveVariable(QName variableName);
}
javax/xml/xpath/package.html 100644 0 0 20215 11146172412 13542 0 ustar 0 0
This package provides an object-model neutral API for the evaluation of XPath expressions and access to the evaluation environment.
The following XML standards apply:
The XPath language provides a simple, concise syntax for selecting nodes from an XML document. XPath also provides rules for converting a node in an XML document object model (DOM) tree to a boolean, double, or string value. XPath is a W3C-defined language and an official W3C recommendation; the W3C hosts the XML Path Language (XPath) Version 1.0 specification.
XPath started in life in 1999 as a supplement to the XSLT and XPointer languages, but has more recently become popular as a stand-alone language, as a single XPath expression can be used to replace many lines of DOM API code.
An XPath expression is composed of a location path and one or more optional predicates. Expressions may also include XPath variables.
The following is an example of a simple XPath expression:
/foo/bar
This example would select the <bar>
element in
an XML document such as the following:
<foo> <bar/> </foo>
The expression /foo/bar
is an example of a location
path. While XPath location paths resemble Unix-style file system
paths, an important distinction is that XPath expressions return
all nodes that match the expression. Thus, all three
<bar>
elements in the following document would be
selected by the /foo/bar
expression:
<foo> <bar/> <bar/> <bar/> </foo>
A special location path operator, //
, selects nodes at
any depth in an XML document. The following example selects all
<bar>
elements regardless of their location in a
document:
//bar
A wildcard operator, *, causes all element nodes to be selected.
The following example selects all children elements of a
<foo>
element:
/foo/*
In addition to element nodes, XPath location paths may also address attribute nodes, text nodes, comment nodes, and processing instruction nodes. The following table gives examples of location paths for each of these node types:
Location Path | Description |
/foo/bar/@id
|
Selects the attribute id of the <bar> element
|
/foo/bar/text()
|
Selects the text nodes of the <bar> element. No
distinction is made between escaped and non-escaped character data.
|
/foo/bar/comment()
|
Selects all comment nodes contained in the <bar> element.
|
/foo/bar/processing-instruction()
|
Selects all processing-instruction nodes contained in the
<bar> element.
|
Predicates allow for refining the nodes selected by an XPath
location path. Predicates are of the form
[expression]
. The following example selects all
<foo>
elements that contain an include
attribute with the value of true
:
//foo[@include='true']
Predicates may be appended to each other to further refine an expression, such as:
//foo[@include='true'][@mode='bar']
The following example demonstrates using the XPath API to select one or more nodes from an XML document:
XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/widgets/widget"; InputSource inputSource = new InputSource("widgets.xml"); NodeSet nodes = (NodeSet) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);
While XPath expressions select nodes in the XML document, the XPath API allows the selected nodes to be coalesced into one of the following other data types:
Boolean
Number
String
The desired return type is specified by a {@link
javax.xml.namespace.QName} parameter in method call used to evaluate
the expression, which is either a call to
XPathExpression.evaluate(...)
or to one of the
XPath.evaluate(...)
convenience methods. The allowed
QName values are specified as constants in the {@link
javax.xml.xpath.XPathConstants} class; they are:
When a Boolean
return type is requested,
Boolean.TRUE
is returned if one or more nodes were
selected; otherwise, Boolean.FALSE
is returned.
The String
return type is a convenience for retrieving
the character data from a text node, attribute node, comment node, or
processing-instruction node. When used on an element node, the value
of the child text nodes is returned.
The Number
return type attempts to coalesce the text
of a node to a double
data type.
XPath location paths may be relative to a particular node in the
document, known as the context
. Consider the following
XML document:
<widgets> <widget> <manufacturer/> <dimensions/> </widget> </widgets>
The <widget>
element can be selected with the
following XPath API code:
// parse the XML as a W3C Document DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setNamespaceAware(true); DocumentBuilder builder = builderFactory.newDocumentBuilder(); Document document = builder.parse(new File("/widgets.xml")); XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/widgets/widget"; Node widgetNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);
With a reference to the <widget>
element, a
relative XPath expression can now written to select the
<manufacturer>
child element:
XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "manufacturer"; Node manufacturerNode = (Node) xpath.evaluate(expression, widgetNode, XPathConstants.NODE);
"XmlCommons v.r"
.
*
* Futurework: have this read version info from jar manifest.
*
* @return String denoting our current version
*/
public static String getVersion()
{
return getProduct()+" "+getVersionNum();
}
/**
* Get just the product name.
*
* @return String denoting our product name
*/
public static String getProduct()
{
return "XmlCommonsExternal";
}
/**
* Get just the version number v.r.
* @return String denoting our current version number
*/
public static String getVersionNum()
{
return "1.4.01";
}
/**
* Print the release version to the command line.
* @param argv command line arguments, unused.
*/
public static void main(String argv[])
{
System.out.println(getVersion());
}
}
org/apache/xmlcommons/Version.src 100644 0 0 4062 11146172375 14560 0 ustar 0 0 /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.xmlcommons;
/**
*
* Administrative class to keep track of the version number of
* xml-commons external sources releases.
* See xml-commons/java/external/build.xml for filtering on 1.0, etc.
*/
public class Version
{
/**
* Get the basic version string for the current
* xml-commons external sources release.
* Version String formatted like
* "XmlCommons v.r"
.
*
* Futurework: have this read version info from jar manifest.
*
* @return String denoting our current version
*/
public static String getVersion()
{
return getProduct()+" "+getVersionNum();
}
/**
* Get just the product name.
*
* @return String denoting our product name
*/
public static String getProduct()
{
return "@impl.name@";
}
/**
* Get just the version number v.r.
* @return String denoting our current version number
*/
public static String getVersionNum()
{
return "@impl.version@";
}
/**
* Print the release version to the command line.
* @param argv command line arguments, unused.
*/
public static void main(String argv[])
{
System.out.println(getVersion());
}
}
org/w3c/css/sac/AttributeCondition.java 100644 0 0 4643 11146172410 15507 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*
* $Id: AttributeCondition.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
* @see Condition#SAC_ATTRIBUTE_CONDITION
* @see Condition#SAC_ONE_OF_ATTRIBUTE_CONDITION
* @see Condition#SAC_BEGIN_HYPHEN_ATTRIBUTE_CONDITION
* @see Condition#SAC_ID_CONDITION
* @see Condition#SAC_CLASS_CONDITION
* @see Condition#SAC_PSEUDO_CLASS_CONDITION
*/
public interface AttributeCondition extends Condition {
/**
* Returns the
* namespace
* URI of this attribute condition.
* NULL
if :
*
NULL
if :
*
this attribute condition can match any attribute. *
this attribute is a class attribute. *
this attribute is an id attribute. *
this attribute is a pseudo-class attribute. *
true
if the attribute must have an explicit value
* in the original document, false
otherwise.
*/
public boolean getSpecified();
/**
* Returns the value of the attribute.
* If this attribute is a class or a pseudo class attribute, you'll get
* the class name (or psedo class name) without the '.' or ':'.
*/
public String getValue();
}
org/w3c/css/sac/CSSException.java 100644 0 0 6505 11146172410 14203 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* The original version of this interface comes from SAX :
* http://www.megginson.com/SAX/
*
* $Id: CSSException.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
*/
public class CSSException extends RuntimeException {
protected String s;
/**
* this error is unspecified.
*/
public static final short SAC_UNSPECIFIED_ERR = 0;
/**
* If the operation is not supported
*/
public static final short SAC_NOT_SUPPORTED_ERR = 1;
/**
* If an invalid or illegal string is specified
*/
public static final short SAC_SYNTAX_ERR = 2;
/*
* Default message for unspecified error.
*/
protected static final String S_SAC_UNSPECIFIED_ERR
= "unknown error";
/*
* Default message for not supported error.
*/
protected static final String S_SAC_NOT_SUPPORTED_ERR
= "not supported";
/*
* Default message for syntax error.
*/
protected static final String S_SAC_SYNTAX_ERR
= "syntax error";
/**
* The internal exception.
*/
protected Exception e;
protected short code;
/**
* Creates a new CSSException
*/
public CSSException() {
}
/**
* Creates a new CSSException
*/
public CSSException(String s) {
this.code = SAC_UNSPECIFIED_ERR;
this.s = s;
}
/**
* Creates a new CSSException with an embeded exception.
* @param a the embeded exception.
*/
public CSSException(Exception e) {
this.code = SAC_UNSPECIFIED_ERR;
this.e = e;
}
/**
* Creates a new CSSException with a specific code.
* @param a the embeded exception.
*/
public CSSException(short code) {
this.code = code;
}
/**
* Creates a new CSSException with an embeded exception and a specified
* message.
* @param code the specified code.
* @param e the embeded exception.
*/
public CSSException(short code, String s, Exception e) {
this.code = code;
this.s = s;
this.e = e;
}
/**
* Returns the detail message of this throwable object.
*
* @return the detail message of this Throwable, or null if this Throwable
* does not have a detail message.
*/
public String getMessage() {
if (s != null) {
return s;
} else if (e != null) {
return e.getMessage();
} else {
switch (code) {
case SAC_UNSPECIFIED_ERR:
return S_SAC_UNSPECIFIED_ERR;
case SAC_NOT_SUPPORTED_ERR:
return S_SAC_NOT_SUPPORTED_ERR;
case SAC_SYNTAX_ERR:
return S_SAC_SYNTAX_ERR;
default:
return null;
}
}
}
/**
* returns the error code for this exception.
*/
public short getCode() {
return code;
}
/**
* Returns the internal exception if any, null otherwise.
*/
public Exception getException() {
return e;
}
}
org/w3c/css/sac/CSSParseException.java 100644 0 0 13516 11146172410 15216 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* The original version of this interface comes from SAX :
* http://www.megginson.com/SAX/
*
* $Id: CSSParseException.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* Encapsulate a CSS parse error or warning.
*
* This exception will include information for locating the error * in the original CSS document. Note that although the application * will receive a CSSParseException as the argument to the handlers * in the ErrorHandler interface, the application is not actually * required to throw the exception; instead, it can simply read the * information in it and take a different action.
* *Since this exception is a subclass of CSSException, it * inherits the ability to wrap another exception.
* * @version $Revision: 477010 $ * @author Philippe Le Hegaret */ public class CSSParseException extends CSSException { private String uri; private int lineNumber; private int columnNumber; /** * Create a new CSSParseException from a message and a Locator. * *This constructor is especially useful when an application is * creating its own exception from within a DocumentHandler * callback.
* * @param message The error or warning message. * @param locator The locator object for the error or warning. * @see Locator * @see Parser#setLocale */ public CSSParseException(String message, Locator locator) { super(message); this.code = SAC_SYNTAX_ERR; this.uri = locator.getURI(); this.lineNumber = locator.getLineNumber(); this.columnNumber = locator.getColumnNumber(); } /** * Wrap an existing exception in a CSSParseException. * *This constructor is especially useful when an application is * creating its own exception from within a DocumentHandler * callback, and needs to wrap an existing exception that is not a * subclass of CSSException.
* * @param message The error or warning message, or null to * use the message from the embedded exception. * @param locator The locator object for the error or warning. * @param e Any exception * @see Locator * @see Parser#setLocale */ public CSSParseException(String message, Locator locator, Exception e) { super(SAC_SYNTAX_ERR, message, e); this.uri = locator.getURI(); this.lineNumber = locator.getLineNumber(); this.columnNumber = locator.getColumnNumber(); } /** * Create a new CSSParseException. * *This constructor is most useful for parser writers.
* *the parser must resolve the URI fully before creating the exception.
* * @param message The error or warning message. * @param uri The URI of the document that generated the error or warning. * @param lineNumber The line number of the end of the text that * caused the error or warning. * @param columnNumber The column number of the end of the text that * cause the error or warning. * @see Parser#setLocale */ public CSSParseException(String message, String uri, int lineNumber, int columnNumber) { super(message); this.code = SAC_SYNTAX_ERR; this.uri = uri; this.lineNumber = lineNumber; this.columnNumber = columnNumber; } /** * Create a new CSSParseException with an embedded exception. * *This constructor is most useful for parser writers who * need to wrap an exception that is not a subclass of * CSSException.
* *The parser must resolve the URI fully before creating the * exception.
* * @param message The error or warning message, or null to use * the message from the embedded exception. * @param uri The URI of the document that generated * the error or warning. * @param lineNumber The line number of the end of the text that * caused the error or warning. * @param columnNumber The column number of the end of the text that * cause the error or warning. * @param e Another exception to embed in this one. * @see Parser#setLocale */ public CSSParseException(String message, String uri, int lineNumber, int columnNumber, Exception e) { super(SAC_SYNTAX_ERR, message, e); this.uri = uri; this.lineNumber = lineNumber; this.columnNumber = columnNumber; } /** * Get the URI of the document where the exception occurred. * *The URI will be resolved fully.
* * @return A string containing the URI, or null * if none is available. * @see Locator#getURI */ public String getURI() { return this.uri; } /** * The line number of the end of the text where the exception occurred. * * @return An integer representing the line number, or -1 * if none is available. * @see Locator#getLineNumber */ public int getLineNumber() { return this.lineNumber; } /** * The column number of the end of the text where the exception occurred. * *The first column in a line is position 1.
* * @return An integer representing the column number, or -1 * if none is available. * @see Locator#getColumnNumber */ public int getColumnNumber() { return this.columnNumber; } } org/w3c/css/sac/CharacterDataSelector.java 100644 0 0 1330 11146172410 16052 0 ustar 0 0 /* * (c) COPYRIGHT 1999 World Wide Web Consortium * (Massachusetts Institute of Technology, Institut National de Recherche * en Informatique et en Automatique, Keio University). * All Rights Reserved. http://www.w3.org/Consortium/Legal/ * * $Id: CharacterDataSelector.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; /** * @version $Revision: 477010 $ * @author Philippe Le Hegaret * @see Selector#SAC_TEXT_NODE_SELECTOR * @see Selector#SAC_CDATA_SECTION_NODE_SELECTOR * @see Selector#SAC_COMMENT_NODE_SELECTOR */ public interface CharacterDataSelector extends SimpleSelector { /** * Returns the character data. */ public String getData(); } org/w3c/css/sac/CombinatorCondition.java 100644 0 0 1411 11146172410 15627 0 ustar 0 0 /* * (c) COPYRIGHT 1999 World Wide Web Consortium * (Massachusetts Institute of Technology, Institut National de Recherche * en Informatique et en Automatique, Keio University). * All Rights Reserved. http://www.w3.org/Consortium/Legal/ * * $Id: CombinatorCondition.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; /** * @version $Revision: 477010 $ * @author Philippe Le Hegaret * @see Condition#SAC_AND_CONDITION * @see Condition#SAC_OR_CONDITION */ public interface CombinatorCondition extends Condition { /** * Returns the first condition. */ public Condition getFirstCondition(); /** * Returns the second condition. */ public Condition getSecondCondition(); } org/w3c/css/sac/Condition.java 100644 0 0 10103 11146172410 13627 0 ustar 0 0 /* * Copyright (c) 1999 World Wide Web Consortium, * (Massachusetts Institute of Technology, Institut National de * Recherche en Informatique et en Automatique, Keio University). All * Rights Reserved. This program is distributed under the W3C's Software * Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details. * * $Id: Condition.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; /** * @version $Revision: 477010 $ * @author Philippe Le Hegaret */ public interface Condition { /** * This condition checks exactly two conditions. * example: ** .part1:lang(fr) ** @see CombinatorCondition */ public static final short SAC_AND_CONDITION = 0; /** * This condition checks one of two conditions. * @see CombinatorCondition */ public static final short SAC_OR_CONDITION = 1; /** * This condition checks that a condition can't be applied to a node. * @see NegativeCondition */ public static final short SAC_NEGATIVE_CONDITION = 2; /** * This condition checks a specified position. * example: *
* :first-child ** @see PositionalCondition */ public static final short SAC_POSITIONAL_CONDITION = 3; /** * This condition checks an attribute. * example: *
* [simple] * [restart="never"] ** @see AttributeCondition */ public static final short SAC_ATTRIBUTE_CONDITION = 4; /** * This condition checks an id attribute. * example: *
* #myId ** @see AttributeCondition */ public static final short SAC_ID_CONDITION = 5; /** * This condition checks the language of the node. * example: *
* :lang(fr) ** @see LangCondition */ public static final short SAC_LANG_CONDITION = 6; /** * This condition checks for a value in a space-separated values in a * specified attribute * example: *
* [values~="10"] ** @see AttributeCondition */ public static final short SAC_ONE_OF_ATTRIBUTE_CONDITION = 7; /** * This condition checks if the value is in a hypen-separated list of values * in a specified attribute. * example: *
* [languages|="fr"] ** @see AttributeCondition */ public static final short SAC_BEGIN_HYPHEN_ATTRIBUTE_CONDITION = 8; /** * This condition checks for a specified class. * example: *
* .example ** @see AttributeCondition */ public static final short SAC_CLASS_CONDITION = 9; /** * This condition checks for the link pseudo class. * example: *
* :link * :visited * :hover ** @see AttributeCondition */ public static final short SAC_PSEUDO_CLASS_CONDITION = 10; /** * This condition checks if a node is the only one in the node list. */ public static final short SAC_ONLY_CHILD_CONDITION = 11; /** * This condition checks if a node is the only one of his type. */ public static final short SAC_ONLY_TYPE_CONDITION = 12; /** * This condition checks the content of a node. * @see ContentCondition */ public static final short SAC_CONTENT_CONDITION = 13; /** * An integer indicating the type of
Condition
.
*/
public short getConditionType();
}
org/w3c/css/sac/ConditionFactory.java 100644 0 0 15331 11146172410 15167 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*
* $Id: ConditionFactory.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
*/
public interface ConditionFactory {
/**
* Creates an and condition
*
* @param first the first condition
* @param second the second condition
* @return A combinator condition
* @exception CSSException if this exception is not supported.
*/
CombinatorCondition createAndCondition(Condition first, Condition second)
throws CSSException;
/**
* Creates an or condition
*
* @param first the first condition
* @param second the second condition
* @return A combinator condition
* @exception CSSException if this exception is not supported.
*/
CombinatorCondition createOrCondition(Condition first, Condition second)
throws CSSException;
/**
* Creates a negative condition
*
* @param condition the condition
* @return A negative condition
* @exception CSSException if this exception is not supported.
*/
NegativeCondition createNegativeCondition(Condition condition)
throws CSSException;
/**
* Creates a positional condition
*
* @param position the position of the node in the list.
* @param typeNode true
if the list should contain
* only nodes of the same type (element, text node, ...).
* @param type true
true if the list should contain
* only nodes of the same node (for element, same localName
* and same namespaceURI).
* @return A positional condition
* @exception CSSException if this exception is not supported.
*/
PositionalCondition createPositionalCondition(int position,
boolean typeNode,
boolean type)
throws CSSException;
/**
* Creates an attribute condition
*
* @param localName the localName of the attribute
* @param namespaceURI the namespace URI of the attribute
* @param specified true
if the attribute must be specified
* in the document.
* @param value the value of this attribute.
* @return An attribute condition
* @exception CSSException if this exception is not supported.
*/
AttributeCondition createAttributeCondition(String localName,
String namespaceURI,
boolean specified,
String value)
throws CSSException;
/**
* Creates an id condition
*
* @param value the value of the id.
* @return An Id condition
* @exception CSSException if this exception is not supported.
*/
AttributeCondition createIdCondition(String value)
throws CSSException;
/**
* Creates a lang condition
*
* @param value the value of the language.
* @return A lang condition
* @exception CSSException if this exception is not supported.
*/
LangCondition createLangCondition(String lang)
throws CSSException;
/**
* Creates a "one of" attribute condition
*
* @param localName the localName of the attribute
* @param namespaceURI the namespace URI of the attribute
* @param specified true
if the attribute must be specified
* in the document.
* @param value the value of this attribute.
* @return A "one of" attribute condition
* @exception CSSException if this exception is not supported.
*/
AttributeCondition createOneOfAttributeCondition(String localName,
String namespaceURI,
boolean specified,
String value)
throws CSSException;
/**
* Creates a "begin hyphen" attribute condition
*
* @param localName the localName of the attribute
* @param namespaceURI the namespace URI of the attribute
* @param specified true
if the attribute must be specified
* in the document.
* @param value the value of this attribute.
* @return A "begin hyphen" attribute condition
* @exception CSSException if this exception is not supported.
*/
AttributeCondition createBeginHyphenAttributeCondition(String localName,
String namespaceURI,
boolean specified,
String value)
throws CSSException;
/**
* Creates a class condition
*
* @param localName the localName of the attribute
* @param namespaceURI the namespace URI of the attribute
* @param specified true
if the attribute must be specified
* in the document.
* @param value the name of the class.
* @return A class condition
* @exception CSSException if this exception is not supported.
*/
AttributeCondition createClassCondition(String namespaceURI,
String value)
throws CSSException;
/**
* Creates a pseudo class condition
*
* @param namespaceURI the namespace URI of the attribute
* @param value the name of the pseudo class
* @return A pseudo class condition
* @exception CSSException if this exception is not supported.
*/
AttributeCondition createPseudoClassCondition(String namespaceURI,
String value)
throws CSSException;
/**
* Creates a "only one" child condition
*
* @return A "only one" child condition
* @exception CSSException if this exception is not supported.
*/
Condition createOnlyChildCondition() throws CSSException;
/**
* Creates a "only one" type condition
*
* @return A "only one" type condition
* @exception CSSException if this exception is not supported.
*/
Condition createOnlyTypeCondition() throws CSSException;
/**
* Creates a content condition
*
* @param data the data in the content
* @return A content condition
* @exception CSSException if this exception is not supported.
*/
ContentCondition createContentCondition(String data)
throws CSSException;
}
org/w3c/css/sac/ConditionalSelector.java 100644 0 0 1535 11146172410 15636 0 ustar 0 0 /*
* (c) COPYRIGHT 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: ConditionalSelector.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
* @see Selector#SAC_CONDITIONAL_SELECTOR
*/
public interface ConditionalSelector extends SimpleSelector {
/**
* Returns the simple selector.
* The simple selector can't be a ConditionalSelector
.
null
if this is the default namespace
* @param uri The URI for this namespace.
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void namespaceDeclaration(String prefix, String uri)
throws CSSException;
/**
* Receive notification of a import statement in the style sheet.
*
* @param uri The URI of the imported style sheet.
* @param media The intended destination media for style information.
* @param defaultNamepaceURI The default namespace URI for the imported
* style sheet.
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void importStyle(String uri, SACMediaList media,
String defaultNamespaceURI)
throws CSSException;
/**
* Receive notification of the beginning of a media statement.
*
* The Parser will invoke this method at the beginning of every media
* statement in the style sheet. there will be a corresponding endMedia()
* event for every startElement() event.
*
* @param media The intended destination media for style information.
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void startMedia(SACMediaList media) throws CSSException;
/**
* Receive notification of the end of a media statement.
*
* @param media The intended destination media for style information.
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void endMedia(SACMediaList media) throws CSSException;
/**
* Receive notification of the beginning of a page statement.
*
* The Parser will invoke this method at the beginning of every page
* statement in the style sheet. there will be a corresponding endPage()
* event for every startPage() event.
*
* @param name the name of the page (if any, null otherwise)
* @param pseudo_page the pseudo page (if any, null otherwise)
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void startPage(String name, String pseudo_page) throws CSSException;
/**
* Receive notification of the end of a media statement.
*
* @param media The intended destination medium for style information.
* @param pseudo_page the pseudo page (if any, null otherwise)
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void endPage(String name, String pseudo_page) throws CSSException;
/**
* Receive notification of the beginning of a font face statement.
*
* The Parser will invoke this method at the beginning of every font face
* statement in the style sheet. there will be a corresponding endFontFace()
* event for every startFontFace() event.
*
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void startFontFace() throws CSSException;
/**
* Receive notification of the end of a font face statement.
*
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void endFontFace() throws CSSException;
/**
* Receive notification of the beginning of a rule statement.
*
* @param selectors All intended selectors for all declarations.
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void startSelector(SelectorList selectors) throws CSSException;
/**
* Receive notification of the end of a rule statement.
*
* @param selectors All intended selectors for all declarations.
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void endSelector(SelectorList selectors) throws CSSException;
/**
* Receive notification of a declaration.
*
* @param name the name of the property.
* @param value the value of the property. All whitespace are stripped.
* @param important is this property important ?
* @exception CSSException Any CSS exception, possibly wrapping another
* exception.
*/
public void property(String name, LexicalUnit value, boolean important)
throws CSSException;
}
org/w3c/css/sac/ElementSelector.java 100644 0 0 2744 11146172410 14767 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*
* $Id: ElementSelector.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
* @see Selector#SAC_ELEMENT_NODE_SELECTOR
*/
public interface ElementSelector extends SimpleSelector {
/**
* Returns the
* namespace
* URI of this element selector.
* NULL
if this element selector can match any namespace.
NULL
if this element selector can match any element.
If a CSS application needs to implement customized error * handling, it must implement this interface and then register an * instance with the CSS parser using the parser's setErrorHandler * method. The parser will then report all errors and warnings * through this interface.
* *The parser shall use this interface instead of throwing an * exception: it is up to the application whether to throw an * exception for different types of errors and warnings. Note, * however, that there is no requirement that the parser continue to * provide useful information after a call to fatalError (in other * words, a CSS driver class could catch an exception and report a * fatalError).
* *The HandlerBase class provides a default implementation of this * interface, ignoring warnings and recoverable errors and throwing a * SAXParseException for fatal errors. An application may extend * that class rather than implementing the complete interface * itself.
* * @version $Revision: 477010 $ * @author Philippe Le Hegaret */ public interface ErrorHandler { /** * Receive notification of a warning. * *CSS parsers will use this method to report conditions that * are not errors or fatal errors as defined by the XML 1.0 * recommendation. The default behaviour is to take no action.
* *The CSS parser must continue to provide normal parsing events * after invoking this method: it should still be possible for the * application to process the document through to the end.
* * @param exception The warning information encapsulated in a * CSS parse exception. * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @see CSSParseException */ public void warning(CSSParseException exception) throws CSSException; /** * Receive notification of a recoverable error. * *This corresponds to the definition of "error" in section 1.2 * of the W3C XML 1.0 Recommendation. For example, a validating * parser would use this callback to report the violation of a * validity constraint. The default behaviour is to take no * action.
* *The CSS parser must continue to provide normal parsing events * after invoking this method: it should still be possible for the * application to process the document through to the end. If the * application cannot do so, then the parser should report a fatal * error even if the XML 1.0 recommendation does not require it to * do so.
* * @param exception The error information encapsulated in a * CSS parse exception. * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @see CSSParseException */ public void error(CSSParseException exception) throws CSSException; /** * Receive notification of a non-recoverable error. * *This corresponds to the definition of "fatal error" in * section 1.2 of the W3C XML 1.0 Recommendation. For example, a * parser would use this callback to report the violation of a * well-formedness constraint.
* *The application must assume that the document is unusable * after the parser has invoked this method, and should continue * (if at all) only for the sake of collecting addition error * messages: in fact, CSS parsers are free to stop reporting any * other events once this method has been invoked.
* * @param exception The error information encapsulated in a * CSS parse exception. * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @see CSSParseException */ public void fatalError(CSSParseException exception) throws CSSException; } org/w3c/css/sac/InputSource.java 100644 0 0 17323 11146172410 14174 0 ustar 0 0 /* * Copyright (c) 1999 World Wide Web Consortium * (Massachusetts Institute of Technology, Institut National de Recherche * en Informatique et en Automatique, Keio University). * All Rights Reserved. http://www.w3.org/Consortium/Legal/ * * The original version of this interface comes from SAX : * http://www.megginson.com/SAX/ * * $Id: InputSource.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; import java.io.InputStream; import java.io.Reader; /** * A single input source for a CSS source. * *This class allows a CSS application to encapsulate information about an * input source in a single object, which may include a URI, a byte stream * (possibly with a specified encoding), and/or a character stream.
* *The CSS parser will use the InputSource object to determine how * to read CSS input. If there is a character stream available, the * parser will read that stream directly; if not, the parser will use * a byte stream, if available; if neither a character stream nor a * byte stream is available, the parser will attempt to open a URI * connection to the resource identified by the URI.
* *An InputSource object belongs to the application: the CSS parser * shall never modify it in any way (it may modify a copy if * necessary).
* * @version $Revision: 477010 $ * @author Philippe Le Hegaret */ public class InputSource { private String uri; private InputStream byteStream; private String encoding; private Reader characterStream; private String title; private String media; /** * Zero-argument default constructor. * * @see #setURI * @see #setByteStream * @see #setCharacterStream * @see #setEncoding */ public InputSource() { } /** * Create a new input source with a URI. * *The URI must be full resolved.
* * @param uri The URI. * @see #setURI * @see #setByteStream * @see #setEncoding * @see #setCharacterStream */ public InputSource(String uri) { setURI(uri); } /** * Create a new input source with a character stream. * *Application writers may use setURI() to provide a base * for resolving relative URIs, and setPublicId to include a * public identifier.
* *The character stream shall not include a byte order mark.
* * @see #setURI * @see #setByteStream * @see #setCharacterStream */ public InputSource(Reader characterStream) { setCharacterStream(characterStream); } /** * Set the URI for this input source. * *The URI is optional if there is a byte stream or a character stream, * but it is still useful to provide one, since the application can use it * to resolve relative URIs and can include it in error messages and * warnings (the parser will attempt to open a connection to the URI only * if there is no byte stream or character stream specified).
* *If the application knows the character encoding of the * object pointed to by the URI, it can register * the encoding using the setEncoding method.
* *The URI must be fully resolved.
* * @param uri The URI as a string. * @see #setEncoding * @see #getURI * @see Locator#getURI * @see CSSParseException#getURI */ public void setURI(String uri) { this.uri = uri; } /** * Get the URI for this input source. * *The getEncoding method will return the character encoding * of the object pointed to, or null if unknown.
* *The URI will be fully resolved.
* * @return The URI. * @see #setURI * @see #getEncoding */ public String getURI() { return uri; } /** * Set the byte stream for this input source. * *The SAX parser will ignore this if there is also a character * stream specified, but it will use a byte stream in preference * to opening a URI connection itself.
* *If the application knows the character encoding of the * byte stream, it should set it with the setEncoding method.
* * @param byteStream A byte stream containing an CSS document or * other entity. * @see #setEncoding * @see #getByteStream * @see #getEncoding */ public void setByteStream(InputStream byteStream) { this.byteStream = byteStream; } /** * Get the byte stream for this input source. * *The getEncoding method will return the character * encoding for this byte stream, or null if unknown.
* * @return The byte stream, or null if none was supplied. * @see #getEncoding * @see #setByteStream */ public InputStream getByteStream() { return byteStream; } /** * Set the character encoding, if known. * *The encoding must be a string acceptable for an * CHARSET encoding declaration (see section 4.4 of the CSS * recommendation Level 2).
* *This method has no effect when the application provides a * character stream.
* * @param encoding A string describing the character encoding. * @see #setURI * @see #setByteStream * @see #getEncoding */ public void setEncoding(String encoding) { this.encoding = encoding; } /** * Get the character encoding for a byte stream or URI. * * @return The encoding, or null if none was supplied. * @see #setByteStream * @see #getURI * @see #getByteStream */ public String getEncoding() { return encoding; } /** * Set the character stream for this input source. * *If there is a character stream specified, the SAX parser * will ignore any byte stream and will not attempt to open * a URI connection to the URI.
* * @param characterStream The character stream containing the * CSS document or other entity. * @see #getCharacterStream */ public void setCharacterStream(Reader characterStream) { this.characterStream = characterStream; } /** * Get the character stream for this input source. * * @return The character stream, or null if none was supplied. * @see #setCharacterStream */ public Reader getCharacterStream() { return characterStream; } /** * Set the title for this input source. * @param title The advisory title. See the title attribute definition * for the LINK * element in HTML 4.0, and the title pseudo-attribute for the XML * style sheet processing instruction. */ public void setTitle(String title) { this.title = title; } /** * Returns the title for this input source. */ public String getTitle() { return title; } /** * Set the media for this input source. * @param media A comma separated list with all media. */ public void setMedia(String media) { this.media = media; } /** * Returns the media associated to the input source ornull
* if media are currently unknown.
* @return the media associated to this input source.
*/
public String getMedia() {
if (media == null) {
return "all";
}
return media;
}
}
org/w3c/css/sac/LangCondition.java 100644 0 0 1125 11146172410 14415 0 ustar 0 0 /*
* (c) COPYRIGHT 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: LangCondition.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
* @see Condition#SAC_LANG_CONDITION
*/
public interface LangCondition extends Condition {
/**
* Returns the language
*/
public String getLang();
}
org/w3c/css/sac/LexicalUnit.java 100644 0 0 23313 11146172410 14131 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: LexicalUnit.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* This is a lexical unit for CSS values.
* Remarks: Not all the following lexical units are supported (or * will be supported) by CSS. *
All examples are CSS2 compliant.
*
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
*/
public interface LexicalUnit {
/**
* ,
*/
public static final short SAC_OPERATOR_COMMA = 0;
/**
* +
*/
public static final short SAC_OPERATOR_PLUS = 1;
/**
* -
*/
public static final short SAC_OPERATOR_MINUS = 2;
/**
* *
*/
public static final short SAC_OPERATOR_MULTIPLY = 3;
/**
* /
*/
public static final short SAC_OPERATOR_SLASH = 4;
/**
* %
*/
public static final short SAC_OPERATOR_MOD = 5;
/**
* ^
*/
public static final short SAC_OPERATOR_EXP = 6;
/**
* <
*/
public static final short SAC_OPERATOR_LT = 7;
/**
* >
*/
public static final short SAC_OPERATOR_GT = 8;
/**
* <=
*/
public static final short SAC_OPERATOR_LE = 9;
/**
* >=
*/
public static final short SAC_OPERATOR_GE = 10;
/**
* ~
*/
public static final short SAC_OPERATOR_TILDE = 11;
/**
* identifier inherit
.
*/
public static final short SAC_INHERIT = 12;
/**
* Integers.
* @see #getIntegerValue
*/
public static final short SAC_INTEGER = 13;
/**
* reals.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_REAL = 14;
/**
* Relative lengthem
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_EM = 15;
/**
* Relative lengthex
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_EX = 16;
/**
* Relative length px
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_PIXEL = 17;
/**
* Absolute length in
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_INCH = 18;
/**
* Absolute length cm
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_CENTIMETER = 19;
/**
* Absolute length mm
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_MILLIMETER = 20;
/**
* Absolute length pt
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_POINT = 21;
/**
* Absolute length pc
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_PICA = 22;
/**
* Percentage.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_PERCENTAGE = 23;
/**
* URI: uri(...)
.
* @see #getStringValue
*/
public static final short SAC_URI = 24;
/**
* function counter
.
* @see #getFunctionName
* @see #getParameters
*/
public static final short SAC_COUNTER_FUNCTION = 25;
/**
* function counters
.
* @see #getFunctionName
* @see #getParameters
*/
public static final short SAC_COUNTERS_FUNCTION = 26;
/**
* RGB Colors.
* rgb(0, 0, 0)
and #000
* @see #getFunctionName
* @see #getParameters
*/
public static final short SAC_RGBCOLOR = 27;
/**
* Angle deg
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_DEGREE = 28;
/**
* Angle grad
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_GRADIAN = 29;
/**
* Angle rad
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_RADIAN = 30;
/**
* Time ms
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_MILLISECOND = 31;
/**
* Time s
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_SECOND = 32;
/**
* Frequency Hz
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_HERTZ = 33;
/**
* Frequency kHz
.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_KILOHERTZ = 34;
/**
* any identifier except inherit
.
* @see #getStringValue
*/
public static final short SAC_IDENT = 35;
/**
* A string.
* @see #getStringValue
*/
public static final short SAC_STRING_VALUE = 36;
/**
* Attribute: attr(...)
.
* @see #getStringValue
*/
public static final short SAC_ATTR = 37;
/**
* function rect
.
* @see #getFunctionName
* @see #getParameters
*/
public static final short SAC_RECT_FUNCTION = 38;
/**
* A unicode range. @@TO BE DEFINED
*/
public static final short SAC_UNICODERANGE = 39;
/**
* sub expressions
* (a)
(a + b)
(normal/none)
* @see #getSubValues
*/
public static final short SAC_SUB_EXPRESSION = 40;
/**
* unknown function.
* @see #getFunctionName
* @see #getParameters
*/
public static final short SAC_FUNCTION = 41;
/**
* unknown dimension.
* @see #getFloatValue
* @see #getDimensionUnitText
*/
public static final short SAC_DIMENSION = 42;
/**
* An integer indicating the type of LexicalUnit
.
*/
public short getLexicalUnitType();
/**
* Returns the next value or null
if any.
*/
public LexicalUnit getNextLexicalUnit();
/**
* Returns the previous value or null
if any.
*/
public LexicalUnit getPreviousLexicalUnit();
/**
* Returns the integer value.
* @see #SAC_INTEGER
*/
public int getIntegerValue();
/**
* Returns the float value.
*
If the type of LexicalUnit
is one of SAC_DEGREE,
* SAC_GRADIAN, SAC_RADIAN, SAC_MILLISECOND, SAC_SECOND, SAC_HERTZ
* or SAC_KILOHERTZ, the value can never be negative.
if this lexical unit represents a float, the dimension is an empty * string.
* @see #SAC_REAL * @see #SAC_DIMENSION * @see #SAC_EM * @see #SAC_EX * @see #SAC_PIXEL * @see #SAC_INCH * @see #SAC_CENTIMETER * @see #SAC_MILLIMETER * @see #SAC_POINT * @see #SAC_PICA * @see #SAC_PERCENTAGE * @see #SAC_DEGREE * @see #SAC_GRADIAN * @see #SAC_RADIAN * @see #SAC_MILLISECOND * @see #SAC_SECOND * @see #SAC_HERTZ * @see #SAC_KILOHERTZ */ public String getDimensionUnitText(); /** * Returns the name of the function. * @see #SAC_COUNTER_FUNCTION * @see #SAC_COUNTERS_FUNCTION * @see #SAC_RECT_FUNCTION * @see #SAC_FUNCTION * @see #SAC_RGBCOLOR */ public String getFunctionName(); /** * The function parameters including operators (like the comma). *#000
is converted to rgb(0, 0, 0)
* can return null
if SAC_FUNCTION
.
* @see #SAC_COUNTER_FUNCTION
* @see #SAC_COUNTERS_FUNCTION
* @see #SAC_RECT_FUNCTION
* @see #SAC_FUNCTION
* @see #SAC_RGBCOLOR
*/
public LexicalUnit getParameters();
/**
* Returns the string value.
* If the type is SAC_URI
, the return value doesn't contain
* uri(....)
or quotes.
*
If the type is SAC_ATTR
, the return value doesn't contain
* attr(....)
.
*
* @see #SAC_URI
* @see #SAC_ATTR
* @see #SAC_IDENT
* @see #SAC_STRING_VALUE
* @see #SAC_UNICODERANGE @@TO BE DEFINED
*/
public String getStringValue();
/**
* Returns a list of values inside the sub expression.
* @see #SAC_SUB_EXPRESSION
*/
public LexicalUnit getSubValues();
}
org/w3c/css/sac/Locator.java 100644 0 0 5162 11146172410 13275 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* The original version of this interface comes from SAX :
* http://www.megginson.com/SAX/
*
* $Id: Locator.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* Interface for associating a CSS event with a document location.
*
*
If a SAX parser provides location information to the SAX * application, it does so by implementing this interface and then * passing an instance to the application using the document * handler's setDocumentLocator method. The application can use the * object to obtain the location of any other document handler event * in the CSS source document.
* *Note that the results returned by the object will be valid only * during the scope of each document handler method: the application * will receive unpredictable results if it attempts to use the * locator at any other time.
* *CSS parsers are not required to supply a locator, but they are * very strong encouraged to do so. If the parser supplies a * locator, it must do so before reporting any other document events. * If no locator has been set by the time the application receives * the startDocument event, the application should assume that a * locator is not available.
* * @version $Revision: 477010 $ * @author Philippe Le Hegaret */ public interface Locator { /** * Return the URI for the current document event. * *The parser must resolve the URI fully before passing it to the * application.
* * @return A string containing the URI, or null * if none is available. */ public String getURI(); /** * Return the line number where the current document event ends. * Note that this is the line position of the first character * after the text associated with the document event. * @return The line number, or -1 if none is available. * @see #getColumnNumber */ public int getLineNumber(); /** * Return the column number where the current document event ends. * Note that this is the column number of the first * character after the text associated with the document * event. The first column in a line is position 1. * @return The column number, or -1 if none is available. * @see #getLineNumber */ public int getColumnNumber(); } org/w3c/css/sac/NegativeCondition.java 100644 0 0 1161 11146172410 15276 0 ustar 0 0 /* * (c) COPYRIGHT 1999 World Wide Web Consortium * (Massachusetts Institute of Technology, Institut National de Recherche * en Informatique et en Automatique, Keio University). * All Rights Reserved. http://www.w3.org/Consortium/Legal/ * * $Id: NegativeCondition.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; /** * @version $Revision: 477010 $ * @author Philippe Le Hegaret * @see Condition#SAC_NEGATIVE_CONDITION */ public interface NegativeCondition extends Condition { /** * Returns the condition. */ public Condition getCondition(); } org/w3c/css/sac/NegativeSelector.java 100644 0 0 1202 11146172410 15124 0 ustar 0 0 /* * (c) COPYRIGHT 1999 World Wide Web Consortium * (Massachusetts Institute of Technology, Institut National de Recherche * en Informatique et en Automatique, Keio University). * All Rights Reserved. http://www.w3.org/Consortium/Legal/ * * $Id: NegativeSelector.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; /** * @version $Revision: 477010 $ * @author Philippe Le Hegaret * @see Selector#SAC_NEGATIVE_SELECTOR */ public interface NegativeSelector extends SimpleSelector { /** * Returns the simple selector. */ public SimpleSelector getSimpleSelector(); } org/w3c/css/sac/Parser.java 100644 0 0 20472 11146172410 13147 0 ustar 0 0 /* * Copyright (c) 1999 World Wide Web Consortium * (Massachusetts Institute of Technology, Institut National de Recherche * en Informatique et en Automatique, Keio University). * All Rights Reserved. http://www.w3.org/Consortium/Legal/ * * The original version of this interface comes from SAX : * http://www.megginson.com/SAX/ * * $Id: Parser.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; import java.io.IOException; import java.util.Locale; /** * Basic interface for CSS (Simple API for CSS) parsers. * *All CSS parsers must implement this basic interface: it allows * applications to register handlers for different types of events * and to initiate a parse from a URI, or a character stream.
* *All CSS parsers must also implement a zero-argument constructor * (though other constructors are also allowed).
* *CSS parsers are reusable but not re-entrant: the application * may reuse a parser object (possibly with a different input source) * once the first parse has completed successfully, but it may not * invoke the parse() methods recursively within a parse.
* * @version $Revision: 477010 $ * @author Philippe Le Hegaret * @see DocumentHandler * @see ErrorHandler * @see InputSource */ public interface Parser { /** * Allow an application to request a locale for errors and warnings. * *CSS parsers are not required to provide localisation for errors * and warnings; if they cannot support the requested locale, * however, they must throw a CSS exception. Applications may * not request a locale change in the middle of a parse.
* * @param locale A Java Locale object. * @exception CSSException Throws an exception * (using the previous or default locale) if the * requested locale is not supported. * @see CSSException * @see CSSParseException */ public void setLocale(Locale locale) throws CSSException; /** * Allow an application to register a document event handler. * *If the application does not register a document handler, all * document events reported by the CSS parser will be silently * ignored (this is the default behaviour implemented by * HandlerBase).
* *Applications may register a new or different handler in the * middle of a parse, and the CSS parser must begin using the new * handler immediately.
* * @param handler The document handler. * @see DocumentHandler */ public void setDocumentHandler(DocumentHandler handler); public void setSelectorFactory(SelectorFactory selectorFactory); public void setConditionFactory(ConditionFactory conditionFactory); /** * Allow an application to register an error event handler. * *If the application does not register an error event handler, * all error events reported by the CSS parser will be silently * ignored, except for fatalError, which will throw a CSSException * (this is the default behaviour implemented by HandlerBase).
* *Applications may register a new or different handler in the * middle of a parse, and the CSS parser must begin using the new * handler immediately.
* * @param handler The error handler. * @see ErrorHandler * @see CSSException */ public void setErrorHandler(ErrorHandler handler); /** * Parse a CSS document. * *The application can use this method to instruct the CSS parser * to begin parsing an CSS document from any valid input * source (a character stream, a byte stream, or a URI).
* *Applications may not invoke this method while a parse is in * progress (they should create a new Parser instead for each * additional CSS document). Once a parse is complete, an * application may reuse the same Parser object, possibly with a * different input source.
* * @param source The input source for the top-level of the * CSS document. * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. * @see InputSource * @see #parseStyleSheet(java.lang.String) * @see #setDocumentHandler * @see #setErrorHandler */ public void parseStyleSheet(InputSource source) throws CSSException, IOException; /** * Parse a CSS document from a URI. * *This method is a shortcut for the common case of reading a document * from a URI. It is the exact equivalent of the following:
* ** parse(new InputSource(uri)); ** *
The URI must be fully resolved by the application before it is passed * to the parser.
* * @param uri The URI. * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. * @see #parseStyleSheet(InputSource) */ public void parseStyleSheet(String uri) throws CSSException, IOException; /** * Parse a CSS style declaration (without '{' and '}'). * * @param styleValue The declaration. * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. */ public void parseStyleDeclaration(InputSource source) throws CSSException, IOException; /** * Parse a CSS rule. * * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. */ public void parseRule(InputSource source) throws CSSException, IOException; /** * Returns a string about which CSS language is supported by this * parser. For CSS Level 1, it returns "http://www.w3.org/TR/REC-CSS1", for * CSS Level 2, it returns "http://www.w3.org/TR/REC-CSS2". Note that a * "CSSx" parser can return lexical unit other than those allowed by CSS * Level x but this usage is not recommended. */ public String getParserVersion(); /** * Parse a comma separated list of selectors. * * * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. */ public SelectorList parseSelectors(InputSource source) throws CSSException, IOException; /** * Parse a CSS property value. * * * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. */ public LexicalUnit parsePropertyValue(InputSource source) throws CSSException, IOException; /** * Parse a CSS priority value (e.g. "!important"). * * * @exception CSSException Any CSS exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. */ public boolean parsePriority(InputSource source) throws CSSException, IOException; } org/w3c/css/sac/PositionalCondition.java 100644 0 0 2145 11146172410 15660 0 ustar 0 0 /* * (c) COPYRIGHT 1999 World Wide Web Consortium * (Massachusetts Institute of Technology, Institut National de Recherche * en Informatique et en Automatique, Keio University). * All Rights Reserved. http://www.w3.org/Consortium/Legal/ * * $Id: PositionalCondition.java 477010 2006-11-20 02:54:38Z mrglavas $ */ package org.w3c.css.sac; /** * @version $Revision: 477010 $ * @author Philippe Le Hegaret * @see Condition#SAC_POSITIONAL_CONDITION */ public interface PositionalCondition extends Condition { /** * Returns the position in the tree. *A negative value means from the end of the child node list. *
The child node list begins at 0.
*/
public int getPosition();
/**
* true
if the child node list only shows nodes of the same
* type of the selector (only elements, only PIS, ...)
*/
public boolean getTypeNode();
/**
* true
if the node should have the same node type (for
* element, same namespaceURI and same localName).
*/
public boolean getType();
}
org/w3c/css/sac/ProcessingInstructionSelector.java 100644 0 0 1671 11146172410 17752 0 ustar 0 0 /*
* (c) COPYRIGHT 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: ProcessingInstructionSelector.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* This simple matches a
* processing instruction.
*
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
* @see Selector#SAC_PROCESSING_INSTRUCTION_NODE_SELECTOR
*/
public interface ProcessingInstructionSelector extends SimpleSelector {
/**
* Returns the target
* of the processing instruction.
*/
public String getTarget();
/**
* Returns the character data.
*/
public String getData();
}
org/w3c/css/sac/SACMediaList.java 100644 0 0 1331 11146172410 14066 0 ustar 0 0 /*
* (c) COPYRIGHT 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: SACMediaList.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
*/
public interface SACMediaList {
/**
* Returns the length of this media list
*/
public int getLength();
/**
* Returns the medium at the specified index, or null
if this
* is not a valid index.
*/
public String item(int index);
}
org/w3c/css/sac/Selector.java 100644 0 0 10055 11146172410 13467 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*
* $Id: Selector.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* This interface defines a selector.
*
Remarks: Not all the following selectors are supported (or will be * supported) by CSS. *
All examples are CSS2 compliant. * * @version $Revision: 477010 $ * @author Philippe Le Hegaret */ public interface Selector { /* simple selectors */ /** * This is a conditional selector. * example: *
* simple[role="private"] * .part1 * H1#myId * P:lang(fr).p1 ** * @see ConditionalSelector */ public static final short SAC_CONDITIONAL_SELECTOR = 0; /** * This selector matches any node. * @see SimpleSelector */ public static final short SAC_ANY_NODE_SELECTOR = 1; /** * This selector matches the root node. * @see SimpleSelector */ public static final short SAC_ROOT_NODE_SELECTOR = 2; /** * This selector matches only node that are different from a specified one. * @see NegativeSelector */ public static final short SAC_NEGATIVE_SELECTOR = 3; /** * This selector matches only element node. * example: *
* H1 * animate ** @see ElementSelector */ public static final short SAC_ELEMENT_NODE_SELECTOR = 4; /** * This selector matches only text node. * @see CharacterDataSelector */ public static final short SAC_TEXT_NODE_SELECTOR = 5; /** * This selector matches only cdata node. * @see CharacterDataSelector */ public static final short SAC_CDATA_SECTION_NODE_SELECTOR = 6; /** * This selector matches only processing instruction node. * @see ProcessingInstructionSelector */ public static final short SAC_PROCESSING_INSTRUCTION_NODE_SELECTOR = 7; /** * This selector matches only comment node. * @see CharacterDataSelector */ public static final short SAC_COMMENT_NODE_SELECTOR = 8; /** * This selector matches the 'first line' pseudo element. * example: *
* :first-line ** @see ElementSelector */ public static final short SAC_PSEUDO_ELEMENT_SELECTOR = 9; /* combinator selectors */ /** * This selector matches an arbitrary descendant of some ancestor element. * example: *
* E F ** @see DescendantSelector */ public static final short SAC_DESCENDANT_SELECTOR = 10; /** * This selector matches a childhood relationship between two elements. * example: *
* E > F ** @see DescendantSelector */ public static final short SAC_CHILD_SELECTOR = 11; /** * This selector matches two selectors who shared the same parent in the * document tree and the element represented by the first sequence * immediately precedes the element represented by the second one. * example: *
* E + F ** @see SiblingSelector */ public static final short SAC_DIRECT_ADJACENT_SELECTOR = 12; /** * An integer indicating the type of
Selector
*/
public short getSelectorType();
}
org/w3c/css/sac/SelectorFactory.java 100644 0 0 13157 11146172410 15025 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*
* $Id: SelectorFactory.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
* @see org.w3c.css.sac.Selector
*/
public interface SelectorFactory {
/**
* Creates a conditional selector.
*
* @param selector a selector.
* @param condition a condition
* @return the conditional selector.
* @exception CSSException If this selector is not supported.
*/
ConditionalSelector createConditionalSelector(SimpleSelector selector,
Condition condition)
throws CSSException;
/**
* Creates an any node selector.
*
* @return the any node selector.
* @exception CSSException If this selector is not supported.
*/
SimpleSelector createAnyNodeSelector() throws CSSException;
/**
* Creates an root node selector.
*
* @return the root node selector.
* @exception CSSException If this selector is not supported.
*/
SimpleSelector createRootNodeSelector() throws CSSException;
/**
* Creates an negative selector.
*
* @param selector a selector.
* @return the negative selector.
* @exception CSSException If this selector is not supported.
*/
NegativeSelector createNegativeSelector(SimpleSelector selector)
throws CSSException;
/**
* Creates an element selector.
*
* @param namespaceURI the namespace
* URI of the element selector.
* @param tagName the local
* part of the element name. NULL
if this element
* selector can match any element.
* @return the element selector
* @exception CSSException If this selector is not supported.
*/
ElementSelector createElementSelector(String namespaceURI, String tagName)
throws CSSException;
/**
* Creates a text node selector.
*
* @param data the data
* @return the text node selector
* @exception CSSException If this selector is not supported.
*/
CharacterDataSelector createTextNodeSelector(String data)
throws CSSException;
/**
* Creates a cdata section node selector.
*
* @param data the data
* @return the cdata section node selector
* @exception CSSException If this selector is not supported.
*/
CharacterDataSelector createCDataSectionSelector(String data)
throws CSSException;
/**
* Creates a processing instruction node selector.
*
* @param target the target
* @param data the data
* @return the processing instruction node selector
* @exception CSSException If this selector is not supported.
*/
ProcessingInstructionSelector
createProcessingInstructionSelector(String target,
String data)
throws CSSException;
/**
* Creates a comment node selector.
*
* @param data the data
* @return the comment node selector
* @exception CSSException If this selector is not supported.
*/
CharacterDataSelector createCommentSelector(String data)
throws CSSException;
/**
* Creates a pseudo element selector.
*
* @param pseudoName the pseudo element name. NULL
if this
* element selector can match any pseudo element.
* @return the element selector
* @exception CSSException If this selector is not supported.
*/
ElementSelector createPseudoElementSelector(String namespaceURI,
String pseudoName)
throws CSSException;
/**
* Creates a descendant selector.
*
* @param parent the parent selector
* @param descendant the descendant selector
* @return the combinator selector.
* @exception CSSException If this selector is not supported.
*/
DescendantSelector createDescendantSelector(Selector parent,
SimpleSelector descendant)
throws CSSException;
/**
* Creates a child selector.
*
* @param parent the parent selector
* @param child the child selector
* @return the combinator selector.
* @exception CSSException If this selector is not supported.
*/
DescendantSelector createChildSelector(Selector parent,
SimpleSelector child)
throws CSSException;
/**
* Creates a sibling selector.
*
* @param nodeType the type of nodes in the siblings list.
* @param child the child selector
* @param adjacent the direct adjacent selector
* @return the sibling selector with nodeType
equals to org.w3c.dom.Node.ELEMENT_NODE
* @exception CSSException If this selector is not supported.
*/
SiblingSelector createDirectAdjacentSelector(short nodeType,
Selector child,
SimpleSelector directAdjacent)
throws CSSException;
}
org/w3c/css/sac/SelectorList.java 100644 0 0 1621 11146172410 14302 0 ustar 0 0 /*
* Copyright (c) 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: SelectorList.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* The SelectorList interface provides the abstraction of an ordered collection
* of selectors, without defining or constraining how this collection is
* implemented.
*
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
*/
public interface SelectorList {
/**
* Returns the length of this selector list
*/
public int getLength();
/**
* Returns the selector at the specified index, or null
if this
* is not a valid index.
*/
public Selector item(int index);
}
org/w3c/css/sac/SiblingSelector.java 100644 0 0 2022 11146172410 14752 0 ustar 0 0 /*
* (c) COPYRIGHT 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: SiblingSelector.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* @version $Revision: 477010 $
* @author Philippe Le Hegaret
* @see Selector#SAC_DIRECT_ADJACENT_SELECTOR
*/
public interface SiblingSelector extends Selector {
public static final short ANY_NODE = 201;
/**
* The node type to considered in the siblings list.
* All DOM node types are supported. In order to support the "any" node
* type, the code ANY_NODE is added to the DOM node types.
*/
public short getNodeType();
/**
* Returns the first selector.
*/
public Selector getSelector();
/*
* Returns the second selector.
*/
public SimpleSelector getSiblingSelector();
}
org/w3c/css/sac/SimpleSelector.java 100644 0 0 1233 11146172410 14617 0 ustar 0 0 /*
* (c) COPYRIGHT 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* $Id: SimpleSelector.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* This interface is only for constraints on selectors.
*
* A ConditionalSelector
can only accept a simple selector or a
* negative selector.
Attr
interface represents an attribute in an
* Element
object. Typically the allowable values for the
* attribute are defined in a schema associated with the document.
* Attr
objects inherit the Node
interface, but
* since they are not actually child nodes of the element they describe, the
* DOM does not consider them part of the document tree. Thus, the
* Node
attributes parentNode
,
* previousSibling
, and nextSibling
have a
* null
value for Attr
objects. The DOM takes the
* view that attributes are properties of elements rather than having a
* separate identity from the elements they are associated with; this should
* make it more efficient to implement such features as default attributes
* associated with all elements of a given type. Furthermore,
* Attr
nodes may not be immediate children of a
* DocumentFragment
. However, they can be associated with
* Element
nodes contained within a
* DocumentFragment
. In short, users and implementors of the
* DOM need to be aware that Attr
nodes have some things in
* common with other objects inheriting the Node
interface, but
* they also are quite distinct.
*
The attribute's effective value is determined as follows: if this
* attribute has been explicitly assigned any value, that value is the
* attribute's effective value; otherwise, if there is a declaration for
* this attribute, and that declaration includes a default value, then that
* default value is the attribute's effective value; otherwise, the
* attribute does not exist on this element in the structure model until it
* has been explicitly added. Note that the Node.nodeValue
* attribute on the Attr
instance can also be used to retrieve
* the string version of the attribute's value(s).
*
If the attribute was not explicitly given a value in the instance
* document but has a default value provided by the schema associated with
* the document, an attribute node will be created with
* specified
set to false
. Removing attribute
* nodes for which a default value is defined in the schema generates a new
* attribute node with the default value and specified
set to
* false
. If validation occurred while invoking
* Document.normalizeDocument()
, attribute nodes with
* specified
equals to false
are recomputed
* according to the default attribute values provided by the schema. If no
* default value is associate with this attribute in the schema, the
* attribute node is discarded.
*
In XML, where the value of an attribute can contain entity references,
* the child nodes of the Attr
node may be either
* Text
or EntityReference
nodes (when these are
* in use; see the description of EntityReference
for
* discussion).
*
The DOM Core represents all attribute values as simple strings, even if * the DTD or schema associated with the document declares them of some * specific type such as tokenized. *
The way attribute value normalization is performed by the DOM
* implementation depends on how much the implementation knows about the
* schema in use. Typically, the value
and
* nodeValue
attributes of an Attr
node initially
* returns the normalized value given by the parser. It is also the case
* after Document.normalizeDocument()
is called (assuming the
* right options have been set). But this may not be the case after
* mutation, independently of whether the mutation is performed by setting
* the string value directly or by changing the Attr
child
* nodes. In particular, this is true when character
* references are involved, given that they are not represented in the DOM and they
* impact attribute value normalization. On the other hand, if the
* implementation knows about the schema in use when the attribute value is
* changed, and it is of a different type than CDATA, it may normalize it
* again at that time. This is especially true of specialized DOM
* implementations, such as SVG DOM implementations, which store attribute
* values in an internal form different from a string.
*
The following table gives some examples of the relations between the * attribute value in the original document (parsed attribute), the value as * exposed in the DOM, and the serialization of the value: *
Examples | *Parsed * attribute value | *Initial Attr.value |
* Serialized attribute value | *
---|---|---|---|
* Character reference | *
* "x²=5"* |
*
* "x\u00b2=5"* |
*
* "x²=5"* |
*
Built-in * character entity | *
* "y<6"* |
*
* "y<6"* |
*
* "y<6"* |
*
Literal newline between | *
* * "x=5 y=6"* |
*
* "x=5 y=6"* |
*
* "x=5 y=6"* |
*
Normalized newline between | *
* "x=5 * y=6"* |
*
* "x=5 y=6"* |
*
* "x=5 y=6"* |
*
Entity e with literal newline |
*
* * <!ENTITY e '... ...'> [...]> "x=5&e;y=6"* |
* Dependent on Implementation and Load Options | *Dependent on Implementation and Load/Save Options | *
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Attr extends Node {
/**
* Returns the name of this attribute. If Node.localName
is
* different from null
, this attribute is a qualified name.
*/
public String getName();
/**
* True
if this attribute was explicitly given a value in
* the instance document, false
otherwise. If the
* application changed the value of this attribute node (even if it ends
* up having the same value as the default value) then it is set to
* true
. The implementation may handle attributes with
* default values from other schemas similarly but applications should
* use Document.normalizeDocument()
to guarantee this
* information is up-to-date.
*/
public boolean getSpecified();
/**
* On retrieval, the value of the attribute is returned as a string.
* Character and general entity references are replaced with their
* values. See also the method getAttribute
on the
* Element
interface.
*
On setting, this creates a Text
node with the unparsed
* contents of the string, i.e. any characters that an XML processor
* would recognize as markup are instead treated as literal text. See
* also the method Element.setAttribute()
.
*
Some specialized implementations, such as some [SVG 1.1]
* implementations, may do normalization automatically, even after
* mutation; in such case, the value on retrieval may differ from the
* value on setting.
*/
public String getValue();
/**
* On retrieval, the value of the attribute is returned as a string.
* Character and general entity references are replaced with their
* values. See also the method getAttribute
on the
* Element
interface.
*
On setting, this creates a Text
node with the unparsed
* contents of the string, i.e. any characters that an XML processor
* would recognize as markup are instead treated as literal text. See
* also the method Element.setAttribute()
.
*
Some specialized implementations, such as some [SVG 1.1]
* implementations, may do normalization automatically, even after
* mutation; in such case, the value on retrieval may differ from the
* value on setting.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
*/
public void setValue(String value)
throws DOMException;
/**
* The Element
node this attribute is attached to or
* null
if this attribute is not in use.
* @since DOM Level 2
*/
public Element getOwnerElement();
/**
* The type information associated with this attribute. While the type
* information contained in this attribute is guarantee to be correct
* after loading the document or invoking
* Document.normalizeDocument()
, schemaTypeInfo
* may not be reliable if the node was moved.
* @since DOM Level 3
*/
public TypeInfo getSchemaTypeInfo();
/**
* Returns whether this attribute is known to be of type ID (i.e. to
* contain an identifier for its owner element) or not. When it is and
* its value is unique, the ownerElement
of this attribute
* can be retrieved using the method Document.getElementById
* . The implementation could use several ways to determine if an
* attribute node is known to contain an identifier:
*
Document.normalizeDocument()
, the post-schema-validation
* infoset contributions (PSVI contributions) values are used to
* determine if this attribute is a schema-determined ID attribute using
* the
* schema-determined ID definition in [XPointer]
* .
* Document.normalizeDocument()
, the infoset [type definition] value is used to determine if this attribute is a DTD-determined ID
* attribute using the
* DTD-determined ID definition in [XPointer]
* .
* Element.setIdAttribute()
,
* Element.setIdAttributeNS()
, or
* Element.setIdAttributeNode()
, i.e. it is an
* user-determined ID attribute;
* Note: XPointer framework (see section 3.2 in [XPointer] * ) consider the DOM user-determined ID attribute as being part of the * XPointer externally-determined ID definition. *
Document.normalizeDocument()
, all user-determined ID
* attributes are reset and all attribute nodes ID information are then
* reevaluated in accordance to the schema used. As a consequence, if
* the Attr.schemaTypeInfo
attribute contains an ID type,
* isId
will always return true.
* @since DOM Level 3
*/
public boolean isId();
}
org/w3c/dom/CDATASection.java 100644 0 0 6460 11146172407 13264 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* CDATA sections are used to escape blocks of text containing characters that
* would otherwise be regarded as markup. The only delimiter that is
* recognized in a CDATA section is the "]]>" string that ends the CDATA
* section. CDATA sections cannot be nested. Their primary purpose is for
* including material such as XML fragments, without needing to escape all
* the delimiters.
* The CharacterData.data
attribute holds the text that is
* contained by the CDATA section. Note that this may contain characters that need to be escaped outside of CDATA sections and
* that, depending on the character encoding ("charset") chosen for
* serialization, it may be impossible to write out some characters as part
* of a CDATA section.
*
The CDATASection
interface inherits from the
* CharacterData
interface through the Text
* interface. Adjacent CDATASection
nodes are not merged by use
* of the normalize
method of the Node
interface.
*
No lexical check is done on the content of a CDATA section and it is
* therefore possible to have the character sequence "]]>"
* in the content, which is illegal in a CDATA section per section 2.7 of [XML 1.0]. The
* presence of this character sequence must generate a fatal error during
* serialization or the cdata section must be splitted before the
* serialization (see also the parameter "split-cdata-sections"
* in the DOMConfiguration
interface).
*
Note: Because no markup is recognized within a
* CDATASection
, character numeric references cannot be used as
* an escape mechanism when serializing. Therefore, action needs to be taken
* when serializing a CDATASection
with a character encoding
* where some of the contained characters cannot be represented. Failure to
* do so would not produce well-formed XML.
*
Note: One potential solution in the serialization process is to * end the CDATA section before the character, output the character using a * character reference or entity reference, and open a new CDATA section for * any further characters in the text node. Note, however, that some code * conversion libraries at the time of writing do not return an error or * exception when a character is missing from the encoding, making the task * of ensuring that data is not corrupted on serialization more difficult. *
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface CDATASection extends Text {
}
org/w3c/dom/CharacterData.java 100644 0 0 16515 11146172407 13633 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The CharacterData
interface extends Node with a set of
* attributes and methods for accessing character data in the DOM. For
* clarity this set is defined here rather than on each object that uses
* these attributes and methods. No DOM objects correspond directly to
* CharacterData
, though Text
and others do
* inherit the interface from it. All offsets
in this interface
* start from 0
.
*
As explained in the DOMString
interface, text strings in
* the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In
* the following, the term 16-bit units is used whenever necessary to
* indicate that indexing on CharacterData is done in 16-bit units.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface CharacterData extends Node {
/**
* The character data of the node that implements this interface. The DOM
* implementation may not put arbitrary limits on the amount of data
* that may be stored in a CharacterData
node. However,
* implementation limits may mean that the entirety of a node's data may
* not fit into a single DOMString
. In such cases, the user
* may call substringData
to retrieve the data in
* appropriately sized pieces.
* @exception DOMException
* DOMSTRING_SIZE_ERR: Raised when it would return more characters than
* fit in a DOMString
variable on the implementation
* platform.
*/
public String getData()
throws DOMException;
/**
* The character data of the node that implements this interface. The DOM
* implementation may not put arbitrary limits on the amount of data
* that may be stored in a CharacterData
node. However,
* implementation limits may mean that the entirety of a node's data may
* not fit into a single DOMString
. In such cases, the user
* may call substringData
to retrieve the data in
* appropriately sized pieces.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
*/
public void setData(String data)
throws DOMException;
/**
* The number of 16-bit units that are available through data
* and the substringData
method below. This may have the
* value zero, i.e., CharacterData
nodes may be empty.
*/
public int getLength();
/**
* Extracts a range of data from the node.
* @param offset Start offset of substring to extract.
* @param count The number of 16-bit units to extract.
* @return The specified substring. If the sum of offset
and
* count
exceeds the length
, then all 16-bit
* units to the end of the data are returned.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if the specified offset
is
* negative or greater than the number of 16-bit units in
* data
, or if the specified count
is
* negative.
*
DOMSTRING_SIZE_ERR: Raised if the specified range of text does
* not fit into a DOMString
.
*/
public String substringData(int offset,
int count)
throws DOMException;
/**
* Append the string to the end of the character data of the node. Upon
* success, data
provides access to the concatenation of
* data
and the DOMString
specified.
* @param arg The DOMString
to append.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
public void appendData(String arg)
throws DOMException;
/**
* Insert a string at the specified 16-bit unit offset.
* @param offset The character offset at which to insert.
* @param arg The DOMString
to insert.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if the specified offset
is
* negative or greater than the number of 16-bit units in
* data
.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
public void insertData(int offset,
String arg)
throws DOMException;
/**
* Remove a range of 16-bit units from the node. Upon success,
* data
and length
reflect the change.
* @param offset The offset from which to start removing.
* @param count The number of 16-bit units to delete. If the sum of
* offset
and count
exceeds
* length
then all 16-bit units from offset
* to the end of the data are deleted.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if the specified offset
is
* negative or greater than the number of 16-bit units in
* data
, or if the specified count
is
* negative.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
public void deleteData(int offset,
int count)
throws DOMException;
/**
* Replace the characters starting at the specified 16-bit unit offset
* with the specified string.
* @param offset The offset from which to start replacing.
* @param count The number of 16-bit units to replace. If the sum of
* offset
and count
exceeds
* length
, then all 16-bit units to the end of the data
* are replaced; (i.e., the effect is the same as a remove
* method call with the same range, followed by an append
* method invocation).
* @param arg The DOMString
with which the range must be
* replaced.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if the specified offset
is
* negative or greater than the number of 16-bit units in
* data
, or if the specified count
is
* negative.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
public void replaceData(int offset,
int count,
String arg)
throws DOMException;
}
org/w3c/dom/Comment.java 100644 0 0 2775 11146172407 12532 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* This interface inherits from CharacterData
and represents the
* content of a comment, i.e., all the characters between the starting '
* <!--
' and ending '-->
'. Note that this is
* the definition of a comment in XML, and, in practice, HTML, although some
* HTML tools may implement the full SGML comment structure.
*
No lexical check is done on the content of a comment and it is
* therefore possible to have the character sequence "--"
* (double-hyphen) in the content, which is illegal in a comment per section
* 2.5 of [XML 1.0]. The
* presence of this character sequence must generate a fatal error during
* serialization.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Comment extends CharacterData {
}
org/w3c/dom/DOMConfiguration.java 100644 0 0 53253 11146172407 14314 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The DOMConfiguration
interface represents the configuration
* of a document and maintains a table of recognized parameters. Using the
* configuration, it is possible to change
* Document.normalizeDocument()
behavior, such as replacing the
* CDATASection
nodes with Text
nodes or
* specifying the type of the schema that must be used when the validation
* of the Document
is requested. DOMConfiguration
* objects are also used in [DOM Level 3 Load and Save]
* in the DOMParser
and DOMSerializer
interfaces.
*
The parameter names used by the DOMConfiguration
object
* are defined throughout the DOM Level 3 specifications. Names are
* case-insensitive. To avoid possible conflicts, as a convention, names
* referring to parameters defined outside the DOM specification should be
* made unique. Because parameters are exposed as properties in the , names
* are recommended to follow the section 5.16 Identifiers of [Unicode] with the addition of the character '-' (HYPHEN-MINUS) but it is not
* enforced by the DOM implementation. DOM Level 3 Core Implementations are
* required to recognize all parameters defined in this specification. Some
* parameter values may also be required to be supported by the
* implementation. Refer to the definition of the parameter to know if a
* value must be supported or not.
*
Note: Parameters are similar to features and properties used in * SAX2 [SAX]. *
The following list of parameters defined in the DOM: *
"canonical-form"
true
DocumentType
node (if any) from the
* tree, or removing superfluous namespace declarations from each element.
* Note that this is limited to what can be represented in the DOM; in
* particular, there is no way to specify the order of the attributes in the
* DOM. In addition, Setting this parameter to true
will also
* set the state of the parameters listed below. Later changes to the state
* of one of those parameters will revert "canonical-form" back to
* false
. Parameters set to false
: "entities", "
* normalize-characters", "cdata-sections". Parameters set to
* true
: "namespaces", "namespace-declarations", "well-formed",
* "element-content-whitespace". Other parameters are not changed unless
* explicitly specified in the description of the parameters.false
"cdata-sections"
true
CDATASection
nodes in the document.false
CDATASection
nodes in the document into
* Text
nodes. The new Text
node is then combined
* with any adjacent Text
node."check-character-normalization"
true
DOMError.type
equals to
* "check-character-normalization-failure" is issued. false
"comments"
true
Comment
nodes in the document.false
Comment
nodes in the document."datatype-normalization"
true
true
. Having this parameter activated when "validate" is
* false
has no effect and no schema-normalization will happen.
* Note: Since the document contains the result of the XML 1.0 * processing, this parameter does not apply to attribute value * normalization as defined in section 3.3.3 of [XML 1.0] and is only * meant for schema languages other than Document Type Definition (DTD).
false
"element-content-whitespace"
true
false
Text
nodes that contain whitespaces in element
* content, as described in
* [element content whitespace]. The implementation is expected to use the attribute
* Text.isElementContentWhitespace
to determine if a
* Text
node should be discarded or not."entities"
true
EntityReference
nodes in the document.false
EntityReference
nodes from the document,
* putting the entity expansions directly in their place. Text
* nodes are normalized, as defined in Node.normalize
. Only
* unexpanded entity references are kept in the document. Note: This parameter does not affect Entity
nodes.
"error-handler"
DOMErrorHandler
object. If an error is
* encountered in the document, the implementation will call back the
* DOMErrorHandler
registered using this parameter. The
* implementation may provide a default DOMErrorHandler
object.
* When called, DOMError.relatedData
will contain the closest
* node to where the error occurred. If the implementation is unable to
* determine the node where the error occurs,
* DOMError.relatedData
will contain the Document
* node. Mutations to the document from within an error handler will result
* in implementation dependent behavior. "infoset"
true
false
: "
* validate-if-schema", "entities", "datatype-normalization", "cdata-sections
* ".This forces the following parameters to true
: "
* namespace-declarations", "well-formed", "element-content-whitespace", "
* comments", "namespaces".Other parameters are not changed unless
* explicitly specified in the description of the parameters. Note that
* querying this parameter with getParameter
returns
* true
only if the individual parameters specified above are
* appropriately set.false
infoset
to
* false
has no effect."namespaces"
true
false
"namespace-declarations"
false
.
* true
false
Node.prefix
) are retained even if this parameter is set to
* false
."normalize-characters"
true
false
"schema-location"
DOMString
object containing a list of URIs,
* separated by whitespaces (characters matching the nonterminal
* production S defined in section 2.3 [XML 1.0]), that
* represents the schemas against which validation should occur, i.e. the
* current schema. The types of schemas referenced in this list must match
* the type specified with schema-type
, otherwise the behavior
* of an implementation is undefined. The schemas specified using this
* property take precedence to the schema information specified in the
* document itself. For namespace aware schema, if a schema specified using
* this property and a schema specified in the document instance (i.e. using
* the schemaLocation
attribute) in a schema document (i.e.
* using schema import
mechanisms) share the same
* targetNamespace
, the schema specified by the user using this
* property will be used. If two schemas specified using this property share
* the same targetNamespace
or have no namespace, the behavior
* is implementation dependent. If no location has been provided, this
* parameter is null
.
* Note: The "schema-location"
parameter is ignored
* unless the "schema-type" parameter value is set. It is strongly
* recommended that Document.documentURI
will be set so that an
* implementation can successfully resolve any external entities referenced.
"schema-type"
DOMString
object containing an absolute URI
* and representing the type of the schema language used to validate a
* document against. Note that no lexical checking is done on the absolute
* URI. If this parameter is not set, a default value may be provided by
* the implementation, based on the schema languages supported and on the
* schema language used at load time. If no value is provided, this
* parameter is null
.
* Note: For XML Schema [XML Schema Part 1]
* , applications must use the value
* "http://www.w3.org/2001/XMLSchema"
. For XML DTD [XML 1.0],
* applications must use the value
* "http://www.w3.org/TR/REC-xml"
. Other schema languages are
* outside the scope of the W3C and therefore should recommend an absolute
* URI in order to use this method.
"split-cdata-sections"
true
DOMError.type
equals to
* "cdata-sections-splitted"
and
* DOMError.relatedData
equals to the first
* CDATASection
node in document order resulting from the split.false
CDATASection
contains an
* unrepresentable character."validate"
true
true
. This parameter will reevaluate:
* Attr.specified
equals to false
, as specified in
* the description of the Attr
interface;
* Text.isElementContentWhitespace
for all
* Text
nodes;
* Attr.isId
for all Attr
nodes;
* Element.schemaTypeInfo
and Attr.schemaTypeInfo
.
* Note: "validate-if-schema" and "validate" are mutually
* exclusive, setting one of them to true
will set the other
* one to false
. Applications should also consider setting the
* parameter "well-formed" to true
, which is the default for
* that option, when validating the document.
false
true
* . "validate-if-schema"
true
true
.
* Note: "validate-if-schema" and "validate" are mutually
* exclusive, setting one of them to true
will set the other
* one to false
.
false
true
. "well-formed"
true
Document.xmlVersion
:
* Node.nodeName
contains invalid characters according to its
* node type and generate a DOMError
of type
* "wf-invalid-character-in-node-name"
, with a
* DOMError.SEVERITY_ERROR
severity, if necessary;
* Attr
, Element
,
* Comment
, Text
, CDATASection
nodes
* for invalid characters and generate a DOMError
of type
* "wf-invalid-character"
, with a
* DOMError.SEVERITY_ERROR
severity, if necessary;
* ProcessingInstruction
nodes for invalid
* characters and generate a DOMError
of type
* "wf-invalid-character"
, with a
* DOMError.SEVERITY_ERROR
severity, if necessary;
* false
The resolution of the system identifiers associated with entities is
* done using Document.documentURI
. However, when the feature
* "LS" defined in [DOM Level 3 Load and Save]
* is supported by the DOM implementation, the parameter
* "resource-resolver" can also be used on DOMConfiguration
* objects attached to Document
nodes. If this parameter is
* set, Document.normalizeDocument()
will invoke the resource
* resolver instead of using Document.documentURI
.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface DOMConfiguration {
/**
* Set the value of a parameter.
* @param name The name of the parameter to set.
* @param value The new value or null
if the user wishes to
* unset the parameter. While the type of the value parameter is
* defined as DOMUserData
, the object type must match the
* type defined by the definition of the parameter. For example, if
* the parameter is "error-handler", the value must be of type
* DOMErrorHandler
.
* @exception DOMException
* NOT_FOUND_ERR: Raised when the parameter name is not recognized.
*
NOT_SUPPORTED_ERR: Raised when the parameter name is recognized
* but the requested value cannot be set.
*
TYPE_MISMATCH_ERR: Raised if the value type for this parameter
* name is incompatible with the expected value type.
*/
public void setParameter(String name,
Object value)
throws DOMException;
/**
* Return the value of a parameter if known.
* @param name The name of the parameter.
* @return The current object associated with the specified parameter or
* null
if no object has been associated or if the
* parameter is not supported.
* @exception DOMException
* NOT_FOUND_ERR: Raised when the parameter name is not recognized.
*/
public Object getParameter(String name)
throws DOMException;
/**
* Check if setting a parameter to a specific value is supported.
* @param name The name of the parameter to check.
* @param value An object. if null
, the returned value is
* true
.
* @return true
if the parameter could be successfully set
* to the specified value, or false
if the parameter is
* not recognized or the requested value is not supported. This does
* not change the current value of the parameter itself.
*/
public boolean canSetParameter(String name,
Object value);
/**
* The list of the parameters supported by this
* DOMConfiguration
object and for which at least one value
* can be set by the application. Note that this list can also contain
* parameter names defined outside this specification.
*/
public DOMStringList getParameterNames();
}
org/w3c/dom/DOMError.java 100644 0 0 6660 11146172407 12556 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* DOMError
is an interface that describes an error.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface DOMError {
// ErrorSeverity
/**
* The severity of the error described by the DOMError
is
* warning. A SEVERITY_WARNING
will not cause the
* processing to stop, unless DOMErrorHandler.handleError()
* returns false
.
*/
public static final short SEVERITY_WARNING = 1;
/**
* The severity of the error described by the DOMError
is
* error. A SEVERITY_ERROR
may not cause the processing to
* stop if the error can be recovered, unless
* DOMErrorHandler.handleError()
returns false
.
*/
public static final short SEVERITY_ERROR = 2;
/**
* The severity of the error described by the DOMError
is
* fatal error. A SEVERITY_FATAL_ERROR
will cause the
* normal processing to stop. The return value of
* DOMErrorHandler.handleError()
is ignored unless the
* implementation chooses to continue, in which case the behavior
* becomes undefined.
*/
public static final short SEVERITY_FATAL_ERROR = 3;
/**
* The severity of the error, either SEVERITY_WARNING
,
* SEVERITY_ERROR
, or SEVERITY_FATAL_ERROR
.
*/
public short getSeverity();
/**
* An implementation specific string describing the error that occurred.
*/
public String getMessage();
/**
* A DOMString
indicating which related data is expected in
* relatedData
. Users should refer to the specification of
* the error in order to find its DOMString
type and
* relatedData
definitions if any.
*
Note: As an example,
* Document.normalizeDocument()
does generate warnings when
* the "split-cdata-sections" parameter is in use. Therefore, the method
* generates a SEVERITY_WARNING
with type
* "cdata-sections-splitted"
and the first
* CDATASection
node in document order resulting from the
* split is returned by the relatedData
attribute.
*/
public String getType();
/**
* The related platform dependent exception if any.
*/
public Object getRelatedException();
/**
* The related DOMError.type
dependent data if any.
*/
public Object getRelatedData();
/**
* The location of the error.
*/
public DOMLocator getLocation();
}
org/w3c/dom/DOMErrorHandler.java 100644 0 0 4300 11146172407 14041 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* DOMErrorHandler
is a callback interface that the DOM
* implementation can call when reporting errors that happens while
* processing XML data, or when doing some other processing (e.g. validating
* a document). A DOMErrorHandler
object can be attached to a
* Document
using the "error-handler" on the
* DOMConfiguration
interface. If more than one error needs to
* be reported during an operation, the sequence and numbers of the errors
* passed to the error handler are implementation dependent.
*
The application that is using the DOM implementation is expected to * implement this interface. *
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface DOMErrorHandler {
/**
* This method is called on the error handler when an error occurs.
*
If an exception is thrown from this method, it is considered to be
* equivalent of returning true
.
* @param error The error object that describes the error. This object
* may be reused by the DOM implementation across multiple calls to
* the handleError
method.
* @return If the handleError
method returns
* false
, the DOM implementation should stop the current
* processing when possible. If the method returns true
,
* the processing may continue depending on
* DOMError.severity
.
*/
public boolean handleError(DOMError error);
}
org/w3c/dom/DOMException.java 100644 0 0 12637 11146172407 13444 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* DOM operations only raise exceptions in "exceptional" circumstances, i.e.,
* when an operation is impossible to perform (either for logical reasons,
* because data is lost, or because the implementation has become unstable).
* In general, DOM methods return specific error values in ordinary
* processing situations, such as out-of-bound errors when using
* NodeList
.
*
Implementations should raise other exceptions under other circumstances.
* For example, implementations should raise an implementation-dependent
* exception if a null
argument is passed when null
* was not expected.
*
Some languages and object systems do not support the concept of * exceptions. For such systems, error conditions may be indicated using * native error reporting mechanisms. For some bindings, for example, * methods may return error codes similar to those listed in the * corresponding method descriptions. *
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public class DOMException extends RuntimeException {
public DOMException(short code, String message) {
super(message);
this.code = code;
}
public short code;
// ExceptionCode
/**
* If index or size is negative, or greater than the allowed value.
*/
public static final short INDEX_SIZE_ERR = 1;
/**
* If the specified range of text does not fit into a
* DOMString
.
*/
public static final short DOMSTRING_SIZE_ERR = 2;
/**
* If any Node
is inserted somewhere it doesn't belong.
*/
public static final short HIERARCHY_REQUEST_ERR = 3;
/**
* If a Node
is used in a different document than the one
* that created it (that doesn't support it).
*/
public static final short WRONG_DOCUMENT_ERR = 4;
/**
* If an invalid or illegal character is specified, such as in an XML name.
*/
public static final short INVALID_CHARACTER_ERR = 5;
/**
* If data is specified for a Node
which does not support
* data.
*/
public static final short NO_DATA_ALLOWED_ERR = 6;
/**
* If an attempt is made to modify an object where modifications are not
* allowed.
*/
public static final short NO_MODIFICATION_ALLOWED_ERR = 7;
/**
* If an attempt is made to reference a Node
in a context
* where it does not exist.
*/
public static final short NOT_FOUND_ERR = 8;
/**
* If the implementation does not support the requested type of object or
* operation.
*/
public static final short NOT_SUPPORTED_ERR = 9;
/**
* If an attempt is made to add an attribute that is already in use
* elsewhere.
*/
public static final short INUSE_ATTRIBUTE_ERR = 10;
/**
* If an attempt is made to use an object that is not, or is no longer,
* usable.
* @since DOM Level 2
*/
public static final short INVALID_STATE_ERR = 11;
/**
* If an invalid or illegal string is specified.
* @since DOM Level 2
*/
public static final short SYNTAX_ERR = 12;
/**
* If an attempt is made to modify the type of the underlying object.
* @since DOM Level 2
*/
public static final short INVALID_MODIFICATION_ERR = 13;
/**
* If an attempt is made to create or change an object in a way which is
* incorrect with regard to namespaces.
* @since DOM Level 2
*/
public static final short NAMESPACE_ERR = 14;
/**
* If a parameter or an operation is not supported by the underlying
* object.
* @since DOM Level 2
*/
public static final short INVALID_ACCESS_ERR = 15;
/**
* If a call to a method such as insertBefore
or
* removeChild
would make the Node
invalid
* with respect to "partial validity", this exception would be raised
* and the operation would not be done. This code is used in [DOM Level 3 Validation]
* . Refer to this specification for further information.
* @since DOM Level 3
*/
public static final short VALIDATION_ERR = 16;
/**
* If the type of an object is incompatible with the expected type of the
* parameter associated to the object.
* @since DOM Level 3
*/
public static final short TYPE_MISMATCH_ERR = 17;
// Added serialVersionUID to preserve binary compatibility
static final long serialVersionUID = 6627732366795969916L;
}
org/w3c/dom/DOMImplementation.java 100644 0 0 17406 11146172407 14472 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The DOMImplementation
interface provides a number of methods
* for performing operations that are independent of any particular instance
* of the document object model.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface DOMImplementation {
/**
* Test if the DOM implementation implements a specific feature and
* version, as specified in .
* @param feature The name of the feature to test.
* @param version This is the version number of the feature to test.
* @return true
if the feature is implemented in the
* specified version, false
otherwise.
*/
public boolean hasFeature(String feature,
String version);
/**
* Creates an empty DocumentType
node. Entity declarations
* and notations are not made available. Entity reference expansions and
* default attribute additions do not occur..
* @param qualifiedName The qualified name of the document type to be
* created.
* @param publicId The external subset public identifier.
* @param systemId The external subset system identifier.
* @return A new DocumentType
node with
* Node.ownerDocument
set to null
.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified qualified name is not
* an XML name according to [XML 1.0].
*
NAMESPACE_ERR: Raised if the qualifiedName
is
* malformed.
*
NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML" and the language exposed through the
* Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public DocumentType createDocumentType(String qualifiedName,
String publicId,
String systemId)
throws DOMException;
/**
* Creates a DOM Document object of the specified type with its document
* element.
*
Note that based on the DocumentType
given to create
* the document, the implementation may instantiate specialized
* Document
objects that support additional features than
* the "Core", such as "HTML" [DOM Level 2 HTML]
* . On the other hand, setting the DocumentType
after the
* document was created makes this very unlikely to happen.
* Alternatively, specialized Document
creation methods,
* such as createHTMLDocument
[DOM Level 2 HTML]
* , can be used to obtain specific types of Document
* objects.
* @param namespaceURI The namespace URI of the document element to
* create or null
.
* @param qualifiedName The qualified name of the document element to be
* created or null
.
* @param doctype The type of document to be created or null
.
* When doctype
is not null
, its
* Node.ownerDocument
attribute is set to the document
* being created.
* @return A new Document
object with its document element.
* If the NamespaceURI
, qualifiedName
, and
* doctype
are null
, the returned
* Document
is empty with no document element.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified qualified name is not
* an XML name according to [XML 1.0].
*
NAMESPACE_ERR: Raised if the qualifiedName
is
* malformed, if the qualifiedName
has a prefix and the
* namespaceURI
is null
, or if the
* qualifiedName
is null
and the
* namespaceURI
is different from null
, or
* if the qualifiedName
has a prefix that is "xml" and
* the namespaceURI
is different from "
* http://www.w3.org/XML/1998/namespace" [XML Namespaces]
* , or if the DOM implementation does not support the
* "XML"
feature but a non-null namespace URI was
* provided, since namespaces were defined by XML.
*
WRONG_DOCUMENT_ERR: Raised if doctype
has already
* been used with a different document or was created from a different
* implementation.
*
NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML" and the language exposed through the
* Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public Document createDocument(String namespaceURI,
String qualifiedName,
DocumentType doctype)
throws DOMException;
/**
* This method returns a specialized object which implements the
* specialized APIs of the specified feature and version, as specified
* in . The specialized object may also be obtained by using
* binding-specific casting methods but is not necessarily expected to,
* as discussed in . This method also allow the implementation to
* provide specialized objects which do not support the
* DOMImplementation
interface.
* @param feature The name of the feature requested. Note that any plus
* sign "+" prepended to the name of the feature will be ignored since
* it is not significant in the context of this method.
* @param version This is the version number of the feature to test.
* @return Returns an object which implements the specialized APIs of
* the specified feature and version, if any, or null
if
* there is no object which implements interfaces associated with that
* feature. If the DOMObject
returned by this method
* implements the DOMImplementation
interface, it must
* delegate to the primary core DOMImplementation
and not
* return results inconsistent with the primary core
* DOMImplementation
such as hasFeature
,
* getFeature
, etc.
* @since DOM Level 3
*/
public Object getFeature(String feature,
String version);
}
org/w3c/dom/DOMImplementationList.java 100644 0 0 3500 11146172407 15274 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The DOMImplementationList
interface provides the abstraction
* of an ordered collection of DOM implementations, without defining or
* constraining how this collection is implemented. The items in the
* DOMImplementationList
are accessible via an integral index,
* starting from 0.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface DOMImplementationList {
/**
* Returns the index
th item in the collection. If
* index
is greater than or equal to the number of
* DOMImplementation
s in the list, this returns
* null
.
* @param index Index into the collection.
* @return The DOMImplementation
at the index
* th position in the DOMImplementationList
, or
* null
if that is not a valid index.
*/
public DOMImplementation item(int index);
/**
* The number of DOMImplementation
s in the list. The range
* of valid child node indices is 0 to length-1
inclusive.
*/
public int getLength();
}
org/w3c/dom/DOMImplementationSource.java 100644 0 0 5611 11146172407 15626 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* This interface permits a DOM implementer to supply one or more
* implementations, based upon requested features and versions, as specified
* in . Each implemented DOMImplementationSource
object is
* listed in the binding-specific list of available sources so that its
* DOMImplementation
objects are made available.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface DOMImplementationSource {
/**
* A method to request the first DOM implementation that supports the
* specified features.
* @param features A string that specifies which features and versions
* are required. This is a space separated list in which each feature
* is specified by its name optionally followed by a space and a
* version number. This method returns the first item of the list
* returned by getDOMImplementationList
. As an example,
* the string "XML 3.0 Traversal +Events 2.0"
will
* request a DOM implementation that supports the module "XML" for its
* 3.0 version, a module that support of the "Traversal" module for
* any version, and the module "Events" for its 2.0 version. The
* module "Events" must be accessible using the method
* Node.getFeature()
and
* DOMImplementation.getFeature()
.
* @return The first DOM implementation that support the desired
* features, or null
if this source has none.
*/
public DOMImplementation getDOMImplementation(String features);
/**
* A method to request a list of DOM implementations that support the
* specified features and versions, as specified in .
* @param features A string that specifies which features and versions
* are required. This is a space separated list in which each feature
* is specified by its name optionally followed by a space and a
* version number. This is something like: "XML 3.0 Traversal +Events
* 2.0"
* @return A list of DOM implementations that support the desired
* features.
*/
public DOMImplementationList getDOMImplementationList(String features);
}
org/w3c/dom/DOMLocator.java 100644 0 0 3665 11146172407 13072 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* DOMLocator
is an interface that describes a location (e.g.
* where an error occurred).
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface DOMLocator {
/**
* The line number this locator is pointing to, or -1
if
* there is no column number available.
*/
public int getLineNumber();
/**
* The column number this locator is pointing to, or -1
if
* there is no column number available.
*/
public int getColumnNumber();
/**
* The byte offset into the input source this locator is pointing to or
* -1
if there is no byte offset available.
*/
public int getByteOffset();
/**
* The UTF-16, as defined in [Unicode] and Amendment 1 of [ISO/IEC 10646], offset into the input source this locator is pointing to or
* -1
if there is no UTF-16 offset available.
*/
public int getUtf16Offset();
/**
* The node this locator is pointing to, or null
if no node
* is available.
*/
public Node getRelatedNode();
/**
* The URI this locator is pointing to, or null
if no URI is
* available.
*/
public String getUri();
}
org/w3c/dom/DOMStringList.java 100644 0 0 4031 11146172407 13555 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The DOMStringList
interface provides the abstraction of an
* ordered collection of DOMString
values, without defining or
* constraining how this collection is implemented. The items in the
* DOMStringList
are accessible via an integral index, starting
* from 0.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface DOMStringList {
/**
* Returns the index
th item in the collection. If
* index
is greater than or equal to the number of
* DOMString
s in the list, this returns null
.
* @param index Index into the collection.
* @return The DOMString
at the index
th
* position in the DOMStringList
, or null
if
* that is not a valid index.
*/
public String item(int index);
/**
* The number of DOMString
s in the list. The range of valid
* child node indices is 0 to length-1
inclusive.
*/
public int getLength();
/**
* Test if a string is part of this DOMStringList
.
* @param str The string to look for.
* @return true
if the string has been found,
* false
otherwise.
*/
public boolean contains(String str);
}
org/w3c/dom/Document.java 100644 0 0 127554 11146172407 12751 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The Document
interface represents the entire HTML or XML
* document. Conceptually, it is the root of the document tree, and provides
* the primary access to the document's data.
*
Since elements, text nodes, comments, processing instructions, etc.
* cannot exist outside the context of a Document
, the
* Document
interface also contains the factory methods needed
* to create these objects. The Node
objects created have a
* ownerDocument
attribute which associates them with the
* Document
within whose context they were created.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Document extends Node {
/**
* The Document Type Declaration (see DocumentType
)
* associated with this document. For XML documents without a document
* type declaration this returns null
. For HTML documents,
* a DocumentType
object may be returned, independently of
* the presence or absence of document type declaration in the HTML
* document.
*
This provides direct access to the DocumentType
node,
* child node of this Document
. This node can be set at
* document creation time and later changed through the use of child
* nodes manipulation methods, such as Node.insertBefore
,
* or Node.replaceChild
. Note, however, that while some
* implementations may instantiate different types of
* Document
objects supporting additional features than the
* "Core", such as "HTML" [DOM Level 2 HTML]
* , based on the DocumentType
specified at creation time,
* changing it afterwards is very unlikely to result in a change of the
* features supported.
* @since DOM Level 3
*/
public DocumentType getDoctype();
/**
* The DOMImplementation
object that handles this document. A
* DOM application may use objects from multiple implementations.
*/
public DOMImplementation getImplementation();
/**
* This is a convenience attribute that allows direct access to the child
* node that is the document element of the document.
*/
public Element getDocumentElement();
/**
* Creates an element of the type specified. Note that the instance
* returned implements the Element
interface, so attributes
* can be specified directly on the returned object.
*
In addition, if there are known attributes with default values,
* Attr
nodes representing them are automatically created
* and attached to the element.
*
To create an element with a qualified name and namespace URI, use
* the createElementNS
method.
* @param tagName The name of the element type to instantiate. For XML,
* this is case-sensitive, otherwise it depends on the
* case-sensitivity of the markup language in use. In that case, the
* name is mapped to the canonical form of that markup by the DOM
* implementation.
* @return A new Element
object with the
* nodeName
attribute set to tagName
, and
* localName
, prefix
, and
* namespaceURI
set to null
.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified name is not an XML
* name according to the XML version in use specified in the
* Document.xmlVersion
attribute.
*/
public Element createElement(String tagName)
throws DOMException;
/**
* Creates an empty DocumentFragment
object.
* @return A new DocumentFragment
.
*/
public DocumentFragment createDocumentFragment();
/**
* Creates a Text
node given the specified string.
* @param data The data for the node.
* @return The new Text
object.
*/
public Text createTextNode(String data);
/**
* Creates a Comment
node given the specified string.
* @param data The data for the node.
* @return The new Comment
object.
*/
public Comment createComment(String data);
/**
* Creates a CDATASection
node whose value is the specified
* string.
* @param data The data for the CDATASection
contents.
* @return The new CDATASection
object.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
*/
public CDATASection createCDATASection(String data)
throws DOMException;
/**
* Creates a ProcessingInstruction
node given the specified
* name and data strings.
* @param target The target part of the processing instruction.Unlike
* Document.createElementNS
or
* Document.createAttributeNS
, no namespace well-formed
* checking is done on the target name. Applications should invoke
* Document.normalizeDocument()
with the parameter "
* namespaces" set to true
in order to ensure that the
* target name is namespace well-formed.
* @param data The data for the node.
* @return The new ProcessingInstruction
object.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified target is not an XML
* name according to the XML version in use specified in the
* Document.xmlVersion
attribute.
*
NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
*/
public ProcessingInstruction createProcessingInstruction(String target,
String data)
throws DOMException;
/**
* Creates an Attr
of the given name. Note that the
* Attr
instance can then be set on an Element
* using the setAttributeNode
method.
*
To create an attribute with a qualified name and namespace URI, use
* the createAttributeNS
method.
* @param name The name of the attribute.
* @return A new Attr
object with the nodeName
* attribute set to name
, and localName
,
* prefix
, and namespaceURI
set to
* null
. The value of the attribute is the empty string.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified name is not an XML
* name according to the XML version in use specified in the
* Document.xmlVersion
attribute.
*/
public Attr createAttribute(String name)
throws DOMException;
/**
* Creates an EntityReference
object. In addition, if the
* referenced entity is known, the child list of the
* EntityReference
node is made the same as that of the
* corresponding Entity
node.
*
Note: If any descendant of the Entity
node has
* an unbound namespace prefix, the corresponding descendant of the
* created EntityReference
node is also unbound; (its
* namespaceURI
is null
). The DOM Level 2 and
* 3 do not support any mechanism to resolve namespace prefixes in this
* case.
* @param name The name of the entity to reference.Unlike
* Document.createElementNS
or
* Document.createAttributeNS
, no namespace well-formed
* checking is done on the entity name. Applications should invoke
* Document.normalizeDocument()
with the parameter "
* namespaces" set to true
in order to ensure that the
* entity name is namespace well-formed.
* @return The new EntityReference
object.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified name is not an XML
* name according to the XML version in use specified in the
* Document.xmlVersion
attribute.
*
NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
*/
public EntityReference createEntityReference(String name)
throws DOMException;
/**
* Returns a NodeList
of all the Elements
in
* document order with a given tag name and are contained in the
* document.
* @param tagname The name of the tag to match on. The special value "*"
* matches all tags. For XML, the tagname
parameter is
* case-sensitive, otherwise it depends on the case-sensitivity of the
* markup language in use.
* @return A new NodeList
object containing all the matched
* Elements
.
*/
public NodeList getElementsByTagName(String tagname);
/**
* Imports a node from another document to this document, without altering
* or removing the source node from the original document; this method
* creates a new copy of the source node. The returned node has no
* parent; (parentNode
is null
).
*
For all nodes, importing a node creates a node object owned by the
* importing document, with attribute values identical to the source
* node's nodeName
and nodeType
, plus the
* attributes related to namespaces (prefix
,
* localName
, and namespaceURI
). As in the
* cloneNode
operation, the source node is not altered.
* User data associated to the imported node is not carried over.
* However, if any UserDataHandlers
has been specified
* along with the associated data these handlers will be called with the
* appropriate parameters before this method returns.
*
Additional information is copied as appropriate to the
* nodeType
, attempting to mirror the behavior expected if
* a fragment of XML or HTML source was copied from one document to
* another, recognizing that the two documents may have different DTDs
* in the XML case. The following list describes the specifics for each
* type of node.
*
ownerElement
attribute
* is set to null
and the specified
flag is
* set to true
on the generated Attr
. The
* descendants of the source Attr
are recursively imported
* and the resulting nodes reassembled to form the corresponding subtree.
* Note that the deep
parameter has no effect on
* Attr
nodes; they always carry their children with them
* when imported.deep
option
* was set to true
, the descendants of the source
* DocumentFragment
are recursively imported and the
* resulting nodes reassembled under the imported
* DocumentFragment
to form the corresponding subtree.
* Otherwise, this simply generates an empty
* DocumentFragment
.Document
* nodes cannot be imported.DocumentType
* nodes cannot be imported.Attr
nodes are attached to the generated
* Element
. Default attributes are not copied, though if the document being imported into defines default
* attributes for this element name, those are assigned. If the
* importNode
deep
parameter was set to
* true
, the descendants of the source element are
* recursively imported and the resulting nodes reassembled to form the
* corresponding subtree.Entity
nodes can be
* imported, however in the current release of the DOM the
* DocumentType
is readonly. Ability to add these imported
* nodes to a DocumentType
will be considered for addition
* to a future release of the DOM.On import, the publicId
,
* systemId
, and notationName
attributes are
* copied. If a deep
import is requested, the descendants
* of the the source Entity
are recursively imported and
* the resulting nodes reassembled to form the corresponding subtree.EntityReference
itself is
* copied, even if a deep
import is requested, since the
* source and destination documents might have defined the entity
* differently. If the document being imported into provides a
* definition for this entity name, its value is assigned.Notation
nodes can be imported, however in the current
* release of the DOM the DocumentType
is readonly. Ability
* to add these imported nodes to a DocumentType
will be
* considered for addition to a future release of the DOM.On import, the
* publicId
and systemId
attributes are copied.
* Note that the deep
parameter has no effect on this type
* of nodes since they cannot have any children.target
and data
values from those of the
* source node.Note that the deep
parameter has no effect
* on this type of nodes since they cannot have any children.CharacterData
copy their data
and
* length
attributes from those of the source node.Note
* that the deep
parameter has no effect on these types of
* nodes since they cannot have any children.true
, recursively import the subtree under
* the specified node; if false
, import only the node
* itself, as explained above. This has no effect on nodes that cannot
* have any children, and on Attr
, and
* EntityReference
nodes.
* @return The imported node that belongs to this Document
.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the type of node being imported is not
* supported.
* Document.xmlVersion
attribute. This may happen when
* importing an XML 1.1 [XML 1.1] element
* into an XML 1.0 document, for instance.
* @since DOM Level 2
*/
public Node importNode(Node importedNode,
boolean deep)
throws DOMException;
/**
* Creates an element of the given qualified name and namespace URI.
* null
as the
* namespaceURI parameter for methods if they wish to have no namespace.
* @param namespaceURI The namespace URI of the element to create.
* @param qualifiedName The qualified name of the element type to
* instantiate.
* @return A new Element
object with the following
* attributes:
* Attribute | *Value | *
---|---|
Node.nodeName |
*
* qualifiedName |
*
Node.namespaceURI |
*
* namespaceURI |
*
Node.prefix |
* prefix, extracted
* from qualifiedName , or null if there is
* no prefix |
*
Node.localName |
* local name, extracted from
* qualifiedName |
*
Element.tagName |
*
* qualifiedName |
*
qualifiedName
is not an XML name according to the XML
* version in use specified in the Document.xmlVersion
* attribute.
* qualifiedName
is a
* malformed qualified name, if the qualifiedName
has a
* prefix and the namespaceURI
is null
, or
* if the qualifiedName
has a prefix that is "xml" and
* the namespaceURI
is different from "
* http://www.w3.org/XML/1998/namespace" [XML Namespaces]
* , or if the qualifiedName
or its prefix is "xmlns" and
* the namespaceURI
is different from "http://www.w3.org/2000/xmlns/", or if the namespaceURI
is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName
nor its prefix is "xmlns".
* "XML"
feature, since namespaces were
* defined by XML.
* @since DOM Level 2
*/
public Element createElementNS(String namespaceURI,
String qualifiedName)
throws DOMException;
/**
* Creates an attribute of the given qualified name and namespace URI.
* null
as the
* namespaceURI
parameter for methods if they wish to have
* no namespace.
* @param namespaceURI The namespace URI of the attribute to create.
* @param qualifiedName The qualified name of the attribute to
* instantiate.
* @return A new Attr
object with the following attributes:
* * Attribute | *Value | *
---|---|
Node.nodeName |
* qualifiedName | *
* Node.namespaceURI |
* namespaceURI |
*
* Node.prefix |
* prefix, extracted from
* qualifiedName , or null if there is no
* prefix |
*
Node.localName |
* local name, extracted from
* qualifiedName |
*
Attr.name |
*
* qualifiedName |
*
Node.nodeValue |
* the empty * string | *
qualifiedName
is not an XML name according to the XML
* version in use specified in the Document.xmlVersion
* attribute.
* qualifiedName
is a
* malformed qualified name, if the qualifiedName
has a
* prefix and the namespaceURI
is null
, if
* the qualifiedName
has a prefix that is "xml" and the
* namespaceURI
is different from "
* http://www.w3.org/XML/1998/namespace", if the qualifiedName
or its prefix is "xmlns" and the
* namespaceURI
is different from "http://www.w3.org/2000/xmlns/", or if the namespaceURI
is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName
nor its prefix is "xmlns".
* "XML"
feature, since namespaces were
* defined by XML.
* @since DOM Level 2
*/
public Attr createAttributeNS(String namespaceURI,
String qualifiedName)
throws DOMException;
/**
* Returns a NodeList
of all the Elements
with a
* given local name and namespace URI in document order.
* @param namespaceURI The namespace URI of the elements to match on. The
* special value "*"
matches all namespaces.
* @param localName The local name of the elements to match on. The
* special value "*" matches all local names.
* @return A new NodeList
object containing all the matched
* Elements
.
* @since DOM Level 2
*/
public NodeList getElementsByTagNameNS(String namespaceURI,
String localName);
/**
* Returns the Element
that has an ID attribute with the
* given value. If no such element exists, this returns null
* . If more than one element has an ID attribute with that value, what
* is returned is undefined.
* Attr.isId
to determine if an attribute is of type ID.
* Note: Attributes with the name "ID" or "id" are not of type
* ID unless so defined.
* @param elementId The unique id
value for an element.
* @return The matching element or null
if there is none.
* @since DOM Level 2
*/
public Element getElementById(String elementId);
/**
* An attribute specifying the encoding used for this document at the time
* of the parsing. This is null
when it is not known, such
* as when the Document
was created in memory.
* @since DOM Level 3
*/
public String getInputEncoding();
/**
* An attribute specifying, as part of the XML declaration, the encoding of this document. This is null
when
* unspecified or when it is not known, such as when the
* Document
was created in memory.
* @since DOM Level 3
*/
public String getXmlEncoding();
/**
* An attribute specifying, as part of the XML declaration, whether this document is standalone. This is false
when
* unspecified.
*
Note: No verification is done on the value when setting
* this attribute. Applications should use
* Document.normalizeDocument()
with the "validate"
* parameter to verify if the value matches the validity
* constraint for standalone document declaration as defined in [XML 1.0].
* @since DOM Level 3
*/
public boolean getXmlStandalone();
/**
* An attribute specifying, as part of the XML declaration, whether this document is standalone. This is false
when
* unspecified.
*
Note: No verification is done on the value when setting
* this attribute. Applications should use
* Document.normalizeDocument()
with the "validate"
* parameter to verify if the value matches the validity
* constraint for standalone document declaration as defined in [XML 1.0].
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if this document does not support the
* "XML" feature.
* @since DOM Level 3
*/
public void setXmlStandalone(boolean xmlStandalone)
throws DOMException;
/**
* An attribute specifying, as part of the XML declaration, the version number of this document. If there is no declaration and if
* this document supports the "XML" feature, the value is
* "1.0"
. If this document does not support the "XML"
* feature, the value is always null
. Changing this
* attribute will affect methods that check for invalid characters in
* XML names. Application should invoke
* Document.normalizeDocument()
in order to check for
* invalid characters in the Node
s that are already part of
* this Document
.
*
DOM applications may use the
* DOMImplementation.hasFeature(feature, version)
method
* with parameter values "XMLVersion" and "1.0" (respectively) to
* determine if an implementation supports [XML 1.0]. DOM
* applications may use the same method with parameter values
* "XMLVersion" and "1.1" (respectively) to determine if an
* implementation supports [XML 1.1]. In both
* cases, in order to support XML, an implementation must also support
* the "XML" feature defined in this specification. Document
* objects supporting a version of the "XMLVersion" feature must not
* raise a NOT_SUPPORTED_ERR
exception for the same version
* number when using Document.xmlVersion
.
* @since DOM Level 3
*/
public String getXmlVersion();
/**
* An attribute specifying, as part of the XML declaration, the version number of this document. If there is no declaration and if
* this document supports the "XML" feature, the value is
* "1.0"
. If this document does not support the "XML"
* feature, the value is always null
. Changing this
* attribute will affect methods that check for invalid characters in
* XML names. Application should invoke
* Document.normalizeDocument()
in order to check for
* invalid characters in the Node
s that are already part of
* this Document
.
*
DOM applications may use the
* DOMImplementation.hasFeature(feature, version)
method
* with parameter values "XMLVersion" and "1.0" (respectively) to
* determine if an implementation supports [XML 1.0]. DOM
* applications may use the same method with parameter values
* "XMLVersion" and "1.1" (respectively) to determine if an
* implementation supports [XML 1.1]. In both
* cases, in order to support XML, an implementation must also support
* the "XML" feature defined in this specification. Document
* objects supporting a version of the "XMLVersion" feature must not
* raise a NOT_SUPPORTED_ERR
exception for the same version
* number when using Document.xmlVersion
.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the version is set to a value that is
* not supported by this Document
or if this document
* does not support the "XML" feature.
* @since DOM Level 3
*/
public void setXmlVersion(String xmlVersion)
throws DOMException;
/**
* An attribute specifying whether error checking is enforced or not. When
* set to false
, the implementation is free to not test
* every possible error case normally defined on DOM operations, and not
* raise any DOMException
on DOM operations or report
* errors while using Document.normalizeDocument()
. In case
* of error, the behavior is undefined. This attribute is
* true
by default.
* @since DOM Level 3
*/
public boolean getStrictErrorChecking();
/**
* An attribute specifying whether error checking is enforced or not. When
* set to false
, the implementation is free to not test
* every possible error case normally defined on DOM operations, and not
* raise any DOMException
on DOM operations or report
* errors while using Document.normalizeDocument()
. In case
* of error, the behavior is undefined. This attribute is
* true
by default.
* @since DOM Level 3
*/
public void setStrictErrorChecking(boolean strictErrorChecking);
/**
* The location of the document or null
if undefined or if
* the Document
was created using
* DOMImplementation.createDocument
. No lexical checking is
* performed when setting this attribute; this could result in a
* null
value returned when using Node.baseURI
* .
*
Beware that when the Document
supports the feature
* "HTML" [DOM Level 2 HTML]
* , the href attribute of the HTML BASE element takes precedence over
* this attribute when computing Node.baseURI
.
* @since DOM Level 3
*/
public String getDocumentURI();
/**
* The location of the document or null
if undefined or if
* the Document
was created using
* DOMImplementation.createDocument
. No lexical checking is
* performed when setting this attribute; this could result in a
* null
value returned when using Node.baseURI
* .
*
Beware that when the Document
supports the feature
* "HTML" [DOM Level 2 HTML]
* , the href attribute of the HTML BASE element takes precedence over
* this attribute when computing Node.baseURI
.
* @since DOM Level 3
*/
public void setDocumentURI(String documentURI);
/**
* Attempts to adopt a node from another document to this document. If
* supported, it changes the ownerDocument
of the source
* node, its children, as well as the attached attribute nodes if there
* are any. If the source node has a parent it is first removed from the
* child list of its parent. This effectively allows moving a subtree
* from one document to another (unlike importNode()
which
* create a copy of the source node instead of moving it). When it
* fails, applications should use Document.importNode()
* instead. Note that if the adopted node is already part of this
* document (i.e. the source and target document are the same), this
* method still has the effect of removing the source node from the
* child list of its parent, if any. The following list describes the
* specifics for each type of node.
*
ownerElement
attribute is set to null
and
* the specified
flag is set to true
on the
* adopted Attr
. The descendants of the source
* Attr
are recursively adopted.Document
nodes cannot be adopted.DocumentType
nodes cannot be adopted.Entity
nodes cannot be adopted.EntityReference
node itself is adopted, the
* descendants are discarded, since the source and destination documents
* might have defined the entity differently. If the document being
* imported into provides a definition for this entity name, its value
* is assigned.Notation
nodes cannot be
* adopted.Note: Since it does not create new nodes unlike the
* Document.importNode()
method, this method does not raise
* an INVALID_CHARACTER_ERR
exception, and applications
* should use the Document.normalizeDocument()
method to
* check if an imported name is not an XML name according to the XML
* version in use.
* @param source The node to move into this document.
* @return The adopted node, or null
if this operation
* fails, such as when the source node comes from a different
* implementation.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the source node is of type
* DOCUMENT
, DOCUMENT_TYPE
.
*
NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is
* readonly.
* @since DOM Level 3
*/
public Node adoptNode(Node source)
throws DOMException;
/**
* The configuration used when Document.normalizeDocument()
* is invoked.
* @since DOM Level 3
*/
public DOMConfiguration getDomConfig();
/**
* This method acts as if the document was going through a save and load
* cycle, putting the document in a "normal" form. As a consequence,
* this method updates the replacement tree of
* EntityReference
nodes and normalizes Text
* nodes, as defined in the method Node.normalize()
.
*
Otherwise, the actual result depends on the features being set on
* the Document.domConfig
object and governing what
* operations actually take place. Noticeably this method could also
* make the document namespace well-formed according to the algorithm
* described in , check the character normalization, remove the
* CDATASection
nodes, etc. See
* DOMConfiguration
for details.
*
// Keep in the document * the information defined // in the XML Information Set (Java example) * DOMConfiguration docConfig = myDocument.getDomConfig(); * docConfig.setParameter("infoset", Boolean.TRUE); * myDocument.normalizeDocument();* *
Node.nodeName
* contains an invalid character according to the XML version in use,
* errors or warnings (DOMError.SEVERITY_ERROR
or
* DOMError.SEVERITY_WARNING
) will be reported using the
* DOMErrorHandler
object associated with the "error-handler
* " parameter. Note this method might also report fatal errors (
* DOMError.SEVERITY_FATAL_ERROR
) if an implementation
* cannot recover from an error.
* @since DOM Level 3
*/
public void normalizeDocument();
/**
* Rename an existing node of type ELEMENT_NODE
or
* ATTRIBUTE_NODE
.
* Element
its
* attributes are moved to the new node, the new node is inserted at the
* position the old node used to have in its parent's child nodes list
* if it has one, the user data that was attached to the old node is
* attached to the new node.
* Element
only the
* specified attributes are moved, default attributes originated from
* the DTD are updated according to the new element name. In addition,
* the implementation may update default attributes from other schemas.
* Applications should use Document.normalizeDocument()
to
* guarantee these attributes are up-to-date.
* Attr
that is
* attached to an Element
, the node is first removed from
* the Element
attributes map. Then, once renamed, either
* by modifying the existing node or creating a new one as described
* above, it is put back.
* NODE_RENAMED
is fired,
* http://www.w3.org/2001/xml-events
,
* DOMElementNameChanged
} or {
* http://www.w3.org/2001/xml-events
,
* DOMAttributeNameChanged
} is fired.
* ELEMENT_NODE
nor ATTRIBUTE_NODE
,
* or if the implementation does not support the renaming of the
* document element.
* Document.xmlVersion
attribute.
* qualifiedName
is a
* malformed qualified name, if the qualifiedName
has a
* prefix and the namespaceURI
is null
, or
* if the qualifiedName
has a prefix that is "xml" and
* the namespaceURI
is different from "
* http://www.w3.org/XML/1998/namespace" [XML Namespaces]
* . Also raised, when the node being renamed is an attribute, if the
* qualifiedName
, or its prefix, is "xmlns" and the
* namespaceURI
is different from "http://www.w3.org/2000/xmlns/".
* @since DOM Level 3
*/
public Node renameNode(Node n,
String namespaceURI,
String qualifiedName)
throws DOMException;
}
org/w3c/dom/DocumentFragment.java 100644 0 0 6110 11146172407 14355 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* DocumentFragment
is a "lightweight" or "minimal"
* Document
object. It is very common to want to be able to
* extract a portion of a document's tree or to create a new fragment of a
* document. Imagine implementing a user command like cut or rearranging a
* document by moving fragments around. It is desirable to have an object
* which can hold such fragments and it is quite natural to use a Node for
* this purpose. While it is true that a Document
object could
* fulfill this role, a Document
object can potentially be a
* heavyweight object, depending on the underlying implementation. What is
* really needed for this is a very lightweight object.
* DocumentFragment
is such an object.
* Furthermore, various operations -- such as inserting nodes as children
* of another Node
-- may take DocumentFragment
* objects as arguments; this results in all the child nodes of the
* DocumentFragment
being moved to the child list of this node.
*
The children of a DocumentFragment
node are zero or more
* nodes representing the tops of any sub-trees defining the structure of
* the document. DocumentFragment
nodes do not need to be
* well-formed XML documents (although they do need to follow the rules
* imposed upon well-formed XML parsed entities, which can have multiple top
* nodes). For example, a DocumentFragment
might have only one
* child and that child node could be a Text
node. Such a
* structure model represents neither an HTML document nor a well-formed XML
* document.
*
When a DocumentFragment
is inserted into a
* Document
(or indeed any other Node
that may
* take children) the children of the DocumentFragment
and not
* the DocumentFragment
itself are inserted into the
* Node
. This makes the DocumentFragment
very
* useful when the user wishes to create nodes that are siblings; the
* DocumentFragment
acts as the parent of these nodes so that
* the user can use the standard methods from the Node
* interface, such as Node.insertBefore
and
* Node.appendChild
.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface DocumentFragment extends Node {
}
org/w3c/dom/DocumentType.java 100644 0 0 7003 11146172407 13535 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* Each Document
has a doctype
attribute whose value
* is either null
or a DocumentType
object. The
* DocumentType
interface in the DOM Core provides an interface
* to the list of entities that are defined for the document, and little
* else because the effect of namespaces and the various XML schema efforts
* on DTD representation are not clearly understood as of this writing.
*
DOM Level 3 doesn't support editing DocumentType
nodes.
* DocumentType
nodes are read-only.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface DocumentType extends Node {
/**
* The name of DTD; i.e., the name immediately following the
* DOCTYPE
keyword.
*/
public String getName();
/**
* A NamedNodeMap
containing the general entities, both
* external and internal, declared in the DTD. Parameter entities are
* not contained. Duplicates are discarded. For example in:
*
<!DOCTYPE * ex SYSTEM "ex.dtd" [ <!ENTITY foo "foo"> <!ENTITY bar * "bar"> <!ENTITY bar "bar2"> <!ENTITY % baz "baz"> * ]> <ex/>* the interface provides access to
foo
* and the first declaration of bar
but not the second
* declaration of bar
or baz
. Every node in
* this map also implements the Entity
interface.
* entities
cannot be altered in any way.
*/
public NamedNodeMap getEntities();
/**
* A NamedNodeMap
containing the notations declared in the
* DTD. Duplicates are discarded. Every node in this map also implements
* the Notation
interface.
* notations
cannot be altered in any way.
*/
public NamedNodeMap getNotations();
/**
* The public identifier of the external subset.
* @since DOM Level 2
*/
public String getPublicId();
/**
* The system identifier of the external subset. This may be an absolute
* URI or not.
* @since DOM Level 2
*/
public String getSystemId();
/**
* The internal subset as a string, or null
if there is none.
* This is does not contain the delimiting square brackets.
* Note: The actual content returned depends on how much
* information is available to the implementation. This may vary
* depending on various parameters, including the XML processor used to
* build the document.
* @since DOM Level 2
*/
public String getInternalSubset();
}
org/w3c/dom/Element.java 100644 0 0 57362 11146172407 12543 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The Element
interface represents an element in an HTML or XML
* document. Elements may have attributes associated with them; since the
* Element
interface inherits from Node
, the
* generic Node
interface attribute attributes
may
* be used to retrieve the set of all attributes for an element. There are
* methods on the Element
interface to retrieve either an
* Attr
object by name or an attribute value by name. In XML,
* where an attribute value may contain entity references, an
* Attr
object should be retrieved to examine the possibly
* fairly complex sub-tree representing the attribute value. On the other
* hand, in HTML, where all attributes have simple string values, methods to
* directly access an attribute value can safely be used as a convenience.
*
Note: In DOM Level 2, the method normalize
is
* inherited from the Node
interface where it was moved.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Element extends Node {
/**
* The name of the element. If Node.localName
is different
* from null
, this attribute is a qualified name. For
* example, in:
*
<elementExample id="demo"> ... * </elementExample> ,*
tagName
has the value
* "elementExample"
. Note that this is case-preserving in
* XML, as are all of the operations of the DOM. The HTML DOM returns
* the tagName
of an HTML element in the canonical
* uppercase form, regardless of the case in the source HTML document.
*/
public String getTagName();
/**
* Retrieves an attribute value by name.
* @param name The name of the attribute to retrieve.
* @return The Attr
value as a string, or the empty string
* if that attribute does not have a specified or default value.
*/
public String getAttribute(String name);
/**
* Adds a new attribute. If an attribute with that name is already present
* in the element, its value is changed to be that of the value
* parameter. This value is a simple string; it is not parsed as it is
* being set. So any markup (such as syntax to be recognized as an
* entity reference) is treated as literal text, and needs to be
* appropriately escaped by the implementation when it is written out.
* In order to assign an attribute value that contains entity
* references, the user must create an Attr
node plus any
* Text
and EntityReference
nodes, build the
* appropriate subtree, and use setAttributeNode
to assign
* it as the value of an attribute.
* setAttributeNS
method.
* @param name The name of the attribute to create or alter.
* @param value Value to set in string form.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified name is not an XML
* name according to the XML version in use specified in the
* Document.xmlVersion
attribute.
* Document.normalizeDocument()
to guarantee this
* information is up-to-date.
* removeAttributeNS
method.
* @param name The name of the attribute to remove.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
public void removeAttribute(String name)
throws DOMException;
/**
* Retrieves an attribute node by name.
* getAttributeNodeNS
method.
* @param name The name (nodeName
) of the attribute to
* retrieve.
* @return The Attr
node with the specified name (
* nodeName
) or null
if there is no such
* attribute.
*/
public Attr getAttributeNode(String name);
/**
* Adds a new attribute node. If an attribute with that name (
* nodeName
) is already present in the element, it is
* replaced by the new one. Replacing an attribute node by itself has no
* effect.
* setAttributeNodeNS
method.
* @param newAttr The Attr
node to add to the attribute list.
* @return If the newAttr
attribute replaces an existing
* attribute, the replaced Attr
node is returned,
* otherwise null
is returned.
* @exception DOMException
* WRONG_DOCUMENT_ERR: Raised if newAttr
was created from a
* different document than the one that created the element.
* newAttr
is already an
* attribute of another Element
object. The DOM user must
* explicitly clone Attr
nodes to re-use them in other
* elements.
*/
public Attr setAttributeNode(Attr newAttr)
throws DOMException;
/**
* Removes the specified attribute node. If a default value for the
* removed Attr
node is defined in the DTD, a new node
* immediately appears with the default value as well as the
* corresponding namespace URI, local name, and prefix when applicable.
* The implementation may handle default values from other schemas
* similarly but applications should use
* Document.normalizeDocument()
to guarantee this
* information is up-to-date.
* @param oldAttr The Attr
node to remove from the attribute
* list.
* @return The Attr
node that was removed.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
* oldAttr
is not an attribute
* of the element.
*/
public Attr removeAttributeNode(Attr oldAttr)
throws DOMException;
/**
* Returns a NodeList
of all descendant Elements
* with a given tag name, in document order.
* @param name The name of the tag to match on. The special value "*"
* matches all tags.
* @return A list of matching Element
nodes.
*/
public NodeList getElementsByTagName(String name);
/**
* Retrieves an attribute value by local name and namespace URI.
* null
as the
* namespaceURI
parameter for methods if they wish to have
* no namespace.
* @param namespaceURI The namespace URI of the attribute to retrieve.
* @param localName The local name of the attribute to retrieve.
* @return The Attr
value as a string, or the empty string
* if that attribute does not have a specified or default value.
* @exception DOMException
* NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML"
and the language exposed
* through the Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public String getAttributeNS(String namespaceURI,
String localName)
throws DOMException;
/**
* Adds a new attribute. If an attribute with the same local name and
* namespace URI is already present on the element, its prefix is
* changed to be the prefix part of the qualifiedName
, and
* its value is changed to be the value
parameter. This
* value is a simple string; it is not parsed as it is being set. So any
* markup (such as syntax to be recognized as an entity reference) is
* treated as literal text, and needs to be appropriately escaped by the
* implementation when it is written out. In order to assign an
* attribute value that contains entity references, the user must create
* an Attr
node plus any Text
and
* EntityReference
nodes, build the appropriate subtree,
* and use setAttributeNodeNS
or
* setAttributeNode
to assign it as the value of an
* attribute.
* null
as the
* namespaceURI
parameter for methods if they wish to have
* no namespace.
* @param namespaceURI The namespace URI of the attribute to create or
* alter.
* @param qualifiedName The qualified name of the attribute to create or
* alter.
* @param value The value to set in string form.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified qualified name is not
* an XML name according to the XML version in use specified in the
* Document.xmlVersion
attribute.
* qualifiedName
is
* malformed per the Namespaces in XML specification, if the
* qualifiedName
has a prefix and the
* namespaceURI
is null
, if the
* qualifiedName
has a prefix that is "xml" and the
* namespaceURI
is different from "
* http://www.w3.org/XML/1998/namespace", if the qualifiedName
or its prefix is "xmlns" and the
* namespaceURI
is different from "http://www.w3.org/2000/xmlns/", or if the namespaceURI
is "http://www.w3.org/2000/xmlns/" and neither the qualifiedName
nor its prefix is "xmlns".
* "XML"
and the language exposed
* through the Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public void setAttributeNS(String namespaceURI,
String qualifiedName,
String value)
throws DOMException;
/**
* Removes an attribute by local name and namespace URI. If a default
* value for the removed attribute is defined in the DTD, a new
* attribute immediately appears with the default value as well as the
* corresponding namespace URI, local name, and prefix when applicable.
* The implementation may handle default values from other schemas
* similarly but applications should use
* Document.normalizeDocument()
to guarantee this
* information is up-to-date.
* null
as the
* namespaceURI
parameter for methods if they wish to have
* no namespace.
* @param namespaceURI The namespace URI of the attribute to remove.
* @param localName The local name of the attribute to remove.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
* "XML"
and the language exposed
* through the Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public void removeAttributeNS(String namespaceURI,
String localName)
throws DOMException;
/**
* Retrieves an Attr
node by local name and namespace URI.
* null
as the
* namespaceURI
parameter for methods if they wish to have
* no namespace.
* @param namespaceURI The namespace URI of the attribute to retrieve.
* @param localName The local name of the attribute to retrieve.
* @return The Attr
node with the specified attribute local
* name and namespace URI or null
if there is no such
* attribute.
* @exception DOMException
* NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML"
and the language exposed
* through the Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public Attr getAttributeNodeNS(String namespaceURI,
String localName)
throws DOMException;
/**
* Adds a new attribute. If an attribute with that local name and that
* namespace URI is already present in the element, it is replaced by
* the new one. Replacing an attribute node by itself has no effect.
* null
as the
* namespaceURI
parameter for methods if they wish to have
* no namespace.
* @param newAttr The Attr
node to add to the attribute list.
* @return If the newAttr
attribute replaces an existing
* attribute with the same local name and namespace URI, the replaced
* Attr
node is returned, otherwise null
is
* returned.
* @exception DOMException
* WRONG_DOCUMENT_ERR: Raised if newAttr
was created from a
* different document than the one that created the element.
* newAttr
is already an
* attribute of another Element
object. The DOM user must
* explicitly clone Attr
nodes to re-use them in other
* elements.
* "XML"
and the language exposed
* through the Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public Attr setAttributeNodeNS(Attr newAttr)
throws DOMException;
/**
* Returns a NodeList
of all the descendant
* Elements
with a given local name and namespace URI in
* document order.
* @param namespaceURI The namespace URI of the elements to match on. The
* special value "*" matches all namespaces.
* @param localName The local name of the elements to match on. The
* special value "*" matches all local names.
* @return A new NodeList
object containing all the matched
* Elements
.
* @exception DOMException
* NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML"
and the language exposed
* through the Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public NodeList getElementsByTagNameNS(String namespaceURI,
String localName)
throws DOMException;
/**
* Returns true
when an attribute with a given name is
* specified on this element or has a default value, false
* otherwise.
* @param name The name of the attribute to look for.
* @return true
if an attribute with the given name is
* specified on this element or has a default value, false
* otherwise.
* @since DOM Level 2
*/
public boolean hasAttribute(String name);
/**
* Returns true
when an attribute with a given local name and
* namespace URI is specified on this element or has a default value,
* false
otherwise.
* null
as the
* namespaceURI
parameter for methods if they wish to have
* no namespace.
* @param namespaceURI The namespace URI of the attribute to look for.
* @param localName The local name of the attribute to look for.
* @return true
if an attribute with the given local name
* and namespace URI is specified or has a default value on this
* element, false
otherwise.
* @exception DOMException
* NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML"
and the language exposed
* through the Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public boolean hasAttributeNS(String namespaceURI,
String localName)
throws DOMException;
/**
* The type information associated with this element.
* @since DOM Level 3
*/
public TypeInfo getSchemaTypeInfo();
/**
* If the parameter isId
is true
, this method
* declares the specified attribute to be a user-determined ID attribute
* . This affects the value of Attr.isId
and the behavior
* of Document.getElementById
, but does not change any
* schema that may be in use, in particular this does not affect the
* Attr.schemaTypeInfo
of the specified Attr
* node. Use the value false
for the parameter
* isId
to undeclare an attribute for being a
* user-determined ID attribute.
* setIdAttributeNS
method.
* @param name The name of the attribute.
* @param isId Whether the attribute is a of type ID.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
* isId
is true
, this method
* declares the specified attribute to be a user-determined ID attribute
* . This affects the value of Attr.isId
and the behavior
* of Document.getElementById
, but does not change any
* schema that may be in use, in particular this does not affect the
* Attr.schemaTypeInfo
of the specified Attr
* node. Use the value false
for the parameter
* isId
to undeclare an attribute for being a
* user-determined ID attribute.
* @param namespaceURI The namespace URI of the attribute.
* @param localName The local name of the attribute.
* @param isId Whether the attribute is a of type ID.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
* isId
is true
, this method
* declares the specified attribute to be a user-determined ID attribute
* . This affects the value of Attr.isId
and the behavior
* of Document.getElementById
, but does not change any
* schema that may be in use, in particular this does not affect the
* Attr.schemaTypeInfo
of the specified Attr
* node. Use the value false
for the parameter
* isId
to undeclare an attribute for being a
* user-determined ID attribute.
* @param idAttr The attribute node.
* @param isId Whether the attribute is a of type ID.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
* ElementTraversal
interface is a set of read-only attributes
* which allow an author to easily navigate between elements in a document.
* In conforming implementations of Element Traversal, all objects that
* implement {@link Element} must also implement the
* ElementTraversal
interface. Four of the methods,
* {@link #getFirstElementChild}, {@link #getLastElementChild},
* {@link #getPreviousElementSibling}, and {@link #getNextElementSibling},
* each return a live reference to another element with the defined
* relationship to the current element, if the related element exists. The
* fifth method, {@link #getChildElementCount}, exposes the number of child
* elements of an element, for preprocessing before navigation.
*
See also the
* Element Traversal Specification.
*/
public interface ElementTraversal {
/**
* Returns the first child element node of this element. null
* if this element has no child elements.
*/
Element getFirstElementChild();
/**
* Returns the last child element node of this element. null
* if this element has no child elements.
*/
Element getLastElementChild();
/**
* Returns the previous sibling element node of this element.
* null
if this element has no element sibling nodes that
* come before this one in the document tree.
*/
Element getPreviousElementSibling();
/**
* Returns the next sibling element node of this element.
* null
if this element has no element sibling nodes that
* come after this one in the document tree.
*/
Element getNextElementSibling();
/**
* Returns the current number of element nodes that are children of this
* element. 0
if this element has no child nodes that are of
* nodeType
1
.
*/
int getChildElementCount();
}
org/w3c/dom/Entity.java 100644 0 0 10242 11146172407 12410 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* This interface represents a known entity, either parsed or unparsed, in an
* XML document. Note that this models the entity itself not the entity declaration.
*
The nodeName
attribute that is inherited from
* Node
contains the name of the entity.
*
An XML processor may choose to completely expand entities before the
* structure model is passed to the DOM; in this case there will be no
* EntityReference
nodes in the document tree.
*
XML does not mandate that a non-validating XML processor read and
* process entity declarations made in the external subset or declared in
* parameter entities. This means that parsed entities declared in the
* external subset need not be expanded by some classes of applications, and
* that the replacement text of the entity may not be available. When the
* replacement text is available, the corresponding Entity
node's child list
* represents the structure of that replacement value. Otherwise, the child
* list is empty.
*
DOM Level 3 does not support editing Entity
nodes; if a
* user wants to make changes to the contents of an Entity
,
* every related EntityReference
node has to be replaced in the
* structure model by a clone of the Entity
's contents, and
* then the desired changes must be made to each of those clones instead.
* Entity
nodes and all their descendants are readonly.
*
An Entity
node does not have any parent.
*
Note: If the entity contains an unbound namespace prefix, the
* namespaceURI
of the corresponding node in the
* Entity
node subtree is null
. The same is true
* for EntityReference
nodes that refer to this entity, when
* they are created using the createEntityReference
method of
* the Document
interface.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Entity extends Node {
/**
* The public identifier associated with the entity if specified, and
* null
otherwise.
*/
public String getPublicId();
/**
* The system identifier associated with the entity if specified, and
* null
otherwise. This may be an absolute URI or not.
*/
public String getSystemId();
/**
* For unparsed entities, the name of the notation for the entity. For
* parsed entities, this is null
.
*/
public String getNotationName();
/**
* An attribute specifying the encoding used for this entity at the time
* of parsing, when it is an external parsed entity. This is
* null
if it an entity from the internal subset or if it
* is not known.
* @since DOM Level 3
*/
public String getInputEncoding();
/**
* An attribute specifying, as part of the text declaration, the encoding
* of this entity, when it is an external parsed entity. This is
* null
otherwise.
* @since DOM Level 3
*/
public String getXmlEncoding();
/**
* An attribute specifying, as part of the text declaration, the version
* number of this entity, when it is an external parsed entity. This is
* null
otherwise.
* @since DOM Level 3
*/
public String getXmlVersion();
}
org/w3c/dom/EntityReference.java 100644 0 0 4623 11146172407 14215 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* EntityReference
nodes may be used to represent an entity
* reference in the tree. Note that character references and references to
* predefined entities are considered to be expanded by the HTML or XML
* processor so that characters are represented by their Unicode equivalent
* rather than by an entity reference. Moreover, the XML processor may
* completely expand references to entities while building the
* Document
, instead of providing EntityReference
* nodes. If it does provide such nodes, then for an
* EntityReference
node that represents a reference to a known
* entity an Entity
exists, and the subtree of the
* EntityReference
node is a copy of the Entity
* node subtree. However, the latter may not be true when an entity contains
* an unbound namespace prefix. In such a case, because the namespace prefix
* resolution depends on where the entity reference is, the descendants of
* the EntityReference
node may be bound to different namespace
* URIs. When an EntityReference
node represents a reference to
* an unknown entity, the node has no children and its replacement value,
* when used by Attr.value
for example, is empty.
*
As for Entity
nodes, EntityReference
nodes and
* all their descendants are readonly.
*
Note: EntityReference
nodes may cause element
* content and attribute value normalization problems when, such as in XML
* 1.0 and XML Schema, the normalization is performed after entity reference
* are expanded.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface EntityReference extends Node {
}
org/w3c/dom/NameList.java 100644 0 0 5424 11146172407 12636 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The NameList
interface provides the abstraction of an ordered
* collection of parallel pairs of name and namespace values (which could be
* null values), without defining or constraining how this collection is
* implemented. The items in the NameList
are accessible via an
* integral index, starting from 0.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface NameList {
/**
* Returns the index
th name item in the collection.
* @param index Index into the collection.
* @return The name at the index
th position in the
* NameList
, or null
if there is no name for
* the specified index or if the index is out of range.
*/
public String getName(int index);
/**
* Returns the index
th namespaceURI item in the collection.
* @param index Index into the collection.
* @return The namespace URI at the index
th position in the
* NameList
, or null
if there is no name for
* the specified index or if the index is out of range.
*/
public String getNamespaceURI(int index);
/**
* The number of pairs (name and namespaceURI) in the list. The range of
* valid child node indices is 0 to length-1
inclusive.
*/
public int getLength();
/**
* Test if a name is part of this NameList
.
* @param str The name to look for.
* @return true
if the name has been found,
* false
otherwise.
*/
public boolean contains(String str);
/**
* Test if the pair namespaceURI/name is part of this
* NameList
.
* @param namespaceURI The namespace URI to look for.
* @param name The name to look for.
* @return true
if the pair namespaceURI/name has been
* found, false
otherwise.
*/
public boolean containsNS(String namespaceURI,
String name);
}
org/w3c/dom/NamedNodeMap.java 100644 0 0 23511 11146172407 13427 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* Objects implementing the NamedNodeMap
interface are used to
* represent collections of nodes that can be accessed by name. Note that
* NamedNodeMap
does not inherit from NodeList
;
* NamedNodeMaps
are not maintained in any particular order.
* Objects contained in an object implementing NamedNodeMap
may
* also be accessed by an ordinal index, but this is simply to allow
* convenient enumeration of the contents of a NamedNodeMap
,
* and does not imply that the DOM specifies an order to these Nodes.
*
NamedNodeMap
objects in the DOM are live.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface NamedNodeMap {
/**
* Retrieves a node specified by name.
* @param name The nodeName
of a node to retrieve.
* @return A Node
(of any type) with the specified
* nodeName
, or null
if it does not identify
* any node in this map.
*/
public Node getNamedItem(String name);
/**
* Adds a node using its nodeName
attribute. If a node with
* that name is already present in this map, it is replaced by the new
* one. Replacing a node by itself has no effect.
*
As the nodeName
attribute is used to derive the name
* which the node must be stored under, multiple nodes of certain types
* (those that have a "special" string value) cannot be stored as the
* names would clash. This is seen as preferable to allowing nodes to be
* aliased.
* @param arg A node to store in this map. The node will later be
* accessible using the value of its nodeName
attribute.
* @return If the new Node
replaces an existing node the
* replaced Node
is returned, otherwise null
* is returned.
* @exception DOMException
* WRONG_DOCUMENT_ERR: Raised if arg
was created from a
* different document than the one that created this map.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
*
INUSE_ATTRIBUTE_ERR: Raised if arg
is an
* Attr
that is already an attribute of another
* Element
object. The DOM user must explicitly clone
* Attr
nodes to re-use them in other elements.
*
HIERARCHY_REQUEST_ERR: Raised if an attempt is made to add a node
* doesn't belong in this NamedNodeMap. Examples would include trying
* to insert something other than an Attr node into an Element's map
* of attributes, or a non-Entity node into the DocumentType's map of
* Entities.
*/
public Node setNamedItem(Node arg)
throws DOMException;
/**
* Removes a node specified by name. When this map contains the attributes
* attached to an element, if the removed attribute is known to have a
* default value, an attribute immediately appears containing the
* default value as well as the corresponding namespace URI, local name,
* and prefix when applicable.
* @param name The nodeName
of the node to remove.
* @return The node removed from this map if a node with such a name
* exists.
* @exception DOMException
* NOT_FOUND_ERR: Raised if there is no node named name
in
* this map.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
*/
public Node removeNamedItem(String name)
throws DOMException;
/**
* Returns the index
th item in the map. If index
* is greater than or equal to the number of nodes in this map, this
* returns null
.
* @param index Index into this map.
* @return The node at the index
th position in the map, or
* null
if that is not a valid index.
*/
public Node item(int index);
/**
* The number of nodes in this map. The range of valid child node indices
* is 0
to length-1
inclusive.
*/
public int getLength();
/**
* Retrieves a node specified by local name and namespace URI.
*
Per [XML Namespaces]
* , applications must use the value null as the namespaceURI parameter
* for methods if they wish to have no namespace.
* @param namespaceURI The namespace URI of the node to retrieve.
* @param localName The local name of the node to retrieve.
* @return A Node
(of any type) with the specified local
* name and namespace URI, or null
if they do not
* identify any node in this map.
* @exception DOMException
* NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML" and the language exposed through the
* Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public Node getNamedItemNS(String namespaceURI,
String localName)
throws DOMException;
/**
* Adds a node using its namespaceURI
and
* localName
. If a node with that namespace URI and that
* local name is already present in this map, it is replaced by the new
* one. Replacing a node by itself has no effect.
*
Per [XML Namespaces]
* , applications must use the value null as the namespaceURI parameter
* for methods if they wish to have no namespace.
* @param arg A node to store in this map. The node will later be
* accessible using the value of its namespaceURI
and
* localName
attributes.
* @return If the new Node
replaces an existing node the
* replaced Node
is returned, otherwise null
* is returned.
* @exception DOMException
* WRONG_DOCUMENT_ERR: Raised if arg
was created from a
* different document than the one that created this map.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
*
INUSE_ATTRIBUTE_ERR: Raised if arg
is an
* Attr
that is already an attribute of another
* Element
object. The DOM user must explicitly clone
* Attr
nodes to re-use them in other elements.
*
HIERARCHY_REQUEST_ERR: Raised if an attempt is made to add a node
* doesn't belong in this NamedNodeMap. Examples would include trying
* to insert something other than an Attr node into an Element's map
* of attributes, or a non-Entity node into the DocumentType's map of
* Entities.
*
NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML" and the language exposed through the
* Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public Node setNamedItemNS(Node arg)
throws DOMException;
/**
* Removes a node specified by local name and namespace URI. A removed
* attribute may be known to have a default value when this map contains
* the attributes attached to an element, as returned by the attributes
* attribute of the Node
interface. If so, an attribute
* immediately appears containing the default value as well as the
* corresponding namespace URI, local name, and prefix when applicable.
*
Per [XML Namespaces]
* , applications must use the value null as the namespaceURI parameter
* for methods if they wish to have no namespace.
* @param namespaceURI The namespace URI of the node to remove.
* @param localName The local name of the node to remove.
* @return The node removed from this map if a node with such a local
* name and namespace URI exists.
* @exception DOMException
* NOT_FOUND_ERR: Raised if there is no node with the specified
* namespaceURI
and localName
in this map.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
*
NOT_SUPPORTED_ERR: May be raised if the implementation does not
* support the feature "XML" and the language exposed through the
* Document does not support XML Namespaces (such as [HTML 4.01]).
* @since DOM Level 2
*/
public Node removeNamedItemNS(String namespaceURI,
String localName)
throws DOMException;
}
org/w3c/dom/Node.java 100644 0 0 124557 11146172407 12060 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The Node
interface is the primary datatype for the entire
* Document Object Model. It represents a single node in the document tree.
* While all objects implementing the Node
interface expose
* methods for dealing with children, not all objects implementing the
* Node
interface may have children. For example,
* Text
nodes may not have children, and adding children to
* such nodes results in a DOMException
being raised.
*
The attributes nodeName
, nodeValue
and
* attributes
are included as a mechanism to get at node
* information without casting down to the specific derived interface. In
* cases where there is no obvious mapping of these attributes for a
* specific nodeType
(e.g., nodeValue
for an
* Element
or attributes
for a Comment
* ), this returns null
. Note that the specialized interfaces
* may contain additional and more convenient mechanisms to get and set the
* relevant information.
*
The values of nodeName
,
* nodeValue
, and attributes
vary according to the
* node type as follows:
*
Interface | *nodeName | *nodeValue | *attributes | *
---|---|---|---|
* Attr |
* same as Attr.name |
* same as
* Attr.value |
* null |
*
CDATASection |
*
* "#cdata-section" |
* same as CharacterData.data , the
* content of the CDATA Section |
* null |
*
Comment |
*
* "#comment" |
* same as CharacterData.data , the
* content of the comment |
* null |
*
Document |
*
* "#document" |
* null |
* null |
*
* DocumentFragment |
* "#document-fragment" |
*
* null |
* null |
*
DocumentType |
* same as
* DocumentType.name |
* null |
* null |
*
* Element |
* same as Element.tagName |
* null |
*
* NamedNodeMap |
*
Entity |
* entity name | *null |
*
* null |
*
EntityReference |
* name of entity referenced | *
* null |
* null |
*
Notation |
* notation name | *
* null |
* null |
*
ProcessingInstruction |
* same
* as ProcessingInstruction.target |
* same as
* ProcessingInstruction.data |
* null |
*
Text |
*
* "#text" |
* same as CharacterData.data , the content
* of the text node |
* null |
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Node {
// NodeType
/**
* The node is an Element
.
*/
public static final short ELEMENT_NODE = 1;
/**
* The node is an Attr
.
*/
public static final short ATTRIBUTE_NODE = 2;
/**
* The node is a Text
node.
*/
public static final short TEXT_NODE = 3;
/**
* The node is a CDATASection
.
*/
public static final short CDATA_SECTION_NODE = 4;
/**
* The node is an EntityReference
.
*/
public static final short ENTITY_REFERENCE_NODE = 5;
/**
* The node is an Entity
.
*/
public static final short ENTITY_NODE = 6;
/**
* The node is a ProcessingInstruction
.
*/
public static final short PROCESSING_INSTRUCTION_NODE = 7;
/**
* The node is a Comment
.
*/
public static final short COMMENT_NODE = 8;
/**
* The node is a Document
.
*/
public static final short DOCUMENT_NODE = 9;
/**
* The node is a DocumentType
.
*/
public static final short DOCUMENT_TYPE_NODE = 10;
/**
* The node is a DocumentFragment
.
*/
public static final short DOCUMENT_FRAGMENT_NODE = 11;
/**
* The node is a Notation
.
*/
public static final short NOTATION_NODE = 12;
/**
* The name of this node, depending on its type; see the table above.
*/
public String getNodeName();
/**
* The value of this node, depending on its type; see the table above.
* When it is defined to be null
, setting it has no effect,
* including if the node is read-only.
* @exception DOMException
* DOMSTRING_SIZE_ERR: Raised when it would return more characters than
* fit in a DOMString
variable on the implementation
* platform.
*/
public String getNodeValue()
throws DOMException;
/**
* The value of this node, depending on its type; see the table above.
* When it is defined to be null
, setting it has no effect,
* including if the node is read-only.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly and if
* it is not defined to be null
.
*/
public void setNodeValue(String nodeValue)
throws DOMException;
/**
* A code representing the type of the underlying object, as defined above.
*/
public short getNodeType();
/**
* The parent of this node. All nodes, except Attr
,
* Document
, DocumentFragment
,
* Entity
, and Notation
may have a parent.
* However, if a node has just been created and not yet added to the
* tree, or if it has been removed from the tree, this is
* null
.
*/
public Node getParentNode();
/**
* A NodeList
that contains all children of this node. If
* there are no children, this is a NodeList
containing no
* nodes.
*/
public NodeList getChildNodes();
/**
* The first child of this node. If there is no such node, this returns
* null
.
*/
public Node getFirstChild();
/**
* The last child of this node. If there is no such node, this returns
* null
.
*/
public Node getLastChild();
/**
* The node immediately preceding this node. If there is no such node,
* this returns null
.
*/
public Node getPreviousSibling();
/**
* The node immediately following this node. If there is no such node,
* this returns null
.
*/
public Node getNextSibling();
/**
* A NamedNodeMap
containing the attributes of this node (if
* it is an Element
) or null
otherwise.
*/
public NamedNodeMap getAttributes();
/**
* The Document
object associated with this node. This is
* also the Document
object used to create new nodes. When
* this node is a Document
or a DocumentType
* which is not used with any Document
yet, this is
* null
.
* @since DOM Level 2
*/
public Document getOwnerDocument();
/**
* Inserts the node newChild
before the existing child node
* refChild
. If refChild
is null
,
* insert newChild
at the end of the list of children.
*
If newChild
is a DocumentFragment
object,
* all of its children are inserted, in the same order, before
* refChild
. If the newChild
is already in the
* tree, it is first removed.
*
Note: Inserting a node before itself is implementation
* dependent.
* @param newChild The node to insert.
* @param refChild The reference node, i.e., the node before which the
* new node must be inserted.
* @return The node being inserted.
* @exception DOMException
* HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
* allow children of the type of the newChild
node, or if
* the node to insert is one of this node's ancestors or this node
* itself, or if this node is of type Document
and the
* DOM application attempts to insert a second
* DocumentType
or Element
node.
*
WRONG_DOCUMENT_ERR: Raised if newChild
was created
* from a different document than the one that created this node.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or
* if the parent of the node being inserted is readonly.
*
NOT_FOUND_ERR: Raised if refChild
is not a child of
* this node.
*
NOT_SUPPORTED_ERR: if this node is of type Document
,
* this exception might be raised if the DOM implementation doesn't
* support the insertion of a DocumentType
or
* Element
node.
* @since DOM Level 3
*/
public Node insertBefore(Node newChild,
Node refChild)
throws DOMException;
/**
* Replaces the child node oldChild
with newChild
* in the list of children, and returns the oldChild
node.
*
If newChild
is a DocumentFragment
object,
* oldChild
is replaced by all of the
* DocumentFragment
children, which are inserted in the
* same order. If the newChild
is already in the tree, it
* is first removed.
*
Note: Replacing a node with itself is implementation
* dependent.
* @param newChild The new node to put in the child list.
* @param oldChild The node being replaced in the list.
* @return The node replaced.
* @exception DOMException
* HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
* allow children of the type of the newChild
node, or if
* the node to put in is one of this node's ancestors or this node
* itself, or if this node is of type Document
and the
* result of the replacement operation would add a second
* DocumentType
or Element
on the
* Document
node.
*
WRONG_DOCUMENT_ERR: Raised if newChild
was created
* from a different document than the one that created this node.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the parent of
* the new node is readonly.
*
NOT_FOUND_ERR: Raised if oldChild
is not a child of
* this node.
*
NOT_SUPPORTED_ERR: if this node is of type Document
,
* this exception might be raised if the DOM implementation doesn't
* support the replacement of the DocumentType
child or
* Element
child.
* @since DOM Level 3
*/
public Node replaceChild(Node newChild,
Node oldChild)
throws DOMException;
/**
* Removes the child node indicated by oldChild
from the list
* of children, and returns it.
* @param oldChild The node being removed.
* @return The node removed.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*
NOT_FOUND_ERR: Raised if oldChild
is not a child of
* this node.
*
NOT_SUPPORTED_ERR: if this node is of type Document
,
* this exception might be raised if the DOM implementation doesn't
* support the removal of the DocumentType
child or the
* Element
child.
* @since DOM Level 3
*/
public Node removeChild(Node oldChild)
throws DOMException;
/**
* Adds the node newChild
to the end of the list of children
* of this node. If the newChild
is already in the tree, it
* is first removed.
* @param newChild The node to add.If it is a
* DocumentFragment
object, the entire contents of the
* document fragment are moved into the child list of this node
* @return The node added.
* @exception DOMException
* HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
* allow children of the type of the newChild
node, or if
* the node to append is one of this node's ancestors or this node
* itself, or if this node is of type Document
and the
* DOM application attempts to append a second
* DocumentType
or Element
node.
*
WRONG_DOCUMENT_ERR: Raised if newChild
was created
* from a different document than the one that created this node.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or
* if the previous parent of the node being inserted is readonly.
*
NOT_SUPPORTED_ERR: if the newChild
node is a child
* of the Document
node, this exception might be raised
* if the DOM implementation doesn't support the removal of the
* DocumentType
child or Element
child.
* @since DOM Level 3
*/
public Node appendChild(Node newChild)
throws DOMException;
/**
* Returns whether this node has any children.
* @return Returns true
if this node has any children,
* false
otherwise.
*/
public boolean hasChildNodes();
/**
* Returns a duplicate of this node, i.e., serves as a generic copy
* constructor for nodes. The duplicate node has no parent (
* parentNode
is null
) and no user data. User
* data associated to the imported node is not carried over. However, if
* any UserDataHandlers
has been specified along with the
* associated data these handlers will be called with the appropriate
* parameters before this method returns.
*
Cloning an Element
copies all attributes and their
* values, including those generated by the XML processor to represent
* defaulted attributes, but this method does not copy any children it
* contains unless it is a deep clone. This includes text contained in
* an the Element
since the text is contained in a child
* Text
node. Cloning an Attr
directly, as
* opposed to be cloned as part of an Element
cloning
* operation, returns a specified attribute (specified
is
* true
). Cloning an Attr
always clones its
* children, since they represent its value, no matter whether this is a
* deep clone or not. Cloning an EntityReference
* automatically constructs its subtree if a corresponding
* Entity
is available, no matter whether this is a deep
* clone or not. Cloning any other type of node simply returns a copy of
* this node.
*
Note that cloning an immutable subtree results in a mutable copy,
* but the children of an EntityReference
clone are readonly
* . In addition, clones of unspecified Attr
nodes are
* specified. And, cloning Document
,
* DocumentType
, Entity
, and
* Notation
nodes is implementation dependent.
* @param deep If true
, recursively clone the subtree under
* the specified node; if false
, clone only the node
* itself (and its attributes, if it is an Element
).
* @return The duplicate node.
*/
public Node cloneNode(boolean deep);
/**
* Puts all Text
nodes in the full depth of the sub-tree
* underneath this Node
, including attribute nodes, into a
* "normal" form where only structure (e.g., elements, comments,
* processing instructions, CDATA sections, and entity references)
* separates Text
nodes, i.e., there are neither adjacent
* Text
nodes nor empty Text
nodes. This can
* be used to ensure that the DOM view of a document is the same as if
* it were saved and re-loaded, and is useful when operations (such as
* XPointer [XPointer]
* lookups) that depend on a particular document tree structure are to
* be used. If the parameter "normalize-characters" of the
* DOMConfiguration
object attached to the
* Node.ownerDocument
is true
, this method
* will also fully normalize the characters of the Text
* nodes.
*
Note: In cases where the document contains
* CDATASections
, the normalize operation alone may not be
* sufficient, since XPointers do not differentiate between
* Text
nodes and CDATASection
nodes.
* @since DOM Level 3
*/
public void normalize();
/**
* Tests whether the DOM implementation implements a specific feature and
* that feature is supported by this node, as specified in .
* @param feature The name of the feature to test.
* @param version This is the version number of the feature to test.
* @return Returns true
if the specified feature is
* supported on this node, false
otherwise.
* @since DOM Level 2
*/
public boolean isSupported(String feature,
String version);
/**
* The namespace URI of this node, or null
if it is
* unspecified (see ).
*
This is not a computed value that is the result of a namespace
* lookup based on an examination of the namespace declarations in
* scope. It is merely the namespace URI given at creation time.
*
For nodes of any type other than ELEMENT_NODE
and
* ATTRIBUTE_NODE
and nodes created with a DOM Level 1
* method, such as Document.createElement()
, this is always
* null
.
*
Note: Per the Namespaces in XML Specification [XML Namespaces]
* an attribute does not inherit its namespace from the element it is
* attached to. If an attribute is not explicitly given a namespace, it
* simply has no namespace.
* @since DOM Level 2
*/
public String getNamespaceURI();
/**
* The namespace prefix of this node, or null
if it is
* unspecified. When it is defined to be null
, setting it
* has no effect, including if the node is read-only.
*
Note that setting this attribute, when permitted, changes the
* nodeName
attribute, which holds the qualified name, as
* well as the tagName
and name
attributes of
* the Element
and Attr
interfaces, when
* applicable.
*
Setting the prefix to null
makes it unspecified,
* setting it to an empty string is implementation dependent.
*
Note also that changing the prefix of an attribute that is known to
* have a default value, does not make a new attribute with the default
* value and the original prefix appear, since the
* namespaceURI
and localName
do not change.
*
For nodes of any type other than ELEMENT_NODE
and
* ATTRIBUTE_NODE
and nodes created with a DOM Level 1
* method, such as createElement
from the
* Document
interface, this is always null
.
* @since DOM Level 2
*/
public String getPrefix();
/**
* The namespace prefix of this node, or null
if it is
* unspecified. When it is defined to be null
, setting it
* has no effect, including if the node is read-only.
*
Note that setting this attribute, when permitted, changes the
* nodeName
attribute, which holds the qualified name, as
* well as the tagName
and name
attributes of
* the Element
and Attr
interfaces, when
* applicable.
*
Setting the prefix to null
makes it unspecified,
* setting it to an empty string is implementation dependent.
*
Note also that changing the prefix of an attribute that is known to
* have a default value, does not make a new attribute with the default
* value and the original prefix appear, since the
* namespaceURI
and localName
do not change.
*
For nodes of any type other than ELEMENT_NODE
and
* ATTRIBUTE_NODE
and nodes created with a DOM Level 1
* method, such as createElement
from the
* Document
interface, this is always null
.
* @exception DOMException
* INVALID_CHARACTER_ERR: Raised if the specified prefix contains an
* illegal character according to the XML version in use specified in
* the Document.xmlVersion
attribute.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*
NAMESPACE_ERR: Raised if the specified prefix
is
* malformed per the Namespaces in XML specification, if the
* namespaceURI
of this node is null
, if the
* specified prefix is "xml" and the namespaceURI
of this
* node is different from "
* http://www.w3.org/XML/1998/namespace", if this node is an attribute and the specified prefix is "xmlns" and
* the namespaceURI
of this node is different from "http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName
of
* this node is "xmlns" [XML Namespaces]
* .
* @since DOM Level 2
*/
public void setPrefix(String prefix)
throws DOMException;
/**
* Returns the local part of the qualified name of this node.
*
For nodes of any type other than ELEMENT_NODE
and
* ATTRIBUTE_NODE
and nodes created with a DOM Level 1
* method, such as Document.createElement()
, this is always
* null
.
* @since DOM Level 2
*/
public String getLocalName();
/**
* Returns whether this node (if it is an element) has any attributes.
* @return Returns true
if this node has any attributes,
* false
otherwise.
* @since DOM Level 2
*/
public boolean hasAttributes();
/**
* The absolute base URI of this node or null
if the
* implementation wasn't able to obtain an absolute URI. This value is
* computed as described in . However, when the Document
* supports the feature "HTML" [DOM Level 2 HTML]
* , the base URI is computed using first the value of the href
* attribute of the HTML BASE element if any, and the value of the
* documentURI
attribute from the Document
* interface otherwise.
* @since DOM Level 3
*/
public String getBaseURI();
// DocumentPosition
/**
* The two nodes are disconnected. Order between disconnected nodes is
* always implementation-specific.
*/
public static final short DOCUMENT_POSITION_DISCONNECTED = 0x01;
/**
* The second node precedes the reference node.
*/
public static final short DOCUMENT_POSITION_PRECEDING = 0x02;
/**
* The node follows the reference node.
*/
public static final short DOCUMENT_POSITION_FOLLOWING = 0x04;
/**
* The node contains the reference node. A node which contains is always
* preceding, too.
*/
public static final short DOCUMENT_POSITION_CONTAINS = 0x08;
/**
* The node is contained by the reference node. A node which is contained
* is always following, too.
*/
public static final short DOCUMENT_POSITION_CONTAINED_BY = 0x10;
/**
* The determination of preceding versus following is
* implementation-specific.
*/
public static final short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
/**
* Compares the reference node, i.e. the node on which this method is
* being called, with a node, i.e. the one passed as a parameter, with
* regard to their position in the document and according to the
* document order.
* @param other The node to compare against the reference node.
* @return Returns how the node is positioned relatively to the reference
* node.
* @exception DOMException
* NOT_SUPPORTED_ERR: when the compared nodes are from different DOM
* implementations that do not coordinate to return consistent
* implementation-specific results.
* @since DOM Level 3
*/
public short compareDocumentPosition(Node other)
throws DOMException;
/**
* This attribute returns the text content of this node and its
* descendants. When it is defined to be null
, setting it
* has no effect. On setting, any possible children this node may have
* are removed and, if it the new string is not empty or
* null
, replaced by a single Text
node
* containing the string this attribute is set to.
*
On getting, no serialization is performed, the returned string
* does not contain any markup. No whitespace normalization is performed
* and the returned string does not contain the white spaces in element
* content (see the attribute
* Text.isElementContentWhitespace
). Similarly, on setting,
* no parsing is performed either, the input string is taken as pure
* textual content.
*
The string returned is made of the text content of this node
* depending on its type, as defined below:
*
Node type | *Content | *
---|---|
* ELEMENT_NODE, ATTRIBUTE_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, * DOCUMENT_FRAGMENT_NODE | *concatenation of the textContent
* attribute value of every child node, excluding COMMENT_NODE and
* PROCESSING_INSTRUCTION_NODE nodes. This is the empty string if the
* node has no children. |
*
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, * PROCESSING_INSTRUCTION_NODE | *nodeValue |
*
DOCUMENT_NODE, * DOCUMENT_TYPE_NODE, NOTATION_NODE | *null | *
DOMString
variable on the implementation
* platform.
* @since DOM Level 3
*/
public String getTextContent()
throws DOMException;
/**
* This attribute returns the text content of this node and its
* descendants. When it is defined to be null
, setting it
* has no effect. On setting, any possible children this node may have
* are removed and, if it the new string is not empty or
* null
, replaced by a single Text
node
* containing the string this attribute is set to.
* Text.isElementContentWhitespace
). Similarly, on setting,
* no parsing is performed either, the input string is taken as pure
* textual content.
* Node type | *Content | *
---|---|
* ELEMENT_NODE, ATTRIBUTE_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, * DOCUMENT_FRAGMENT_NODE | *concatenation of the textContent
* attribute value of every child node, excluding COMMENT_NODE and
* PROCESSING_INSTRUCTION_NODE nodes. This is the empty string if the
* node has no children. |
*
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, * PROCESSING_INSTRUCTION_NODE | *nodeValue |
*
DOCUMENT_NODE, * DOCUMENT_TYPE_NODE, NOTATION_NODE | *null | *
Node
references returned by the implementation reference
* the same object. When two Node
references are references
* to the same object, even if through a proxy, the references may be
* used completely interchangeably, such that all attributes have the
* same values and calling the same DOM method on either reference
* always has exactly the same effect.
* @param other The node to test against.
* @return Returns true
if the nodes are the same,
* false
otherwise.
* @since DOM Level 3
*/
public boolean isSameNode(Node other);
/**
* Look up the prefix associated to the given namespace URI, starting from
* this node. The default namespace declarations are ignored by this
* method.
* null
if none is found. If more than one prefix are
* associated to the namespace prefix, the returned namespace prefix
* is implementation dependent.
* @since DOM Level 3
*/
public String lookupPrefix(String namespaceURI);
/**
* This method checks if the specified namespaceURI
is the
* default namespace or not.
* @param namespaceURI The namespace URI to look for.
* @return Returns true
if the specified
* namespaceURI
is the default namespace,
* false
otherwise.
* @since DOM Level 3
*/
public boolean isDefaultNamespace(String namespaceURI);
/**
* Look up the namespace URI associated to the given prefix, starting from
* this node.
* null
, the method will return the default namespace URI
* if any.
* @return Returns the associated namespace URI or null
if
* none is found.
* @since DOM Level 3
*/
public String lookupNamespaceURI(String prefix);
/**
* Tests whether two nodes are equal.
* Node.isSameNode()
. All nodes that are the
* same will also be equal, though the reverse may not be true.
* nodeName
, localName
,
* namespaceURI
, prefix
, nodeValue
* . This is: they are both null
, or they have the same
* length and are character for character identical.
* attributes
NamedNodeMaps
are equal. This
* is: they are both null
, or they have the same length and
* for each node that exists in one map there is a node that exists in
* the other map and is equal, although not necessarily at the same
* index.
* childNodes
NodeLists
are equal.
* This is: they are both null
, or they have the same
* length and contain equal nodes at the same index. Note that
* normalization can affect equality; to avoid this, nodes should be
* normalized before being compared.
* DocumentType
nodes to be equal, the following
* conditions must also be satisfied:
* publicId
, systemId
,
* internalSubset
.
* entities
* NamedNodeMaps
are equal.
* notations
* NamedNodeMaps
are equal.
* ownerDocument
, baseURI
, and
* parentNode
attributes, the specified
* attribute for Attr
nodes, the schemaTypeInfo
* attribute for Attr
and Element
nodes, the
* Text.isElementContentWhitespace
attribute for
* Text
nodes, as well as any user data or event listeners
* registered on the nodes.
* Note: As a general rule, anything not mentioned in the
* description above is not significant in consideration of equality
* checking. Note that future versions of this specification may take
* into account more attributes and implementations conform to this
* specification are expected to be updated accordingly.
* @param arg The node to compare equality with.
* @return Returns true
if the nodes are equal,
* false
otherwise.
* @since DOM Level 3
*/
public boolean isEqualNode(Node arg);
/**
* This method returns a specialized object which implements the
* specialized APIs of the specified feature and version, as specified
* in . The specialized object may also be obtained by using
* binding-specific casting methods but is not necessarily expected to,
* as discussed in . This method also allow the implementation to
* provide specialized objects which do not support the Node
* interface.
* @param feature The name of the feature requested. Note that any plus
* sign "+" prepended to the name of the feature will be ignored since
* it is not significant in the context of this method.
* @param version This is the version number of the feature to test.
* @return Returns an object which implements the specialized APIs of
* the specified feature and version, if any, or null
if
* there is no object which implements interfaces associated with that
* feature. If the DOMObject
returned by this method
* implements the Node
interface, it must delegate to the
* primary core Node
and not return results inconsistent
* with the primary core Node
such as attributes,
* childNodes, etc.
* @since DOM Level 3
*/
public Object getFeature(String feature,
String version);
/**
* Associate an object to a key on this node. The object can later be
* retrieved from this node by calling getUserData
with the
* same key.
* @param key The key to associate the object to.
* @param data The object to associate to the given key, or
* null
to remove any existing association to that key.
* @param handler The handler to associate to that key, or
* null
.
* @return Returns the DOMUserData
previously associated to
* the given key on this node, or null
if there was none.
* @since DOM Level 3
*/
public Object setUserData(String key,
Object data,
UserDataHandler handler);
/**
* Retrieves the object associated to a key on a this node. The object
* must first have been set to this node by calling
* setUserData
with the same key.
* @param key The key the object is associated to.
* @return Returns the DOMUserData
associated to the given
* key on this node, or null
if there was none.
* @since DOM Level 3
*/
public Object getUserData(String key);
}
org/w3c/dom/NodeList.java 100644 0 0 3260 11146172407 12637 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The NodeList
interface provides the abstraction of an ordered
* collection of nodes, without defining or constraining how this collection
* is implemented. NodeList
objects in the DOM are live.
*
The items in the NodeList
are accessible via an integral
* index, starting from 0.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface NodeList {
/**
* Returns the index
th item in the collection. If
* index
is greater than or equal to the number of nodes in
* the list, this returns null
.
* @param index Index into the collection.
* @return The node at the index
th position in the
* NodeList
, or null
if that is not a valid
* index.
*/
public Node item(int index);
/**
* The number of nodes in the list. The range of valid child node indices
* is 0 to length-1
inclusive.
*/
public int getLength();
}
org/w3c/dom/Notation.java 100644 0 0 3744 11146172407 12720 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* This interface represents a notation declared in the DTD. A notation either
* declares, by name, the format of an unparsed entity (see section 4.7 of the XML 1.0 specification [XML 1.0]), or is
* used for formal declaration of processing instruction targets (see section 2.6 of the XML 1.0 specification [XML 1.0]). The
* nodeName
attribute inherited from Node
is set
* to the declared name of the notation.
*
The DOM Core does not support editing Notation
nodes; they
* are therefore readonly.
*
A Notation
node does not have any parent.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Notation extends Node {
/**
* The public identifier of this notation. If the public identifier was
* not specified, this is null
.
*/
public String getPublicId();
/**
* The system identifier of this notation. If the system identifier was
* not specified, this is null
. This may be an absolute URI
* or not.
*/
public String getSystemId();
}
org/w3c/dom/ProcessingInstruction.java 100644 0 0 4322 11146172407 15474 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The ProcessingInstruction
interface represents a "processing
* instruction", used in XML as a way to keep processor-specific information
* in the text of the document.
*
No lexical check is done on the content of a processing instruction and
* it is therefore possible to have the character sequence
* "?>"
in the content, which is illegal a processing
* instruction per section 2.6 of [XML 1.0]. The
* presence of this character sequence must generate a fatal error during
* serialization.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface ProcessingInstruction extends Node {
/**
* The target of this processing instruction. XML defines this as being
* the first token following the markup that begins the processing
* instruction.
*/
public String getTarget();
/**
* The content of this processing instruction. This is from the first non
* white space character after the target to the character immediately
* preceding the ?>
.
*/
public String getData();
/**
* The content of this processing instruction. This is from the first non
* white space character after the target to the character immediately
* preceding the ?>
.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
*/
public void setData(String data)
throws DOMException;
}
org/w3c/dom/Text.java 100644 0 0 15371 11146172407 12070 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The Text
interface inherits from CharacterData
* and represents the textual content (termed character data in XML) of an Element
or Attr
. If there is no
* markup inside an element's content, the text is contained in a single
* object implementing the Text
interface that is the only
* child of the element. If there is markup, it is parsed into the
* information items (elements, comments, etc.) and Text
nodes
* that form the list of children of the element.
*
When a document is first made available via the DOM, there is only one
* Text
node for each block of text. Users may create adjacent
* Text
nodes that represent the contents of a given element
* without any intervening markup, but should be aware that there is no way
* to represent the separations between these nodes in XML or HTML, so they
* will not (in general) persist between DOM editing sessions. The
* Node.normalize()
method merges any such adjacent
* Text
objects into a single node for each block of text.
*
No lexical check is done on the content of a Text
node
* and, depending on its position in the document, some characters must be
* escaped during serialization using character references; e.g. the
* characters "<&" if the textual content is part of an element or of
* an attribute, the character sequence "]]>" when part of an element,
* the quotation mark character " or the apostrophe character ' when part of
* an attribute.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
*/
public interface Text extends CharacterData {
/**
* Breaks this node into two nodes at the specified offset
,
* keeping both in the tree as siblings. After being split, this node
* will contain all the content up to the offset
point. A
* new node of the same type, which contains all the content at and
* after the offset
point, is returned. If the original
* node had a parent node, the new node is inserted as the next sibling
* of the original node. When the offset
is equal to the
* length of this node, the new node has no data.
* @param offset The 16-bit unit offset at which to split, starting from
* 0
.
* @return The new node, of the same type as this node.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
* than the number of 16-bit units in data
.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
*/
public Text splitText(int offset)
throws DOMException;
/**
* Returns whether this text node contains
* element content whitespace, often abusively called "ignorable whitespace". The text node is
* determined to contain whitespace in element content during the load
* of the document or if validation occurs while using
* Document.normalizeDocument()
.
* @since DOM Level 3
*/
public boolean isElementContentWhitespace();
/**
* Returns all text of Text
nodes logically-adjacent text
* nodes to this node, concatenated in document order.
*
For instance, in the example below wholeText
on the
* Text
node that contains "bar" returns "barfoo", while on
* the Text
node that contains "foo" it returns "barfoo".
* @since DOM Level 3
*/
public String getWholeText();
/**
* Replaces the text of the current node and all logically-adjacent text
* nodes with the specified text. All logically-adjacent text nodes are
* removed including the current node unless it was the recipient of the
* replacement text.
*
This method returns the node which received the replacement text.
* The returned node is:
*
null
, when the replacement text is
* the empty string;
* Text
node of the same type (
* Text
or CDATASection
) as the current node
* inserted at the location of the replacement.
* replaceWholeText
on the Text
node that
* contains "bar" with "yo" in argument results in the following:
* EntityReference
, the EntityReference
must
* be removed instead of the read-only nodes. If any
* EntityReference
to be removed has descendants that are
* not EntityReference
, Text
, or
* CDATASection
nodes, the replaceWholeText
* method must fail before performing any modification of the document,
* raising a DOMException
with the code
* NO_MODIFICATION_ALLOWED_ERR
.
* replaceWholeText
on the Text
node that
* contains "bar" fails, because the EntityReference
node
* "ent" contains an Element
node which cannot be removed.
* @param content The content of the replacing Text
node.
* @return The Text
node created with the specified content.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if one of the Text
* nodes being replaced is readonly.
* @since DOM Level 3
*/
public Text replaceWholeText(String content)
throws DOMException;
}
org/w3c/dom/TypeInfo.java 100644 0 0 23423 11146172407 12676 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* The TypeInfo
interface represents a type referenced from
* Element
or Attr
nodes, specified in the schemas
* associated with the document. The type is a pair of a namespace URI and
* name properties, and depends on the document's schema.
* If the document's schema is an XML DTD [XML 1.0], the values * are computed as follows: *
Attr
node, typeNamespace
is
* "http://www.w3.org/TR/REC-xml"
and typeName
* represents the [attribute type] property in the [XML Information Set]
* . If there is no declaration for the attribute, typeNamespace
* and typeName
are null
.
* Element
node, typeNamespace
* and typeName
are null
.
* If the document's schema is an XML Schema [XML Schema Part 1] * , the values are computed as follows using the post-schema-validation * infoset contributions (also called PSVI contributions): *
null
.
* Note: At the time of writing, the XML Schema specification does * not require exposing the declared type. Thus, DOM implementations might * choose not to provide type information if validity is not valid. *
Note: Other schema languages are outside the scope of the W3C
* and therefore should define how to represent their type systems using
* TypeInfo
.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface TypeInfo {
/**
* The name of a type declared for the associated element or attribute,
* or null
if unknown.
*/
public String getTypeName();
/**
* The namespace of the type declared for the associated element or
* attribute or null
if the element does not have
* declaration or if no namespace information is available.
*/
public String getTypeNamespace();
// DerivationMethods
/**
* If the document's schema is an XML Schema [XML Schema Part 1]
* , this constant represents the derivation by
* restriction if complex types are involved, or a
* restriction if simple types are involved.
*
The reference type definition is derived by restriction from the
* other type definition if the other type definition is the same as the
* reference type definition, or if the other type definition can be
* reached recursively following the {base type definition} property
* from the reference type definition, and all the derivation methods involved are restriction.
*/
public static final int DERIVATION_RESTRICTION = 0x00000001;
/**
* If the document's schema is an XML Schema [XML Schema Part 1]
* , this constant represents the derivation by
* extension.
*
The reference type definition is derived by extension from the
* other type definition if the other type definition can be reached
* recursively following the {base type definition} property from the
* reference type definition, and at least one of the derivation methods involved is an extension.
*/
public static final int DERIVATION_EXTENSION = 0x00000002;
/**
* If the document's schema is an XML Schema [XML Schema Part 1]
* , this constant represents the
* union if simple types are involved.
*
The reference type definition is derived by union from the other
* type definition if there exists two type definitions T1 and T2 such
* as the reference type definition is derived from T1 by
* DERIVATION_RESTRICTION
or
* DERIVATION_EXTENSION
, T2 is derived from the other type
* definition by DERIVATION_RESTRICTION
, T1 has {variety} union, and one of the {member type definitions} is T2. Note that T1 could be
* the same as the reference type definition, and T2 could be the same
* as the other type definition.
*/
public static final int DERIVATION_UNION = 0x00000004;
/**
* If the document's schema is an XML Schema [XML Schema Part 1]
* , this constant represents the list.
*
The reference type definition is derived by list from the other
* type definition if there exists two type definitions T1 and T2 such
* as the reference type definition is derived from T1 by
* DERIVATION_RESTRICTION
or
* DERIVATION_EXTENSION
, T2 is derived from the other type
* definition by DERIVATION_RESTRICTION
, T1 has {variety} list, and T2 is the {item type definition}. Note that T1 could be the same as
* the reference type definition, and T2 could be the same as the other
* type definition.
*/
public static final int DERIVATION_LIST = 0x00000008;
/**
* This method returns if there is a derivation between the reference
* type definition, i.e. the TypeInfo
on which the method
* is being called, and the other type definition, i.e. the one passed
* as parameters.
* @param typeNamespaceArg the namespace of the other type definition.
* @param typeNameArg the name of the other type definition.
* @param derivationMethod the type of derivation and conditions applied
* between two types, as described in the list of constants provided
* in this interface.
* @return If the document's schema is a DTD or no schema is associated
* with the document, this method will always return false
* . If the document's schema is an XML Schema, the method will
* true
if the reference type definition is derived from
* the other type definition according to the derivation parameter. If
* the value of the parameter is 0
(no bit is set to
* 1
for the derivationMethod
parameter),
* the method will return true
if the other type
* definition can be reached by recursing any combination of {base
* type definition}, {item type definition}, or {member type
* definitions} from the reference type definition.
*/
public boolean isDerivedFrom(String typeNamespaceArg,
String typeNameArg,
int derivationMethod);
}
org/w3c/dom/UserDataHandler.java 100644 0 0 6105 11146172407 14125 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom;
/**
* When associating an object to a key on a node using
* Node.setUserData()
the application can provide a handler
* that gets called when the node the object is associated to is being
* cloned, imported, or renamed. This can be used by the application to
* implement various behaviors regarding the data it associates to the DOM
* nodes. This interface defines that handler.
*
See also the Document Object Model (DOM) Level 3 Core Specification.
* @since DOM Level 3
*/
public interface UserDataHandler {
// OperationType
/**
* The node is cloned, using Node.cloneNode()
.
*/
public static final short NODE_CLONED = 1;
/**
* The node is imported, using Document.importNode()
.
*/
public static final short NODE_IMPORTED = 2;
/**
* The node is deleted.
*
Note: This may not be supported or may not be reliable in
* certain environments, such as Java, where the implementation has no
* real control over when objects are actually deleted.
*/
public static final short NODE_DELETED = 3;
/**
* The node is renamed, using Document.renameNode()
.
*/
public static final short NODE_RENAMED = 4;
/**
* The node is adopted, using Document.adoptNode()
.
*/
public static final short NODE_ADOPTED = 5;
/**
* This method is called whenever the node for which this handler is
* registered is imported or cloned.
*
DOM applications must not raise exceptions in a
* UserDataHandler
. The effect of throwing exceptions from
* the handler is DOM implementation dependent.
* @param operation Specifies the type of operation that is being
* performed on the node.
* @param key Specifies the key for which this handler is being called.
* @param data Specifies the data for which this handler is being called.
* @param src Specifies the node being cloned, adopted, imported, or
* renamed. This is null
when the node is being deleted.
* @param dst Specifies the node newly created if any, or
* null
.
*/
public void handle(short operation,
String key,
Object data,
Node src,
Node dst);
}
org/w3c/dom/bootstrap/DOMImplementationRegistry.java 100644 0 0 34510 11146172404 20230 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.bootstrap;
import java.util.StringTokenizer;
import java.util.Vector;
import org.w3c.dom.DOMImplementationSource;
import org.w3c.dom.DOMImplementationList;
import org.w3c.dom.DOMImplementation;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.security.AccessController;
import java.security.PrivilegedAction;
/**
* A factory that enables applications to obtain instances of
* DOMImplementation
.
*
*
* Example: *
* ** // get an instance of the DOMImplementation registry * DOMImplementationRegistry registry = * DOMImplementationRegistry.newInstance(); * // get a DOM implementation the Level 3 XML module * DOMImplementation domImpl = * registry.getDOMImplementation("XML 3.0"); ** *
* This provides an application with an implementation-independent starting * point. DOM implementations may modify this class to meet new security * standards or to provide *additional* fallbacks for the list of * DOMImplementationSources. *
* * @see DOMImplementation * @see DOMImplementationSource * @since DOM Level 3 */ public final class DOMImplementationRegistry { /** * The system property to specify the * DOMImplementationSource class names. */ public static final String PROPERTY = "org.w3c.dom.DOMImplementationSourceList"; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; /** * Default DOMImplementationSource. */ private static final String DEFAULT_DOM_IMPLEMENTATION_SOURCE = "org.apache.xerces.dom.DOMXSImplementationSourceImpl"; /** * The list of DOMImplementationSources. */ private Vector sources; /** * Private constructor. * @param srcs Vector List of DOMImplementationSources */ private DOMImplementationRegistry(final Vector srcs) { sources = srcs; } /** * Obtain a new instance of aDOMImplementationRegistry
.
*
* The DOMImplementationRegistry
is initialized by the
* application or the implementation, depending on the context, by
* first checking the value of the Java system property
* org.w3c.dom.DOMImplementationSourceList
and
* the the service provider whose contents are at
* "META-INF/services/org.w3c.dom.DOMImplementationSourceList
"
* The value of this property is a white-space separated list of
* names of availables classes implementing the
* DOMImplementationSource
interface. Each class listed
* in the class name list is instantiated and any exceptions
* encountered are thrown to the application.
*
* @return an initialized instance of DOMImplementationRegistry
* @throws ClassNotFoundException
* If any specified class can not be found
* @throws InstantiationException
* If any specified class is an interface or abstract class
* @throws IllegalAccessException
* If the default constructor of a specified class is not accessible
* @throws ClassCastException
* If any specified class does not implement
* DOMImplementationSource
*/
public static DOMImplementationRegistry newInstance()
throws
ClassNotFoundException,
InstantiationException,
IllegalAccessException,
ClassCastException {
Vector sources = new Vector();
ClassLoader classLoader = getClassLoader();
// fetch system property:
String p = getSystemProperty(PROPERTY);
//
// if property is not specified then use contents of
// META-INF/org.w3c.dom.DOMImplementationSourceList from classpath
if (p == null || p.length() == 0) {
p = getServiceValue(classLoader);
}
if (p == null) {
//
// DOM Implementations can modify here to add *additional* fallback
// mechanisms to access a list of default DOMImplementationSources.
p = DEFAULT_DOM_IMPLEMENTATION_SOURCE;
}
if (p != null) {
StringTokenizer st = new StringTokenizer(p);
while (st.hasMoreTokens()) {
String sourceName = st.nextToken();
// Use context class loader, falling back to Class.forName
// if and only if this fails...
Class sourceClass = null;
if (classLoader != null) {
sourceClass = classLoader.loadClass(sourceName);
} else {
sourceClass = Class.forName(sourceName);
}
DOMImplementationSource source =
(DOMImplementationSource) sourceClass.newInstance();
sources.addElement(source);
}
}
return new DOMImplementationRegistry(sources);
}
/**
* Return the first implementation that has the desired
* features, or null
if none is found.
*
* @param features
* A string that specifies which features are required. This is
* a space separated list in which each feature is specified by
* its name optionally followed by a space and a version number.
* This is something like: "XML 1.0 Traversal +Events 2.0"
* @return An implementation that has the desired features,
* or null
if none found.
*/
public DOMImplementation getDOMImplementation(final String features) {
int size = sources.size();
String name = null;
for (int i = 0; i < size; i++) {
DOMImplementationSource source =
(DOMImplementationSource) sources.elementAt(i);
DOMImplementation impl = source.getDOMImplementation(features);
if (impl != null) {
return impl;
}
}
return null;
}
/**
* Return a list of implementations that support the
* desired features.
*
* @param features
* A string that specifies which features are required. This is
* a space separated list in which each feature is specified by
* its name optionally followed by a space and a version number.
* This is something like: "XML 1.0 Traversal +Events 2.0"
* @return A list of DOMImplementations that support the desired features.
*/
public DOMImplementationList getDOMImplementationList(final String features) {
final Vector implementations = new Vector();
int size = sources.size();
for (int i = 0; i < size; i++) {
DOMImplementationSource source =
(DOMImplementationSource) sources.elementAt(i);
DOMImplementationList impls =
source.getDOMImplementationList(features);
for (int j = 0; j < impls.getLength(); j++) {
DOMImplementation impl = impls.item(j);
implementations.addElement(impl);
}
}
return new DOMImplementationList() {
public DOMImplementation item(final int index) {
if (index >= 0 && index < implementations.size()) {
try {
return (DOMImplementation)
implementations.elementAt(index);
} catch (ArrayIndexOutOfBoundsException e) {
return null;
}
}
return null;
}
public int getLength() {
return implementations.size();
}
};
}
/**
* Register an implementation.
*
* @param s The source to be registered, may not be null
*/
public void addSource(final DOMImplementationSource s) {
if (s == null) {
throw new NullPointerException();
}
if (!sources.contains(s)) {
sources.addElement(s);
}
}
/**
*
* Gets a class loader.
*
* @return A class loader, possibly null
*/
private static ClassLoader getClassLoader() {
try {
ClassLoader contextClassLoader = getContextClassLoader();
if (contextClassLoader != null) {
return contextClassLoader;
}
} catch (Exception e) {
// Assume that the DOM application is in a JRE 1.1, use the
// current ClassLoader
return DOMImplementationRegistry.class.getClassLoader();
}
return DOMImplementationRegistry.class.getClassLoader();
}
/**
* This method attempts to return the first line of the resource
* META-INF/services/org.w3c.dom.DOMImplementationSourceList
* from the provided ClassLoader.
*
* @param classLoader classLoader, may not be null
.
* @return first line of resource, or null
*/
private static String getServiceValue(final ClassLoader classLoader) {
String serviceId = "META-INF/services/" + PROPERTY;
// try to find services in CLASSPATH
try {
InputStream is = getResourceAsStream(classLoader, serviceId);
if (is != null) {
BufferedReader rd;
try {
rd =
new BufferedReader(new InputStreamReader(is, "UTF-8"),
DEFAULT_LINE_LENGTH);
} catch (java.io.UnsupportedEncodingException e) {
rd =
new BufferedReader(new InputStreamReader(is),
DEFAULT_LINE_LENGTH);
}
String serviceValue = null;
try {
serviceValue = rd.readLine();
}
finally {
rd.close();
}
if (serviceValue != null && serviceValue.length() > 0) {
return serviceValue;
}
}
} catch (Exception ex) {
return null;
}
return null;
}
/**
* A simple JRE (Java Runtime Environment) 1.1 test
*
* @return true
if JRE 1.1
*/
private static boolean isJRE11() {
try {
Class c = Class.forName("java.security.AccessController");
// java.security.AccessController existed since 1.2 so, if no
// exception was thrown, the DOM application is running in a JRE
// 1.2 or higher
return false;
} catch (Exception ex) {
// ignore
}
return true;
}
/**
* This method returns the ContextClassLoader or null
if
* running in a JRE 1.1
*
* @return The Context Classloader
*/
private static ClassLoader getContextClassLoader() {
return isJRE11()
? null
: (ClassLoader)
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
ClassLoader classLoader = null;
try {
classLoader =
Thread.currentThread().getContextClassLoader();
} catch (SecurityException ex) {
}
return classLoader;
}
});
}
/**
* This method returns the system property indicated by the specified name
* after checking access control privileges. For a JRE 1.1, this check is
* not done.
*
* @param name the name of the system property
* @return the system property
*/
private static String getSystemProperty(final String name) {
return isJRE11()
? (String) System.getProperty(name)
: (String) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return System.getProperty(name);
}
});
}
/**
* This method returns an Inputstream for the reading resource
* META-INF/services/org.w3c.dom.DOMImplementationSourceList after checking
* access control privileges. For a JRE 1.1, this check is not done.
*
* @param classLoader classLoader
* @param name the resource
* @return an Inputstream for the resource specified
*/
private static InputStream getResourceAsStream(final ClassLoader classLoader,
final String name) {
if (isJRE11()) {
InputStream ris;
if (classLoader == null) {
ris = ClassLoader.getSystemResourceAsStream(name);
} else {
ris = classLoader.getResourceAsStream(name);
}
return ris;
} else {
return (InputStream)
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
InputStream ris;
if (classLoader == null) {
ris =
ClassLoader.getSystemResourceAsStream(name);
} else {
ris = classLoader.getResourceAsStream(name);
}
return ris;
}
});
}
}
}
org/w3c/dom/css/CSS2Properties.java 100644 0 0 203131 11146172406 14533 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSS2Properties
interface represents a convenience
* mechanism for retrieving and setting properties within a
* CSSStyleDeclaration
. The attributes of this interface
* correspond to all the properties specified in CSS2. Getting an attribute
* of this interface is equivalent to calling the
* getPropertyValue
method of the
* CSSStyleDeclaration
interface. Setting an attribute of this
* interface is equivalent to calling the setProperty
method of
* the CSSStyleDeclaration
interface.
* A conformant implementation of the CSS module is not required to
* implement the CSS2Properties
interface. If an implementation
* does implement this interface, the expectation is that language-specific
* methods can be used to cast from an instance of the
* CSSStyleDeclaration
interface to the
* CSS2Properties
interface.
*
If an implementation does implement this interface, it is expected to
* understand the specific syntax of the shorthand properties, and apply
* their semantics; when the margin
property is set, for
* example, the marginTop
, marginRight
,
* marginBottom
and marginLeft
properties are
* actually being set by the underlying implementation.
*
When dealing with CSS "shorthand" properties, the shorthand properties * should be decomposed into their component longhand properties as * appropriate, and when querying for their value, the form returned should * be the shortest form exactly equivalent to the declarations made in the * ruleset. However, if there is no shorthand declaration that could be * added to the ruleset without changing in any way the rules already * declared in the ruleset (i.e., by adding longhand rules that were * previously not declared in the ruleset), then the empty string should be * returned for the shorthand property. *
For example, querying for the font
property should not
* return "normal normal normal 14pt/normal Arial, sans-serif", when "14pt
* Arial, sans-serif" suffices. (The normals are initial values, and are
* implied by use of the longhand property.)
*
If the values for all the longhand properties that compose a particular
* string are the initial values, then a string consisting of all the
* initial values should be returned (e.g. a border-width
value
* of "medium" should be returned as such, not as "").
*
For some shorthand properties that take missing values from other
* sides, such as the margin
, padding
, and
* border-[width|style|color]
properties, the minimum number of
* sides possible should be used; i.e., "0px 10px" will be returned instead
* of "0px 10px 0px 10px".
*
If the value of a shorthand property can not be decomposed into its
* component longhand properties, as is the case for the font
* property with a value of "menu", querying for the values of the component
* longhand properties should return the empty string.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSS2Properties {
/**
* See the azimuth property definition in CSS2.
*/
public String getAzimuth();
/**
* See the azimuth property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setAzimuth(String azimuth)
throws DOMException;
/**
* See the background property definition in CSS2.
*/
public String getBackground();
/**
* See the background property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBackground(String background)
throws DOMException;
/**
* See the background-attachment property definition in CSS2.
*/
public String getBackgroundAttachment();
/**
* See the background-attachment property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBackgroundAttachment(String backgroundAttachment)
throws DOMException;
/**
* See the background-color property definition in CSS2.
*/
public String getBackgroundColor();
/**
* See the background-color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBackgroundColor(String backgroundColor)
throws DOMException;
/**
* See the background-image property definition in CSS2.
*/
public String getBackgroundImage();
/**
* See the background-image property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBackgroundImage(String backgroundImage)
throws DOMException;
/**
* See the background-position property definition in CSS2.
*/
public String getBackgroundPosition();
/**
* See the background-position property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBackgroundPosition(String backgroundPosition)
throws DOMException;
/**
* See the background-repeat property definition in CSS2.
*/
public String getBackgroundRepeat();
/**
* See the background-repeat property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBackgroundRepeat(String backgroundRepeat)
throws DOMException;
/**
* See the border property definition in CSS2.
*/
public String getBorder();
/**
* See the border property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorder(String border)
throws DOMException;
/**
* See the border-collapse property definition in CSS2.
*/
public String getBorderCollapse();
/**
* See the border-collapse property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderCollapse(String borderCollapse)
throws DOMException;
/**
* See the border-color property definition in CSS2.
*/
public String getBorderColor();
/**
* See the border-color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderColor(String borderColor)
throws DOMException;
/**
* See the border-spacing property definition in CSS2.
*/
public String getBorderSpacing();
/**
* See the border-spacing property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderSpacing(String borderSpacing)
throws DOMException;
/**
* See the border-style property definition in CSS2.
*/
public String getBorderStyle();
/**
* See the border-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderStyle(String borderStyle)
throws DOMException;
/**
* See the border-top property definition in CSS2.
*/
public String getBorderTop();
/**
* See the border-top property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderTop(String borderTop)
throws DOMException;
/**
* See the border-right property definition in CSS2.
*/
public String getBorderRight();
/**
* See the border-right property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderRight(String borderRight)
throws DOMException;
/**
* See the border-bottom property definition in CSS2.
*/
public String getBorderBottom();
/**
* See the border-bottom property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderBottom(String borderBottom)
throws DOMException;
/**
* See the border-left property definition in CSS2.
*/
public String getBorderLeft();
/**
* See the border-left property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderLeft(String borderLeft)
throws DOMException;
/**
* See the border-top-color property definition in CSS2.
*/
public String getBorderTopColor();
/**
* See the border-top-color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderTopColor(String borderTopColor)
throws DOMException;
/**
* See the border-right-color property definition in CSS2.
*/
public String getBorderRightColor();
/**
* See the border-right-color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderRightColor(String borderRightColor)
throws DOMException;
/**
* See the border-bottom-color property definition in CSS2.
*/
public String getBorderBottomColor();
/**
* See the border-bottom-color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderBottomColor(String borderBottomColor)
throws DOMException;
/**
* See the border-left-color property definition in CSS2.
*/
public String getBorderLeftColor();
/**
* See the border-left-color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderLeftColor(String borderLeftColor)
throws DOMException;
/**
* See the border-top-style property definition in CSS2.
*/
public String getBorderTopStyle();
/**
* See the border-top-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderTopStyle(String borderTopStyle)
throws DOMException;
/**
* See the border-right-style property definition in CSS2.
*/
public String getBorderRightStyle();
/**
* See the border-right-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderRightStyle(String borderRightStyle)
throws DOMException;
/**
* See the border-bottom-style property definition in CSS2.
*/
public String getBorderBottomStyle();
/**
* See the border-bottom-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderBottomStyle(String borderBottomStyle)
throws DOMException;
/**
* See the border-left-style property definition in CSS2.
*/
public String getBorderLeftStyle();
/**
* See the border-left-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderLeftStyle(String borderLeftStyle)
throws DOMException;
/**
* See the border-top-width property definition in CSS2.
*/
public String getBorderTopWidth();
/**
* See the border-top-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderTopWidth(String borderTopWidth)
throws DOMException;
/**
* See the border-right-width property definition in CSS2.
*/
public String getBorderRightWidth();
/**
* See the border-right-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderRightWidth(String borderRightWidth)
throws DOMException;
/**
* See the border-bottom-width property definition in CSS2.
*/
public String getBorderBottomWidth();
/**
* See the border-bottom-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderBottomWidth(String borderBottomWidth)
throws DOMException;
/**
* See the border-left-width property definition in CSS2.
*/
public String getBorderLeftWidth();
/**
* See the border-left-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderLeftWidth(String borderLeftWidth)
throws DOMException;
/**
* See the border-width property definition in CSS2.
*/
public String getBorderWidth();
/**
* See the border-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBorderWidth(String borderWidth)
throws DOMException;
/**
* See the bottom property definition in CSS2.
*/
public String getBottom();
/**
* See the bottom property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setBottom(String bottom)
throws DOMException;
/**
* See the caption-side property definition in CSS2.
*/
public String getCaptionSide();
/**
* See the caption-side property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCaptionSide(String captionSide)
throws DOMException;
/**
* See the clear property definition in CSS2.
*/
public String getClear();
/**
* See the clear property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setClear(String clear)
throws DOMException;
/**
* See the clip property definition in CSS2.
*/
public String getClip();
/**
* See the clip property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setClip(String clip)
throws DOMException;
/**
* See the color property definition in CSS2.
*/
public String getColor();
/**
* See the color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setColor(String color)
throws DOMException;
/**
* See the content property definition in CSS2.
*/
public String getContent();
/**
* See the content property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setContent(String content)
throws DOMException;
/**
* See the counter-increment property definition in CSS2.
*/
public String getCounterIncrement();
/**
* See the counter-increment property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCounterIncrement(String counterIncrement)
throws DOMException;
/**
* See the counter-reset property definition in CSS2.
*/
public String getCounterReset();
/**
* See the counter-reset property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCounterReset(String counterReset)
throws DOMException;
/**
* See the cue property definition in CSS2.
*/
public String getCue();
/**
* See the cue property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCue(String cue)
throws DOMException;
/**
* See the cue-after property definition in CSS2.
*/
public String getCueAfter();
/**
* See the cue-after property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCueAfter(String cueAfter)
throws DOMException;
/**
* See the cue-before property definition in CSS2.
*/
public String getCueBefore();
/**
* See the cue-before property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCueBefore(String cueBefore)
throws DOMException;
/**
* See the cursor property definition in CSS2.
*/
public String getCursor();
/**
* See the cursor property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCursor(String cursor)
throws DOMException;
/**
* See the direction property definition in CSS2.
*/
public String getDirection();
/**
* See the direction property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setDirection(String direction)
throws DOMException;
/**
* See the display property definition in CSS2.
*/
public String getDisplay();
/**
* See the display property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setDisplay(String display)
throws DOMException;
/**
* See the elevation property definition in CSS2.
*/
public String getElevation();
/**
* See the elevation property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setElevation(String elevation)
throws DOMException;
/**
* See the empty-cells property definition in CSS2.
*/
public String getEmptyCells();
/**
* See the empty-cells property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setEmptyCells(String emptyCells)
throws DOMException;
/**
* See the float property definition in CSS2.
*/
public String getCssFloat();
/**
* See the float property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setCssFloat(String cssFloat)
throws DOMException;
/**
* See the font property definition in CSS2.
*/
public String getFont();
/**
* See the font property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFont(String font)
throws DOMException;
/**
* See the font-family property definition in CSS2.
*/
public String getFontFamily();
/**
* See the font-family property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFontFamily(String fontFamily)
throws DOMException;
/**
* See the font-size property definition in CSS2.
*/
public String getFontSize();
/**
* See the font-size property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFontSize(String fontSize)
throws DOMException;
/**
* See the font-size-adjust property definition in CSS2.
*/
public String getFontSizeAdjust();
/**
* See the font-size-adjust property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFontSizeAdjust(String fontSizeAdjust)
throws DOMException;
/**
* See the font-stretch property definition in CSS2.
*/
public String getFontStretch();
/**
* See the font-stretch property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFontStretch(String fontStretch)
throws DOMException;
/**
* See the font-style property definition in CSS2.
*/
public String getFontStyle();
/**
* See the font-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFontStyle(String fontStyle)
throws DOMException;
/**
* See the font-variant property definition in CSS2.
*/
public String getFontVariant();
/**
* See the font-variant property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFontVariant(String fontVariant)
throws DOMException;
/**
* See the font-weight property definition in CSS2.
*/
public String getFontWeight();
/**
* See the font-weight property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFontWeight(String fontWeight)
throws DOMException;
/**
* See the height property definition in CSS2.
*/
public String getHeight();
/**
* See the height property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setHeight(String height)
throws DOMException;
/**
* See the left property definition in CSS2.
*/
public String getLeft();
/**
* See the left property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setLeft(String left)
throws DOMException;
/**
* See the letter-spacing property definition in CSS2.
*/
public String getLetterSpacing();
/**
* See the letter-spacing property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setLetterSpacing(String letterSpacing)
throws DOMException;
/**
* See the line-height property definition in CSS2.
*/
public String getLineHeight();
/**
* See the line-height property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setLineHeight(String lineHeight)
throws DOMException;
/**
* See the list-style property definition in CSS2.
*/
public String getListStyle();
/**
* See the list-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setListStyle(String listStyle)
throws DOMException;
/**
* See the list-style-image property definition in CSS2.
*/
public String getListStyleImage();
/**
* See the list-style-image property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setListStyleImage(String listStyleImage)
throws DOMException;
/**
* See the list-style-position property definition in CSS2.
*/
public String getListStylePosition();
/**
* See the list-style-position property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setListStylePosition(String listStylePosition)
throws DOMException;
/**
* See the list-style-type property definition in CSS2.
*/
public String getListStyleType();
/**
* See the list-style-type property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setListStyleType(String listStyleType)
throws DOMException;
/**
* See the margin property definition in CSS2.
*/
public String getMargin();
/**
* See the margin property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMargin(String margin)
throws DOMException;
/**
* See the margin-top property definition in CSS2.
*/
public String getMarginTop();
/**
* See the margin-top property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMarginTop(String marginTop)
throws DOMException;
/**
* See the margin-right property definition in CSS2.
*/
public String getMarginRight();
/**
* See the margin-right property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMarginRight(String marginRight)
throws DOMException;
/**
* See the margin-bottom property definition in CSS2.
*/
public String getMarginBottom();
/**
* See the margin-bottom property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMarginBottom(String marginBottom)
throws DOMException;
/**
* See the margin-left property definition in CSS2.
*/
public String getMarginLeft();
/**
* See the margin-left property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMarginLeft(String marginLeft)
throws DOMException;
/**
* See the marker-offset property definition in CSS2.
*/
public String getMarkerOffset();
/**
* See the marker-offset property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMarkerOffset(String markerOffset)
throws DOMException;
/**
* See the marks property definition in CSS2.
*/
public String getMarks();
/**
* See the marks property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMarks(String marks)
throws DOMException;
/**
* See the max-height property definition in CSS2.
*/
public String getMaxHeight();
/**
* See the max-height property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMaxHeight(String maxHeight)
throws DOMException;
/**
* See the max-width property definition in CSS2.
*/
public String getMaxWidth();
/**
* See the max-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMaxWidth(String maxWidth)
throws DOMException;
/**
* See the min-height property definition in CSS2.
*/
public String getMinHeight();
/**
* See the min-height property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMinHeight(String minHeight)
throws DOMException;
/**
* See the min-width property definition in CSS2.
*/
public String getMinWidth();
/**
* See the min-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setMinWidth(String minWidth)
throws DOMException;
/**
* See the orphans property definition in CSS2.
*/
public String getOrphans();
/**
* See the orphans property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setOrphans(String orphans)
throws DOMException;
/**
* See the outline property definition in CSS2.
*/
public String getOutline();
/**
* See the outline property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setOutline(String outline)
throws DOMException;
/**
* See the outline-color property definition in CSS2.
*/
public String getOutlineColor();
/**
* See the outline-color property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setOutlineColor(String outlineColor)
throws DOMException;
/**
* See the outline-style property definition in CSS2.
*/
public String getOutlineStyle();
/**
* See the outline-style property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setOutlineStyle(String outlineStyle)
throws DOMException;
/**
* See the outline-width property definition in CSS2.
*/
public String getOutlineWidth();
/**
* See the outline-width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setOutlineWidth(String outlineWidth)
throws DOMException;
/**
* See the overflow property definition in CSS2.
*/
public String getOverflow();
/**
* See the overflow property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setOverflow(String overflow)
throws DOMException;
/**
* See the padding property definition in CSS2.
*/
public String getPadding();
/**
* See the padding property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPadding(String padding)
throws DOMException;
/**
* See the padding-top property definition in CSS2.
*/
public String getPaddingTop();
/**
* See the padding-top property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPaddingTop(String paddingTop)
throws DOMException;
/**
* See the padding-right property definition in CSS2.
*/
public String getPaddingRight();
/**
* See the padding-right property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPaddingRight(String paddingRight)
throws DOMException;
/**
* See the padding-bottom property definition in CSS2.
*/
public String getPaddingBottom();
/**
* See the padding-bottom property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPaddingBottom(String paddingBottom)
throws DOMException;
/**
* See the padding-left property definition in CSS2.
*/
public String getPaddingLeft();
/**
* See the padding-left property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPaddingLeft(String paddingLeft)
throws DOMException;
/**
* See the page property definition in CSS2.
*/
public String getPage();
/**
* See the page property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPage(String page)
throws DOMException;
/**
* See the page-break-after property definition in CSS2.
*/
public String getPageBreakAfter();
/**
* See the page-break-after property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPageBreakAfter(String pageBreakAfter)
throws DOMException;
/**
* See the page-break-before property definition in CSS2.
*/
public String getPageBreakBefore();
/**
* See the page-break-before property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPageBreakBefore(String pageBreakBefore)
throws DOMException;
/**
* See the page-break-inside property definition in CSS2.
*/
public String getPageBreakInside();
/**
* See the page-break-inside property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPageBreakInside(String pageBreakInside)
throws DOMException;
/**
* See the pause property definition in CSS2.
*/
public String getPause();
/**
* See the pause property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPause(String pause)
throws DOMException;
/**
* See the pause-after property definition in CSS2.
*/
public String getPauseAfter();
/**
* See the pause-after property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPauseAfter(String pauseAfter)
throws DOMException;
/**
* See the pause-before property definition in CSS2.
*/
public String getPauseBefore();
/**
* See the pause-before property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPauseBefore(String pauseBefore)
throws DOMException;
/**
* See the pitch property definition in CSS2.
*/
public String getPitch();
/**
* See the pitch property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPitch(String pitch)
throws DOMException;
/**
* See the pitch-range property definition in CSS2.
*/
public String getPitchRange();
/**
* See the pitch-range property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPitchRange(String pitchRange)
throws DOMException;
/**
* See the play-during property definition in CSS2.
*/
public String getPlayDuring();
/**
* See the play-during property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPlayDuring(String playDuring)
throws DOMException;
/**
* See the position property definition in CSS2.
*/
public String getPosition();
/**
* See the position property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setPosition(String position)
throws DOMException;
/**
* See the quotes property definition in CSS2.
*/
public String getQuotes();
/**
* See the quotes property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setQuotes(String quotes)
throws DOMException;
/**
* See the richness property definition in CSS2.
*/
public String getRichness();
/**
* See the richness property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setRichness(String richness)
throws DOMException;
/**
* See the right property definition in CSS2.
*/
public String getRight();
/**
* See the right property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setRight(String right)
throws DOMException;
/**
* See the size property definition in CSS2.
*/
public String getSize();
/**
* See the size property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setSize(String size)
throws DOMException;
/**
* See the speak property definition in CSS2.
*/
public String getSpeak();
/**
* See the speak property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setSpeak(String speak)
throws DOMException;
/**
* See the speak-header property definition in CSS2.
*/
public String getSpeakHeader();
/**
* See the speak-header property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setSpeakHeader(String speakHeader)
throws DOMException;
/**
* See the speak-numeral property definition in CSS2.
*/
public String getSpeakNumeral();
/**
* See the speak-numeral property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setSpeakNumeral(String speakNumeral)
throws DOMException;
/**
* See the speak-punctuation property definition in CSS2.
*/
public String getSpeakPunctuation();
/**
* See the speak-punctuation property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setSpeakPunctuation(String speakPunctuation)
throws DOMException;
/**
* See the speech-rate property definition in CSS2.
*/
public String getSpeechRate();
/**
* See the speech-rate property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setSpeechRate(String speechRate)
throws DOMException;
/**
* See the stress property definition in CSS2.
*/
public String getStress();
/**
* See the stress property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setStress(String stress)
throws DOMException;
/**
* See the table-layout property definition in CSS2.
*/
public String getTableLayout();
/**
* See the table-layout property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setTableLayout(String tableLayout)
throws DOMException;
/**
* See the text-align property definition in CSS2.
*/
public String getTextAlign();
/**
* See the text-align property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setTextAlign(String textAlign)
throws DOMException;
/**
* See the text-decoration property definition in CSS2.
*/
public String getTextDecoration();
/**
* See the text-decoration property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setTextDecoration(String textDecoration)
throws DOMException;
/**
* See the text-indent property definition in CSS2.
*/
public String getTextIndent();
/**
* See the text-indent property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setTextIndent(String textIndent)
throws DOMException;
/**
* See the text-shadow property definition in CSS2.
*/
public String getTextShadow();
/**
* See the text-shadow property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setTextShadow(String textShadow)
throws DOMException;
/**
* See the text-transform property definition in CSS2.
*/
public String getTextTransform();
/**
* See the text-transform property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setTextTransform(String textTransform)
throws DOMException;
/**
* See the top property definition in CSS2.
*/
public String getTop();
/**
* See the top property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setTop(String top)
throws DOMException;
/**
* See the unicode-bidi property definition in CSS2.
*/
public String getUnicodeBidi();
/**
* See the unicode-bidi property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setUnicodeBidi(String unicodeBidi)
throws DOMException;
/**
* See the vertical-align property definition in CSS2.
*/
public String getVerticalAlign();
/**
* See the vertical-align property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setVerticalAlign(String verticalAlign)
throws DOMException;
/**
* See the visibility property definition in CSS2.
*/
public String getVisibility();
/**
* See the visibility property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setVisibility(String visibility)
throws DOMException;
/**
* See the voice-family property definition in CSS2.
*/
public String getVoiceFamily();
/**
* See the voice-family property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setVoiceFamily(String voiceFamily)
throws DOMException;
/**
* See the volume property definition in CSS2.
*/
public String getVolume();
/**
* See the volume property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setVolume(String volume)
throws DOMException;
/**
* See the white-space property definition in CSS2.
*/
public String getWhiteSpace();
/**
* See the white-space property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setWhiteSpace(String whiteSpace)
throws DOMException;
/**
* See the widows property definition in CSS2.
*/
public String getWidows();
/**
* See the widows property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setWidows(String widows)
throws DOMException;
/**
* See the width property definition in CSS2.
*/
public String getWidth();
/**
* See the width property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setWidth(String width)
throws DOMException;
/**
* See the word-spacing property definition in CSS2.
*/
public String getWordSpacing();
/**
* See the word-spacing property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setWordSpacing(String wordSpacing)
throws DOMException;
/**
* See the z-index property definition in CSS2.
*/
public String getZIndex();
/**
* See the z-index property definition in CSS2.
* @exception DOMException
* SYNTAX_ERR: Raised if the new value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setZIndex(String zIndex)
throws DOMException;
}
org/w3c/dom/css/CSSCharsetRule.java 100644 0 0 4575 11146172406 14511 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSSCharsetRule
interface represents a @charset rule in a
* CSS style sheet. The value of the encoding
attribute does
* not affect the encoding of text data in the DOM objects; this encoding is
* always UTF-16. After a stylesheet is loaded, the value of the
* encoding
attribute is the value found in the
* @charset
rule. If there was no @charset
in the
* original document, then no CSSCharsetRule
is created. The
* value of the encoding
attribute may also be used as a hint
* for the encoding used on serialization of the style sheet.
*
The value of the @charset rule (and therefore of the
* CSSCharsetRule
) may not correspond to the encoding the
* document actually came in; character encoding information e.g. in an HTTP
* header, has priority (see CSS document representation) but this is not
* reflected in the CSSCharsetRule
.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSCharsetRule extends CSSRule {
/**
* The encoding information used in this @charset
rule.
*/
public String getEncoding();
/**
* The encoding information used in this @charset
rule.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified encoding value has a syntax error
* and is unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this encoding rule is
* readonly.
*/
public void setEncoding(String encoding)
throws DOMException;
}
org/w3c/dom/css/CSSFontFaceRule.java 100644 0 0 2155 11146172406 14575 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* The CSSFontFaceRule
interface represents a @font-face rule in
* a CSS style sheet. The @font-face
rule is used to hold a set
* of font descriptions.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSFontFaceRule extends CSSRule {
/**
* The declaration-block of this rule.
*/
public CSSStyleDeclaration getStyle();
}
org/w3c/dom/css/CSSImportRule.java 100644 0 0 3344 11146172406 14363 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.stylesheets.MediaList;
/**
* The CSSImportRule
interface represents a @import rule within
* a CSS style sheet. The @import
rule is used to import style
* rules from other style sheets.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSImportRule extends CSSRule {
/**
* The location of the style sheet to be imported. The attribute will not
* contain the "url(...)"
specifier around the URI.
*/
public String getHref();
/**
* A list of media types for which this style sheet may be used.
*/
public MediaList getMedia();
/**
* The style sheet referred to by this rule, if it has been loaded. The
* value of this attribute is null
if the style sheet has
* not yet been loaded or if it will not be loaded (e.g. if the style
* sheet is for a media type not supported by the user agent).
*/
public CSSStyleSheet getStyleSheet();
}
org/w3c/dom/css/CSSMediaRule.java 100644 0 0 6257 11146172406 14136 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
import org.w3c.dom.stylesheets.MediaList;
/**
* The CSSMediaRule
interface represents a @media rule in a CSS
* style sheet. A @media
rule can be used to delimit style
* rules for specific media types.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSMediaRule extends CSSRule {
/**
* A list of media types for this rule.
*/
public MediaList getMedia();
/**
* A list of all CSS rules contained within the media block.
*/
public CSSRuleList getCssRules();
/**
* Used to insert a new rule into the media block.
* @param rule The parsable text representing the rule. For rule sets
* this contains both the selector and the style declaration. For
* at-rules, this specifies both the at-identifier and the rule
* content.
* @param index The index within the media block's rule collection of
* the rule before which to insert the specified rule. If the
* specified index is equal to the length of the media blocks's rule
* collection, the rule will be added to the end of the media block.
* @return The index within the media block's rule collection of the
* newly inserted rule.
* @exception DOMException
* HIERARCHY_REQUEST_ERR: Raised if the rule cannot be inserted at the
* specified index, e.g., if an @import
rule is inserted
* after a standard rule set or other at-rule.
*
INDEX_SIZE_ERR: Raised if the specified index is not a valid
* insertion point.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this media rule is
* readonly.
*
SYNTAX_ERR: Raised if the specified rule has a syntax error and
* is unparsable.
*/
public int insertRule(String rule,
int index)
throws DOMException;
/**
* Used to delete a rule from the media block.
* @param index The index within the media block's rule collection of
* the rule to remove.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if the specified index does not correspond to
* a rule in the media rule list.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this media rule is
* readonly.
*/
public void deleteRule(int index)
throws DOMException;
}
org/w3c/dom/css/CSSPageRule.java 100644 0 0 3345 11146172406 13766 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSSPageRule
interface represents a @page rule within a
* CSS style sheet. The @page
rule is used to specify the
* dimensions, orientation, margins, etc. of a page box for paged media.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSPageRule extends CSSRule {
/**
* The parsable textual representation of the page selector for the rule.
*/
public String getSelectorText();
/**
* The parsable textual representation of the page selector for the rule.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified CSS string value has a syntax
* error and is unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this rule is readonly.
*/
public void setSelectorText(String selectorText)
throws DOMException;
/**
* The declaration-block of this rule.
*/
public CSSStyleDeclaration getStyle();
}
org/w3c/dom/css/CSSPrimitiveValue.java 100644 0 0 32341 11146172406 15245 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSSPrimitiveValue
interface represents a single CSS value
* . This interface may be used to determine the value of a specific style
* property currently set in a block or to set a specific style property
* explicitly within the block. An instance of this interface might be
* obtained from the getPropertyCSSValue
method of the
* CSSStyleDeclaration
interface. A
* CSSPrimitiveValue
object only occurs in a context of a CSS
* property.
*
Conversions are allowed between absolute values (from millimeters to
* centimeters, from degrees to radians, and so on) but not between relative
* values. (For example, a pixel value cannot be converted to a centimeter
* value.) Percentage values can't be converted since they are relative to
* the parent value (or another property value). There is one exception for
* color percentage values: since a color percentage value is relative to
* the range 0-255, a color percentage value can be converted to a number;
* (see also the RGBColor
interface).
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSPrimitiveValue extends CSSValue {
// UnitTypes
/**
* The value is not a recognized CSS2 value. The value can only be
* obtained by using the cssText
attribute.
*/
public static final short CSS_UNKNOWN = 0;
/**
* The value is a simple number. The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_NUMBER = 1;
/**
* The value is a percentage. The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_PERCENTAGE = 2;
/**
* The value is a length (ems). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_EMS = 3;
/**
* The value is a length (exs). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_EXS = 4;
/**
* The value is a length (px). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_PX = 5;
/**
* The value is a length (cm). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_CM = 6;
/**
* The value is a length (mm). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_MM = 7;
/**
* The value is a length (in). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_IN = 8;
/**
* The value is a length (pt). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_PT = 9;
/**
* The value is a length (pc). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_PC = 10;
/**
* The value is an angle (deg). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_DEG = 11;
/**
* The value is an angle (rad). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_RAD = 12;
/**
* The value is an angle (grad). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_GRAD = 13;
/**
* The value is a time (ms). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_MS = 14;
/**
* The value is a time (s). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_S = 15;
/**
* The value is a frequency (Hz). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_HZ = 16;
/**
* The value is a frequency (kHz). The value can be obtained by using the
* getFloatValue
method.
*/
public static final short CSS_KHZ = 17;
/**
* The value is a number with an unknown dimension. The value can be
* obtained by using the getFloatValue
method.
*/
public static final short CSS_DIMENSION = 18;
/**
* The value is a STRING. The value can be obtained by using the
* getStringValue
method.
*/
public static final short CSS_STRING = 19;
/**
* The value is a URI. The value can be obtained by using the
* getStringValue
method.
*/
public static final short CSS_URI = 20;
/**
* The value is an identifier. The value can be obtained by using the
* getStringValue
method.
*/
public static final short CSS_IDENT = 21;
/**
* The value is a attribute function. The value can be obtained by using
* the getStringValue
method.
*/
public static final short CSS_ATTR = 22;
/**
* The value is a counter or counters function. The value can be obtained
* by using the getCounterValue
method.
*/
public static final short CSS_COUNTER = 23;
/**
* The value is a rect function. The value can be obtained by using the
* getRectValue
method.
*/
public static final short CSS_RECT = 24;
/**
* The value is a RGB color. The value can be obtained by using the
* getRGBColorValue
method.
*/
public static final short CSS_RGBCOLOR = 25;
/**
* The type of the value as defined by the constants specified above.
*/
public short getPrimitiveType();
/**
* A method to set the float value with a specified unit. If the property
* attached with this value can not accept the specified unit or the
* float value, the value will be unchanged and a
* DOMException
will be raised.
* @param unitType A unit code as defined above. The unit code can only
* be a float unit type (i.e. CSS_NUMBER
,
* CSS_PERCENTAGE
, CSS_EMS
,
* CSS_EXS
, CSS_PX
, CSS_CM
,
* CSS_MM
, CSS_IN
, CSS_PT
,
* CSS_PC
, CSS_DEG
, CSS_RAD
,
* CSS_GRAD
, CSS_MS
, CSS_S
,
* CSS_HZ
, CSS_KHZ
,
* CSS_DIMENSION
).
* @param floatValue The new float value.
* @exception DOMException
* INVALID_ACCESS_ERR: Raised if the attached property doesn't support
* the float value or the unit type.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setFloatValue(short unitType,
float floatValue)
throws DOMException;
/**
* This method is used to get a float value in a specified unit. If this
* CSS value doesn't contain a float value or can't be converted into
* the specified unit, a DOMException
is raised.
* @param unitType A unit code to get the float value. The unit code can
* only be a float unit type (i.e. CSS_NUMBER
,
* CSS_PERCENTAGE
, CSS_EMS
,
* CSS_EXS
, CSS_PX
, CSS_CM
,
* CSS_MM
, CSS_IN
, CSS_PT
,
* CSS_PC
, CSS_DEG
, CSS_RAD
,
* CSS_GRAD
, CSS_MS
, CSS_S
,
* CSS_HZ
, CSS_KHZ
,
* CSS_DIMENSION
).
* @return The float value in the specified unit.
* @exception DOMException
* INVALID_ACCESS_ERR: Raised if the CSS value doesn't contain a float
* value or if the float value can't be converted into the specified
* unit.
*/
public float getFloatValue(short unitType)
throws DOMException;
/**
* A method to set the string value with the specified unit. If the
* property attached to this value can't accept the specified unit or
* the string value, the value will be unchanged and a
* DOMException
will be raised.
* @param stringType A string code as defined above. The string code can
* only be a string unit type (i.e. CSS_STRING
,
* CSS_URI
, CSS_IDENT
, and
* CSS_ATTR
).
* @param stringValue The new string value.
* @exception DOMException
* INVALID_ACCESS_ERR: Raised if the CSS value doesn't contain a string
* value or if the string value can't be converted into the specified
* unit.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
*/
public void setStringValue(short stringType,
String stringValue)
throws DOMException;
/**
* This method is used to get the string value. If the CSS value doesn't
* contain a string value, a DOMException
is raised. Some
* properties (like 'font-family' or 'voice-family') convert a
* whitespace separated list of idents to a string.
* @return The string value in the current unit. The current
* primitiveType
can only be a string unit type (i.e.
* CSS_STRING
, CSS_URI
,
* CSS_IDENT
and CSS_ATTR
).
* @exception DOMException
* INVALID_ACCESS_ERR: Raised if the CSS value doesn't contain a string
* value.
*/
public String getStringValue()
throws DOMException;
/**
* This method is used to get the Counter value. If this CSS value
* doesn't contain a counter value, a DOMException
is
* raised. Modification to the corresponding style property can be
* achieved using the Counter
interface.
* @return The Counter value.
* @exception DOMException
* INVALID_ACCESS_ERR: Raised if the CSS value doesn't contain a
* Counter value (e.g. this is not CSS_COUNTER
).
*/
public Counter getCounterValue()
throws DOMException;
/**
* This method is used to get the Rect value. If this CSS value doesn't
* contain a rect value, a DOMException
is raised.
* Modification to the corresponding style property can be achieved
* using the Rect
interface.
* @return The Rect value.
* @exception DOMException
* INVALID_ACCESS_ERR: Raised if the CSS value doesn't contain a Rect
* value. (e.g. this is not CSS_RECT
).
*/
public Rect getRectValue()
throws DOMException;
/**
* This method is used to get the RGB color. If this CSS value doesn't
* contain a RGB color value, a DOMException
is raised.
* Modification to the corresponding style property can be achieved
* using the RGBColor
interface.
* @return the RGB color value.
* @exception DOMException
* INVALID_ACCESS_ERR: Raised if the attached property can't return a
* RGB color value (e.g. this is not CSS_RGBCOLOR
).
*/
public RGBColor getRGBColorValue()
throws DOMException;
}
org/w3c/dom/css/CSSRule.java 100644 0 0 7363 11146172406 13175 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSSRule
interface is the abstract base interface for any
* type of CSS statement. This includes both rule sets and at-rules. An
* implementation is expected to preserve all rules specified in a CSS style
* sheet, even if the rule is not recognized by the parser. Unrecognized
* rules are represented using the CSSUnknownRule
interface.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSRule {
// RuleType
/**
* The rule is a CSSUnknownRule
.
*/
public static final short UNKNOWN_RULE = 0;
/**
* The rule is a CSSStyleRule
.
*/
public static final short STYLE_RULE = 1;
/**
* The rule is a CSSCharsetRule
.
*/
public static final short CHARSET_RULE = 2;
/**
* The rule is a CSSImportRule
.
*/
public static final short IMPORT_RULE = 3;
/**
* The rule is a CSSMediaRule
.
*/
public static final short MEDIA_RULE = 4;
/**
* The rule is a CSSFontFaceRule
.
*/
public static final short FONT_FACE_RULE = 5;
/**
* The rule is a CSSPageRule
.
*/
public static final short PAGE_RULE = 6;
/**
* The type of the rule, as defined above. The expectation is that
* binding-specific casting methods can be used to cast down from an
* instance of the CSSRule
interface to the specific
* derived interface implied by the type
.
*/
public short getType();
/**
* The parsable textual representation of the rule. This reflects the
* current state of the rule and not its initial value.
*/
public String getCssText();
/**
* The parsable textual representation of the rule. This reflects the
* current state of the rule and not its initial value.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified CSS string value has a syntax
* error and is unparsable.
*
INVALID_MODIFICATION_ERR: Raised if the specified CSS string
* value represents a different type of rule than the current one.
*
HIERARCHY_REQUEST_ERR: Raised if the rule cannot be inserted at
* this point in the style sheet.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if the rule is readonly.
*/
public void setCssText(String cssText)
throws DOMException;
/**
* The style sheet that contains this rule.
*/
public CSSStyleSheet getParentStyleSheet();
/**
* If this rule is contained inside another rule (e.g. a style rule
* inside an @media block), this is the containing rule. If this rule is
* not nested inside any other rules, this returns null
.
*/
public CSSRule getParentRule();
}
org/w3c/dom/css/CSSRuleList.java 100644 0 0 3420 11146172406 14017 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* The CSSRuleList
interface provides the abstraction of an
* ordered collection of CSS rules.
*
The items in the CSSRuleList
are accessible via an
* integral index, starting from 0.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSRuleList {
/**
* The number of CSSRules
in the list. The range of valid
* child rule indices is 0
to length-1
* inclusive.
*/
public int getLength();
/**
* Used to retrieve a CSS rule by ordinal index. The order in this
* collection represents the order of the rules in the CSS style sheet.
* If index is greater than or equal to the number of rules in the list,
* this returns null
.
* @param index Index into the collection
* @return The style rule at the index
position in the
* CSSRuleList
, or null
if that is not a
* valid index.
*/
public CSSRule item(int index);
}
org/w3c/dom/css/CSSStyleDeclaration.java 100644 0 0 17013 11146172406 15545 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSSStyleDeclaration
interface represents a single CSS
* declaration block. This interface may be used to determine the style
* properties currently set in a block or to set style properties explicitly
* within the block.
*
While an implementation may not recognize all CSS properties within a
* CSS declaration block, it is expected to provide access to all specified
* properties in the style sheet through the CSSStyleDeclaration
* interface. Furthermore, implementations that support a specific level of
* CSS should correctly handle CSS shorthand properties for that level. For
* a further discussion of shorthand properties, see the
* CSS2Properties
interface.
*
This interface is also used to provide a read-only access to the
* computed values of an element. See also the ViewCSS
* interface. The CSS Object Model doesn't provide an access to the
* specified or actual values of the CSS cascade.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSStyleDeclaration {
/**
* The parsable textual representation of the declaration block
* (excluding the surrounding curly braces). Setting this attribute will
* result in the parsing of the new value and resetting of all the
* properties in the declaration block including the removal or addition
* of properties.
*/
public String getCssText();
/**
* The parsable textual representation of the declaration block
* (excluding the surrounding curly braces). Setting this attribute will
* result in the parsing of the new value and resetting of all the
* properties in the declaration block including the removal or addition
* of properties.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified CSS string value has a syntax
* error and is unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this declaration is
* readonly or a property is readonly.
*/
public void setCssText(String cssText)
throws DOMException;
/**
* Used to retrieve the value of a CSS property if it has been explicitly
* set within this declaration block.
* @param propertyName The name of the CSS property. See the CSS
* property index.
* @return Returns the value of the property if it has been explicitly
* set for this declaration block. Returns the empty string if the
* property has not been set.
*/
public String getPropertyValue(String propertyName);
/**
* Used to retrieve the object representation of the value of a CSS
* property if it has been explicitly set within this declaration block.
* This method returns null
if the property is a shorthand
* property. Shorthand property values can only be accessed and modified
* as strings, using the getPropertyValue
and
* setProperty
methods.
* @param propertyName The name of the CSS property. See the CSS
* property index.
* @return Returns the value of the property if it has been explicitly
* set for this declaration block. Returns null
if the
* property has not been set.
*/
public CSSValue getPropertyCSSValue(String propertyName);
/**
* Used to remove a CSS property if it has been explicitly set within
* this declaration block.
* @param propertyName The name of the CSS property. See the CSS
* property index.
* @return Returns the value of the property if it has been explicitly
* set for this declaration block. Returns the empty string if the
* property has not been set or the property name does not correspond
* to a known CSS property.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this declaration is readonly
* or the property is readonly.
*/
public String removeProperty(String propertyName)
throws DOMException;
/**
* Used to retrieve the priority of a CSS property (e.g. the
* "important"
qualifier) if the priority has been
* explicitly set in this declaration block.
* @param propertyName The name of the CSS property. See the CSS
* property index.
* @return A string representing the priority (e.g.
* "important"
) if the property has been explicitly set
* in this declaration block and has a priority specified. The empty
* string otherwise.
*/
public String getPropertyPriority(String propertyName);
/**
* Used to set a property value and priority within this declaration
* block. setProperty
permits to modify a property or add a
* new one in the declaration block. Any call to this method may modify
* the order of properties in the item
method.
* @param propertyName The name of the CSS property. See the CSS
* property index.
* @param value The new value of the property.
* @param priority The new priority of the property (e.g.
* "important"
) or the empty string if none.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified value has a syntax error and is
* unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this declaration is
* readonly or the property is readonly.
*/
public void setProperty(String propertyName,
String value,
String priority)
throws DOMException;
/**
* The number of properties that have been explicitly set in this
* declaration block. The range of valid indices is 0 to length-1
* inclusive.
*/
public int getLength();
/**
* Used to retrieve the properties that have been explicitly set in this
* declaration block. The order of the properties retrieved using this
* method does not have to be the order in which they were set. This
* method can be used to iterate over all properties in this declaration
* block.
* @param index Index of the property name to retrieve.
* @return The name of the property at this ordinal position. The empty
* string if no property exists at this position.
*/
public String item(int index);
/**
* The CSS rule that contains this declaration block or null
* if this CSSStyleDeclaration
is not attached to a
* CSSRule
.
*/
public CSSRule getParentRule();
}
org/w3c/dom/css/CSSStyleRule.java 100644 0 0 3467 11146172406 14217 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSSStyleRule
interface represents a single rule set in a
* CSS style sheet.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSStyleRule extends CSSRule {
/**
* The textual representation of the selector for the rule set. The
* implementation may have stripped out insignificant whitespace while
* parsing the selector.
*/
public String getSelectorText();
/**
* The textual representation of the selector for the rule set. The
* implementation may have stripped out insignificant whitespace while
* parsing the selector.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified CSS string value has a syntax
* error and is unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this rule is readonly.
*/
public void setSelectorText(String selectorText)
throws DOMException;
/**
* The declaration-block of this rule set.
*/
public CSSStyleDeclaration getStyle();
}
org/w3c/dom/css/CSSStyleSheet.java 100644 0 0 7374 11146172406 14361 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
import org.w3c.dom.stylesheets.StyleSheet;
/**
* The CSSStyleSheet
interface is a concrete interface used to
* represent a CSS style sheet i.e., a style sheet whose content type is
* "text/css".
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSStyleSheet extends StyleSheet {
/**
* If this style sheet comes from an @import
rule, the
* ownerRule
attribute will contain the
* CSSImportRule
. In that case, the ownerNode
* attribute in the StyleSheet
interface will be
* null
. If the style sheet comes from an element or a
* processing instruction, the ownerRule
attribute will be
* null
and the ownerNode
attribute will
* contain the Node
.
*/
public CSSRule getOwnerRule();
/**
* The list of all CSS rules contained within the style sheet. This
* includes both rule sets and at-rules.
*/
public CSSRuleList getCssRules();
/**
* Used to insert a new rule into the style sheet. The new rule now
* becomes part of the cascade.
* @param rule The parsable text representing the rule. For rule sets
* this contains both the selector and the style declaration. For
* at-rules, this specifies both the at-identifier and the rule
* content.
* @param index The index within the style sheet's rule list of the rule
* before which to insert the specified rule. If the specified index
* is equal to the length of the style sheet's rule collection, the
* rule will be added to the end of the style sheet.
* @return The index within the style sheet's rule collection of the
* newly inserted rule.
* @exception DOMException
* HIERARCHY_REQUEST_ERR: Raised if the rule cannot be inserted at the
* specified index e.g. if an @import
rule is inserted
* after a standard rule set or other at-rule.
*
INDEX_SIZE_ERR: Raised if the specified index is not a valid
* insertion point.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this style sheet is
* readonly.
*
SYNTAX_ERR: Raised if the specified rule has a syntax error and
* is unparsable.
*/
public int insertRule(String rule,
int index)
throws DOMException;
/**
* Used to delete a rule from the style sheet.
* @param index The index within the style sheet's rule list of the rule
* to remove.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if the specified index does not correspond to
* a rule in the style sheet's rule list.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this style sheet is
* readonly.
*/
public void deleteRule(int index)
throws DOMException;
}
org/w3c/dom/css/CSSUnknownRule.java 100644 0 0 1660 11146172406 14547 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* The CSSUnknownRule
interface represents an at-rule not
* supported by this user agent.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSUnknownRule extends CSSRule {
}
org/w3c/dom/css/CSSValue.java 100644 0 0 5373 11146172406 13341 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMException;
/**
* The CSSValue
interface represents a simple or a complex
* value. A CSSValue
object only occurs in a context of a CSS
* property.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSValue {
// UnitTypes
/**
* The value is inherited and the cssText
contains "inherit".
*/
public static final short CSS_INHERIT = 0;
/**
* The value is a primitive value and an instance of the
* CSSPrimitiveValue
interface can be obtained by using
* binding-specific casting methods on this instance of the
* CSSValue
interface.
*/
public static final short CSS_PRIMITIVE_VALUE = 1;
/**
* The value is a CSSValue
list and an instance of the
* CSSValueList
interface can be obtained by using
* binding-specific casting methods on this instance of the
* CSSValue
interface.
*/
public static final short CSS_VALUE_LIST = 2;
/**
* The value is a custom value.
*/
public static final short CSS_CUSTOM = 3;
/**
* A string representation of the current value.
*/
public String getCssText();
/**
* A string representation of the current value.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified CSS string value has a syntax
* error (according to the attached property) or is unparsable.
*
INVALID_MODIFICATION_ERR: Raised if the specified CSS string
* value represents a different type of values than the values allowed
* by the CSS property.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this value is readonly.
*/
public void setCssText(String cssText)
throws DOMException;
/**
* A code defining the type of the value as defined above.
*/
public short getCssValueType();
}
org/w3c/dom/css/CSSValueList.java 100644 0 0 4035 11146172406 14167 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* The CSSValueList
interface provides the abstraction of an
* ordered collection of CSS values.
*
Some properties allow an empty list into their syntax. In that case,
* these properties take the none
identifier. So, an empty list
* means that the property has the value none
.
*
The items in the CSSValueList
are accessible via an
* integral index, starting from 0.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface CSSValueList extends CSSValue {
/**
* The number of CSSValues
in the list. The range of valid
* values of the indices is 0
to length-1
* inclusive.
*/
public int getLength();
/**
* Used to retrieve a CSSValue
by ordinal index. The order in
* this collection represents the order of the values in the CSS style
* property. If index is greater than or equal to the number of values
* in the list, this returns null
.
* @param index Index into the collection.
* @return The CSSValue
at the index
position
* in the CSSValueList
, or null
if that is
* not a valid index.
*/
public CSSValue item(int index);
}
org/w3c/dom/css/Counter.java 100644 0 0 2522 11146172406 13324 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* The Counter
interface is used to represent any counter or
* counters function value. This interface reflects the values in the
* underlying style property.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface Counter {
/**
* This attribute is used for the identifier of the counter.
*/
public String getIdentifier();
/**
* This attribute is used for the style of the list.
*/
public String getListStyle();
/**
* This attribute is used for the separator of the nested counters.
*/
public String getSeparator();
}
org/w3c/dom/css/DOMImplementationCSS.java 100644 0 0 3374 11146172406 15611 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.DOMException;
/**
* This interface allows the DOM user to create a CSSStyleSheet
* outside the context of a document. There is no way to associate the new
* CSSStyleSheet
with a document in DOM Level 2.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface DOMImplementationCSS extends DOMImplementation {
/**
* Creates a new CSSStyleSheet
.
* @param title The advisory title. See also the section.
* @param media The comma-separated list of media associated with the
* new style sheet. See also the section.
* @return A new CSS style sheet.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified media string value has a syntax
* error and is unparsable.
*/
public CSSStyleSheet createCSSStyleSheet(String title,
String media)
throws DOMException;
}
org/w3c/dom/css/DocumentCSS.java 100644 0 0 4763 11146172406 14045 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.Element;
import org.w3c.dom.stylesheets.DocumentStyle;
/**
* This interface represents a document with a CSS view.
*
The getOverrideStyle
method provides a mechanism through
* which a DOM author could effect immediate change to the style of an
* element without modifying the explicitly linked style sheets of a
* document or the inline style of elements in the style sheets. This style
* sheet comes after the author style sheet in the cascade algorithm and is
* called override style sheet. The override style sheet takes precedence
* over author style sheets. An "!important" declaration still takes
* precedence over a normal declaration. Override, author, and user style
* sheets all may contain "!important" declarations. User "!important" rules
* take precedence over both override and author "!important" rules, and
* override "!important" rules take precedence over author "!important"
* rules.
*
The expectation is that an instance of the DocumentCSS
* interface can be obtained by using binding-specific casting methods on an
* instance of the Document
interface.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface DocumentCSS extends DocumentStyle {
/**
* This method is used to retrieve the override style declaration for a
* specified element and a specified pseudo-element.
* @param elt The element whose style is to be modified. This parameter
* cannot be null.
* @param pseudoElt The pseudo-element or null
if none.
* @return The override style declaration.
*/
public CSSStyleDeclaration getOverrideStyle(Element elt,
String pseudoElt);
}
org/w3c/dom/css/ElementCSSInlineStyle.java 100644 0 0 2642 11146172406 16032 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* Inline style information attached to elements is exposed through the
* style
attribute. This represents the contents of the STYLE
* attribute for HTML elements (or elements in other schemas or DTDs which
* use the STYLE attribute in the same way). The expectation is that an
* instance of the ElementCSSInlineStyle interface can be obtained by using
* binding-specific casting methods on an instance of the Element interface
* when the element supports inline CSS style informations.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface ElementCSSInlineStyle {
/**
* The style attribute.
*/
public CSSStyleDeclaration getStyle();
}
org/w3c/dom/css/RGBColor.java 100644 0 0 3632 11146172406 13321 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* The RGBColor
interface is used to represent any RGB color
* value. This interface reflects the values in the underlying style
* property. Hence, modifications made to the CSSPrimitiveValue
* objects modify the style property.
*
A specified RGB color is not clipped (even if the number is outside the * range 0-255 or 0%-100%). A computed RGB color is clipped depending on the * device. *
Even if a style sheet can only contain an integer for a color value, * the internal storage of this integer is a float, and this can be used as * a float in the specified or the computed style. *
A color percentage value can always be converted to a number and vice * versa. *
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface RGBColor {
/**
* This attribute is used for the red value of the RGB color.
*/
public CSSPrimitiveValue getRed();
/**
* This attribute is used for the green value of the RGB color.
*/
public CSSPrimitiveValue getGreen();
/**
* This attribute is used for the blue value of the RGB color.
*/
public CSSPrimitiveValue getBlue();
}
org/w3c/dom/css/Rect.java 100644 0 0 3017 11146172406 12602 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
/**
* The Rect
interface is used to represent any rect value. This
* interface reflects the values in the underlying style property. Hence,
* modifications made to the CSSPrimitiveValue
objects modify
* the style property.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface Rect {
/**
* This attribute is used for the top of the rect.
*/
public CSSPrimitiveValue getTop();
/**
* This attribute is used for the right of the rect.
*/
public CSSPrimitiveValue getRight();
/**
* This attribute is used for the bottom of the rect.
*/
public CSSPrimitiveValue getBottom();
/**
* This attribute is used for the left of the rect.
*/
public CSSPrimitiveValue getLeft();
}
org/w3c/dom/css/ViewCSS.java 100644 0 0 4133 11146172406 13170 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.css;
import org.w3c.dom.Element;
import org.w3c.dom.views.AbstractView;
/**
* This interface represents a CSS view. The getComputedStyle
* method provides a read only access to the computed values of an element.
*
The expectation is that an instance of the ViewCSS
* interface can be obtained by using binding-specific casting methods on an
* instance of the AbstractView
interface.
*
Since a computed style is related to an Element
node, if
* this element is removed from the document, the associated
* CSSStyleDeclaration
and CSSValue
related to
* this declaration are no longer valid.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface ViewCSS extends AbstractView {
/**
* This method is used to get the computed style as it is defined in [CSS2].
* @param elt The element whose style is to be computed. This parameter
* cannot be null.
* @param pseudoElt The pseudo-element or null
if none.
* @return The computed style. The CSSStyleDeclaration
is
* read-only and contains only absolute values.
*/
public CSSStyleDeclaration getComputedStyle(Element elt,
String pseudoElt);
}
org/w3c/dom/events/DocumentEvent.java 100644 0 0 5646 11146172404 15211 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
import org.w3c.dom.DOMException;
/**
* The DocumentEvent
interface provides a mechanism by which the
* user can create an Event of a type supported by the implementation. It is
* expected that the DocumentEvent
interface will be
* implemented on the same object which implements the Document
* interface in an implementation which supports the Event model.
*
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public interface DocumentEvent {
/**
*
* @param eventType The eventType
parameter specifies the
* type of Event
interface to be created. If the
* Event
interface specified is supported by the
* implementation this method will return a new Event
of
* the interface type requested. If the Event
is to be
* dispatched via the dispatchEvent
method the
* appropriate event init method must be called after creation in
* order to initialize the Event
's values. As an example,
* a user wishing to synthesize some kind of UIEvent
* would call createEvent
with the parameter "UIEvents".
* The initUIEvent
method could then be called on the
* newly created UIEvent
to set the specific type of
* UIEvent to be dispatched and set its context information.The
* createEvent
method is used in creating
* Event
s when it is either inconvenient or unnecessary
* for the user to create an Event
themselves. In cases
* where the implementation provided Event
is
* insufficient, users may supply their own Event
* implementations for use with the dispatchEvent
method.
* @return The newly created Event
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the implementation does not support the
* type of Event
interface requested
*/
public Event createEvent(String eventType)
throws DOMException;
}
org/w3c/dom/events/Event.java 100644 0 0 14372 11146172404 13526 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
/**
* The Event
interface is used to provide contextual information
* about an event to the handler processing the event. An object which
* implements the Event
interface is generally passed as the
* first parameter to an event handler. More specific context information is
* passed to event handlers by deriving additional interfaces from
* Event
which contain information directly relating to the
* type of event they accompany. These derived interfaces are also
* implemented by the object passed to the event listener.
*
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public interface Event {
// PhaseType
/**
* The current event phase is the capturing phase.
*/
public static final short CAPTURING_PHASE = 1;
/**
* The event is currently being evaluated at the target
* EventTarget
.
*/
public static final short AT_TARGET = 2;
/**
* The current event phase is the bubbling phase.
*/
public static final short BUBBLING_PHASE = 3;
/**
* The name of the event (case-insensitive). The name must be an XML name.
*/
public String getType();
/**
* Used to indicate the EventTarget
to which the event was
* originally dispatched.
*/
public EventTarget getTarget();
/**
* Used to indicate the EventTarget
whose
* EventListeners
are currently being processed. This is
* particularly useful during capturing and bubbling.
*/
public EventTarget getCurrentTarget();
/**
* Used to indicate which phase of event flow is currently being
* evaluated.
*/
public short getEventPhase();
/**
* Used to indicate whether or not an event is a bubbling event. If the
* event can bubble the value is true, else the value is false.
*/
public boolean getBubbles();
/**
* Used to indicate whether or not an event can have its default action
* prevented. If the default action can be prevented the value is true,
* else the value is false.
*/
public boolean getCancelable();
/**
* Used to specify the time (in milliseconds relative to the epoch) at
* which the event was created. Due to the fact that some systems may
* not provide this information the value of timeStamp
may
* be not available for all events. When not available, a value of 0
* will be returned. Examples of epoch time are the time of the system
* start or 0:0:0 UTC 1st January 1970.
*/
public long getTimeStamp();
/**
* The stopPropagation
method is used prevent further
* propagation of an event during event flow. If this method is called
* by any EventListener
the event will cease propagating
* through the tree. The event will complete dispatch to all listeners
* on the current EventTarget
before event flow stops. This
* method may be used during any stage of event flow.
*/
public void stopPropagation();
/**
* If an event is cancelable, the preventDefault
method is
* used to signify that the event is to be canceled, meaning any default
* action normally taken by the implementation as a result of the event
* will not occur. If, during any stage of event flow, the
* preventDefault
method is called the event is canceled.
* Any default action associated with the event will not occur. Calling
* this method for a non-cancelable event has no effect. Once
* preventDefault
has been called it will remain in effect
* throughout the remainder of the event's propagation. This method may
* be used during any stage of event flow.
*/
public void preventDefault();
/**
* The initEvent
method is used to initialize the value of an
* Event
created through the DocumentEvent
* interface. This method may only be called before the
* Event
has been dispatched via the
* dispatchEvent
method, though it may be called multiple
* times during that phase if necessary. If called multiple times the
* final invocation takes precedence. If called from a subclass of
* Event
interface only the values specified in the
* initEvent
method are modified, all other attributes are
* left unchanged.
* @param eventTypeArg Specifies the event type. This type may be any
* event type currently defined in this specification or a new event
* type.. The string must be an XML name. Any new event type must not
* begin with any upper, lower, or mixed case version of the string
* "DOM". This prefix is reserved for future DOM event sets. It is
* also strongly recommended that third parties adding their own
* events use their own prefix to avoid confusion and lessen the
* probability of conflicts with other new events.
* @param canBubbleArg Specifies whether or not the event can bubble.
* @param cancelableArg Specifies whether or not the event's default
* action can be prevented.
*/
public void initEvent(String eventTypeArg,
boolean canBubbleArg,
boolean cancelableArg);
}
org/w3c/dom/events/EventException.java 100644 0 0 2663 11146172404 15365 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
/**
* Event operations may throw an EventException
as specified in
* their method descriptions.
*
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public class EventException extends RuntimeException {
public EventException(short code, String message) {
super(message);
this.code = code;
}
public short code;
// EventExceptionCode
/**
* If the Event
's type was not specified by initializing the
* event before the method was called. Specification of the Event's type
* as null
or an empty string will also trigger this
* exception.
*/
public static final short UNSPECIFIED_EVENT_TYPE_ERR = 0;
}
org/w3c/dom/events/EventListener.java 100644 0 0 4050 11146172404 15204 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
/**
* The EventListener
interface is the primary method for
* handling events. Users implement the EventListener
interface
* and register their listener on an EventTarget
using the
* AddEventListener
method. The users should also remove their
* EventListener
from its EventTarget
after they
* have completed using the listener.
*
When a Node
is copied using the cloneNode
* method the EventListener
s attached to the source
* Node
are not attached to the copied Node
. If
* the user wishes the same EventListener
s to be added to the
* newly created copy the user must add them manually.
*
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public interface EventListener {
/**
* This method is called whenever an event occurs of the type for which
* the EventListener
interface was registered.
* @param evt The Event
contains contextual information
* about the event. It also contains the stopPropagation
* and preventDefault
methods which are used in
* determining the event's flow and default action.
*/
public void handleEvent(Event evt);
}
org/w3c/dom/events/EventTarget.java 100644 0 0 13042 11146172404 14666 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
/**
* The EventTarget
interface is implemented by all
* Nodes
in an implementation which supports the DOM Event
* Model. Therefore, this interface can be obtained by using
* binding-specific casting methods on an instance of the Node
* interface. The interface allows registration and removal of
* EventListeners
on an EventTarget
and dispatch
* of events to that EventTarget
.
*
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public interface EventTarget {
/**
* This method allows the registration of event listeners on the event
* target. If an EventListener
is added to an
* EventTarget
while it is processing an event, it will not
* be triggered by the current actions but may be triggered during a
* later stage of event flow, such as the bubbling phase.
*
If multiple identical EventListener
s are registered
* on the same EventTarget
with the same parameters the
* duplicate instances are discarded. They do not cause the
* EventListener
to be called twice and since they are
* discarded they do not need to be removed with the
* removeEventListener
method.
* @param type The event type for which the user is registering
* @param listener The listener
parameter takes an interface
* implemented by the user which contains the methods to be called
* when the event occurs.
* @param useCapture If true, useCapture
indicates that the
* user wishes to initiate capture. After initiating capture, all
* events of the specified type will be dispatched to the registered
* EventListener
before being dispatched to any
* EventTargets
beneath them in the tree. Events which
* are bubbling upward through the tree will not trigger an
* EventListener
designated to use capture.
*/
public void addEventListener(String type,
EventListener listener,
boolean useCapture);
/**
* This method allows the removal of event listeners from the event
* target. If an EventListener
is removed from an
* EventTarget
while it is processing an event, it will not
* be triggered by the current actions. EventListener
s can
* never be invoked after being removed.
*
Calling removeEventListener
with arguments which do
* not identify any currently registered EventListener
on
* the EventTarget
has no effect.
* @param type Specifies the event type of the EventListener
* being removed.
* @param listener The EventListener
parameter indicates the
* EventListener
to be removed.
* @param useCapture Specifies whether the EventListener
* being removed was registered as a capturing listener or not. If a
* listener was registered twice, one with capture and one without,
* each must be removed separately. Removal of a capturing listener
* does not affect a non-capturing version of the same listener, and
* vice versa.
*/
public void removeEventListener(String type,
EventListener listener,
boolean useCapture);
/**
* This method allows the dispatch of events into the implementations
* event model. Events dispatched in this manner will have the same
* capturing and bubbling behavior as events dispatched directly by the
* implementation. The target of the event is the
* EventTarget
on which dispatchEvent
is
* called.
* @param evt Specifies the event type, behavior, and contextual
* information to be used in processing the event.
* @return The return value of dispatchEvent
indicates
* whether any of the listeners which handled the event called
* preventDefault
. If preventDefault
was
* called the value is false, else the value is true.
* @exception EventException
* UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event
's type
* was not specified by initializing the event before
* dispatchEvent
was called. Specification of the
* Event
's type as null
or an empty string
* will also trigger this exception.
*/
public boolean dispatchEvent(Event evt)
throws EventException;
}
org/w3c/dom/events/MouseEvent.java 100644 0 0 15402 11146172404 14532 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
import org.w3c.dom.views.AbstractView;
/**
* The MouseEvent
interface provides specific contextual
* information associated with Mouse events.
*
The detail
attribute inherited from UIEvent
* indicates the number of times a mouse button has been pressed and
* released over the same screen location during a user action. The
* attribute value is 1 when the user begins this action and increments by 1
* for each full sequence of pressing and releasing. If the user moves the
* mouse between the mousedown and mouseup the value will be set to 0,
* indicating that no click is occurring.
*
In the case of nested elements mouse events are always targeted at the * most deeply nested element. Ancestors of the targeted element may use * bubbling to obtain notification of mouse events which occur within its * descendent elements. *
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public interface MouseEvent extends UIEvent {
/**
* The horizontal coordinate at which the event occurred relative to the
* origin of the screen coordinate system.
*/
public int getScreenX();
/**
* The vertical coordinate at which the event occurred relative to the
* origin of the screen coordinate system.
*/
public int getScreenY();
/**
* The horizontal coordinate at which the event occurred relative to the
* DOM implementation's client area.
*/
public int getClientX();
/**
* The vertical coordinate at which the event occurred relative to the DOM
* implementation's client area.
*/
public int getClientY();
/**
* Used to indicate whether the 'ctrl' key was depressed during the firing
* of the event.
*/
public boolean getCtrlKey();
/**
* Used to indicate whether the 'shift' key was depressed during the
* firing of the event.
*/
public boolean getShiftKey();
/**
* Used to indicate whether the 'alt' key was depressed during the firing
* of the event. On some platforms this key may map to an alternative
* key name.
*/
public boolean getAltKey();
/**
* Used to indicate whether the 'meta' key was depressed during the firing
* of the event. On some platforms this key may map to an alternative
* key name.
*/
public boolean getMetaKey();
/**
* During mouse events caused by the depression or release of a mouse
* button, button
is used to indicate which mouse button
* changed state. The values for button
range from zero to
* indicate the left button of the mouse, one to indicate the middle
* button if present, and two to indicate the right button. For mice
* configured for left handed use in which the button actions are
* reversed the values are instead read from right to left.
*/
public short getButton();
/**
* Used to identify a secondary EventTarget
related to a UI
* event. Currently this attribute is used with the mouseover event to
* indicate the EventTarget
which the pointing device
* exited and with the mouseout event to indicate the
* EventTarget
which the pointing device entered.
*/
public EventTarget getRelatedTarget();
/**
* The initMouseEvent
method is used to initialize the value
* of a MouseEvent
created through the
* DocumentEvent
interface. This method may only be called
* before the MouseEvent
has been dispatched via the
* dispatchEvent
method, though it may be called multiple
* times during that phase if necessary. If called multiple times, the
* final invocation takes precedence.
* @param typeArg Specifies the event type.
* @param canBubbleArg Specifies whether or not the event can bubble.
* @param cancelableArg Specifies whether or not the event's default
* action can be prevented.
* @param viewArg Specifies the Event
's
* AbstractView
.
* @param detailArg Specifies the Event
's mouse click count.
* @param screenXArg Specifies the Event
's screen x
* coordinate
* @param screenYArg Specifies the Event
's screen y
* coordinate
* @param clientXArg Specifies the Event
's client x
* coordinate
* @param clientYArg Specifies the Event
's client y
* coordinate
* @param ctrlKeyArg Specifies whether or not control key was depressed
* during the Event
.
* @param altKeyArg Specifies whether or not alt key was depressed during
* the Event
.
* @param shiftKeyArg Specifies whether or not shift key was depressed
* during the Event
.
* @param metaKeyArg Specifies whether or not meta key was depressed
* during the Event
.
* @param buttonArg Specifies the Event
's mouse button.
* @param relatedTargetArg Specifies the Event
's related
* EventTarget
.
*/
public void initMouseEvent(String typeArg,
boolean canBubbleArg,
boolean cancelableArg,
AbstractView viewArg,
int detailArg,
int screenXArg,
int screenYArg,
int clientXArg,
int clientYArg,
boolean ctrlKeyArg,
boolean altKeyArg,
boolean shiftKeyArg,
boolean metaKeyArg,
short buttonArg,
EventTarget relatedTargetArg);
}
org/w3c/dom/events/MutationEvent.java 100644 0 0 11273 11146172404 15244 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
import org.w3c.dom.Node;
/**
* The MutationEvent
interface provides specific contextual
* information associated with Mutation events.
*
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public interface MutationEvent extends Event {
// attrChangeType
/**
* The Attr
was modified in place.
*/
public static final short MODIFICATION = 1;
/**
* The Attr
was just added.
*/
public static final short ADDITION = 2;
/**
* The Attr
was just removed.
*/
public static final short REMOVAL = 3;
/**
* relatedNode
is used to identify a secondary node related
* to a mutation event. For example, if a mutation event is dispatched
* to a node indicating that its parent has changed, the
* relatedNode
is the changed parent. If an event is
* instead dispatched to a subtree indicating a node was changed within
* it, the relatedNode
is the changed node. In the case of
* the DOMAttrModified event it indicates the Attr
node
* which was modified, added, or removed.
*/
public Node getRelatedNode();
/**
* prevValue
indicates the previous value of the
* Attr
node in DOMAttrModified events, and of the
* CharacterData
node in DOMCharacterDataModified events.
*/
public String getPrevValue();
/**
* newValue
indicates the new value of the Attr
* node in DOMAttrModified events, and of the CharacterData
* node in DOMCharacterDataModified events.
*/
public String getNewValue();
/**
* attrName
indicates the name of the changed
* Attr
node in a DOMAttrModified event.
*/
public String getAttrName();
/**
* attrChange
indicates the type of change which triggered
* the DOMAttrModified event. The values can be MODIFICATION
* , ADDITION
, or REMOVAL
.
*/
public short getAttrChange();
/**
* The initMutationEvent
method is used to initialize the
* value of a MutationEvent
created through the
* DocumentEvent
interface. This method may only be called
* before the MutationEvent
has been dispatched via the
* dispatchEvent
method, though it may be called multiple
* times during that phase if necessary. If called multiple times, the
* final invocation takes precedence.
* @param typeArg Specifies the event type.
* @param canBubbleArg Specifies whether or not the event can bubble.
* @param cancelableArg Specifies whether or not the event's default
* action can be prevented.
* @param relatedNodeArg Specifies the Event
's related Node.
* @param prevValueArg Specifies the Event
's
* prevValue
attribute. This value may be null.
* @param newValueArg Specifies the Event
's
* newValue
attribute. This value may be null.
* @param attrNameArg Specifies the Event
's
* attrName
attribute. This value may be null.
* @param attrChangeArg Specifies the Event
's
* attrChange
attribute
*/
public void initMutationEvent(String typeArg,
boolean canBubbleArg,
boolean cancelableArg,
Node relatedNodeArg,
String prevValueArg,
String newValueArg,
String attrNameArg,
short attrChangeArg);
}
org/w3c/dom/events/UIEvent.java 100644 0 0 4663 11146172404 13746 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.events;
import org.w3c.dom.views.AbstractView;
/**
* The UIEvent
interface provides specific contextual information
* associated with User Interface events.
*
See also the Document Object Model (DOM) Level 2 Events Specification.
* @since DOM Level 2
*/
public interface UIEvent extends Event {
/**
* The view
attribute identifies the AbstractView
* from which the event was generated.
*/
public AbstractView getView();
/**
* Specifies some detail information about the Event
,
* depending on the type of event.
*/
public int getDetail();
/**
* The initUIEvent
method is used to initialize the value of
* a UIEvent
created through the DocumentEvent
* interface. This method may only be called before the
* UIEvent
has been dispatched via the
* dispatchEvent
method, though it may be called multiple
* times during that phase if necessary. If called multiple times, the
* final invocation takes precedence.
* @param typeArg Specifies the event type.
* @param canBubbleArg Specifies whether or not the event can bubble.
* @param cancelableArg Specifies whether or not the event's default
* action can be prevented.
* @param viewArg Specifies the Event
's
* AbstractView
.
* @param detailArg Specifies the Event
's detail.
*/
public void initUIEvent(String typeArg,
boolean canBubbleArg,
boolean cancelableArg,
AbstractView viewArg,
int detailArg);
}
org/w3c/dom/html/HTMLAnchorElement.java 100644 0 0 6243 11146172403 15273 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The anchor element. See the A element definition in HTML 4.0.
*/
public interface HTMLAnchorElement extends HTMLElement {
/**
* A single character access key to give access to the form control. See the
* accesskey attribute definition in HTML 4.0.
*/
public String getAccessKey();
public void setAccessKey(String accessKey);
/**
* The character encoding of the linked resource. See the charset attribute
* definition in HTML 4.0.
*/
public String getCharset();
public void setCharset(String charset);
/**
* Comma-separated list of lengths, defining an active region geometry.See
* also shape
for the shape of the region. See the coords
* attribute definition in HTML 4.0.
*/
public String getCoords();
public void setCoords(String coords);
/**
* The URI of the linked resource. See the href attribute definition in HTML
* 4.0.
*/
public String getHref();
public void setHref(String href);
/**
* Language code of the linked resource. See the hreflang attribute
* definition in HTML 4.0.
*/
public String getHreflang();
public void setHreflang(String hreflang);
/**
* Anchor name. See the name attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Forward link type. See the rel attribute definition in HTML 4.0.
*/
public String getRel();
public void setRel(String rel);
/**
* Reverse link type. See the rev attribute definition in HTML 4.0.
*/
public String getRev();
public void setRev(String rev);
/**
* The shape of the active area. The coordinates are givenby
* coords
. See the shape attribute definition in HTML 4.0.
*/
public String getShape();
public void setShape(String shape);
/**
* Index that represents the element's position in the tabbing order. See
* the tabindex attribute definition in HTML 4.0.
*/
public int getTabIndex();
public void setTabIndex(int tabIndex);
/**
* Frame to render the resource in. See the target attribute definition in
* HTML 4.0.
*/
public String getTarget();
public void setTarget(String target);
/**
* Advisory content type. See the type attribute definition in HTML 4.0.
*/
public String getType();
public void setType(String type);
/**
* Removes keyboard focus from this element.
*/
public void blur();
/**
* Gives keyboard focus to this element.
*/
public void focus();
}
org/w3c/dom/html/HTMLAppletElement.java 100644 0 0 6405 11146172403 15306 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* An embedded Java applet. See the APPLET element definition in HTML 4.0.
* This element is deprecated in HTML 4.0.
*/
public interface HTMLAppletElement extends HTMLElement {
/**
* Aligns this object (vertically or horizontally) with respect to its
* surrounding text. See the align attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Alternate text for user agents not rendering the normal contentof this
* element. See the alt attribute definition in HTML 4.0. This attribute is
* deprecated in HTML 4.0.
*/
public String getAlt();
public void setAlt(String alt);
/**
* Comma-separated archive list. See the archive attribute definition in
* HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getArchive();
public void setArchive(String archive);
/**
* Applet class file. See the code attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getCode();
public void setCode(String code);
/**
* Optional base URI for applet. See the codebase attribute definition in
* HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getCodeBase();
public void setCodeBase(String codeBase);
/**
* Override height. See the height attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getHeight();
public void setHeight(String height);
/**
* Horizontal space to the left and right of this image, applet, or object.
* See the hspace attribute definition in HTML 4.0. This attribute is
* deprecated in HTML 4.0.
*/
public String getHspace();
public void setHspace(String hspace);
/**
* The name of the applet. See the name attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Serialized applet file. See the object attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public String getObject();
public void setObject(String object);
/**
* Vertical space above and below this image, applet, or object. See the
* vspace attribute definition in HTML 4.0. This attribute is deprecated in
* HTML 4.0.
*/
public String getVspace();
public void setVspace(String vspace);
/**
* Override width. See the width attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
}
org/w3c/dom/html/HTMLAreaElement.java 100644 0 0 4551 11146172403 14731 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Client-side image map area definition. See the AREA element definition in
* HTML 4.0.
*/
public interface HTMLAreaElement extends HTMLElement {
/**
* A single character access key to give access to the form control. See the
* accesskey attribute definition in HTML 4.0.
*/
public String getAccessKey();
public void setAccessKey(String accessKey);
/**
* Alternate text for user agents not rendering the normal contentof this
* element. See the alt attribute definition in HTML 4.0.
*/
public String getAlt();
public void setAlt(String alt);
/**
* Comma-separated list of lengths, defining an active region geometry.See
* also shape
for the shape of the region. See the coords
* attribute definition in HTML 4.0.
*/
public String getCoords();
public void setCoords(String coords);
/**
* The URI of the linked resource. See the href attribute definition in HTML
* 4.0.
*/
public String getHref();
public void setHref(String href);
/**
* Specifies that this area is inactive, i.e., has no associated action. See
* the nohref attribute definition in HTML 4.0.
*/
public boolean getNoHref();
public void setNoHref(boolean noHref);
/**
* The shape of the active area. The coordinates are givenby
* coords
. See the shape attribute definition in HTML 4.0.
*/
public String getShape();
public void setShape(String shape);
/**
* Index that represents the element's position in the tabbing order. See
* the tabindex attribute definition in HTML 4.0.
*/
public int getTabIndex();
public void setTabIndex(int tabIndex);
/**
* Frame to render the resource in. See the target attribute definition in
* HTML 4.0.
*/
public String getTarget();
public void setTarget(String target);
}
org/w3c/dom/html/HTMLBRElement.java 100644 0 0 1263 11146172403 14361 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Force a line break. See the BR element definition in HTML 4.0.
*/
public interface HTMLBRElement extends HTMLElement {
/**
* Control flow of text around floats. See the clear attribute definition in
* HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getClear();
public void setClear(String clear);
}
org/w3c/dom/html/HTMLBaseElement.java 100644 0 0 1452 11146172403 14730 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Document base URI. See the BASE element definition in HTML 4.0.
*/
public interface HTMLBaseElement extends HTMLElement {
/**
* The base URI See the href attribute definition in HTML 4.0.
*/
public String getHref();
public void setHref(String href);
/**
* The default target frame. See the target attribute definition in HTML 4.0.
*/
public String getTarget();
public void setTarget(String target);
}
org/w3c/dom/html/HTMLBaseFontElement.java 100644 0 0 2212 11146172403 15552 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Base font. See the BASEFONT element definition in HTML 4.0. This element is
* deprecated in HTML 4.0.
*/
public interface HTMLBaseFontElement extends HTMLElement {
/**
* Font color. See the color attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getColor();
public void setColor(String color);
/**
* Font face identifier. See the face attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getFace();
public void setFace(String face);
/**
* Font size. See the size attribute definition in HTML 4.0. This attribute
* is deprecated in HTML 4.0.
*/
public String getSize();
public void setSize(String size);
}
org/w3c/dom/html/HTMLBodyElement.java 100644 0 0 4124 11146172403 14752 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The HTML document body. This element is always present in the DOM API,even
* if the tags are not present in the source document. See the BODY element
* definition in HTML 4.0.
*/
public interface HTMLBodyElement extends HTMLElement {
/**
* Color of active links (after mouse-button down, but beforemouse-button
* up). See the alink attribute definition in HTML 4.0. This attribute is
* deprecated in HTML 4.0.
*/
public String getALink();
public void setALink(String aLink);
/**
* URI of the background texture tile image. See the background attribute
* definition in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getBackground();
public void setBackground(String background);
/**
* Document background color. See the bgcolor attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getBgColor();
public void setBgColor(String bgColor);
/**
* Color of links that are not active and unvisited. See the link attribute
* definition in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getLink();
public void setLink(String link);
/**
* Document text color. See the text attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getText();
public void setText(String text);
/**
* Color of links that have been visited by the user. See the vlink
* attribute definition in HTML 4.0. This attribute is deprecated in HTML
* 4.0.
*/
public String getVLink();
public void setVLink(String vLink);
}
org/w3c/dom/html/HTMLButtonElement.java 100644 0 0 3570 11146172403 15334 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Push button. See the BUTTON element definition in HTML 4.0.
*/
public interface HTMLButtonElement extends HTMLElement {
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* A single character access key to give access to the form control. See the
* accesskey attribute definition in HTML 4.0.
*/
public String getAccessKey();
public void setAccessKey(String accessKey);
/**
* The control is unavailable in this context. See the disabled attribute
* definition in HTML 4.0.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* Form control or object name when submitted with a form. See the name
* attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Index that represents the element's position in the tabbing order. See
* the tabindex attribute definition in HTML 4.0.
*/
public int getTabIndex();
public void setTabIndex(int tabIndex);
/**
* The type of button. See the type attribute definition in HTML 4.0.
*/
public String getType();
/**
* The current form control value. See the value attribute definition in
* HTML 4.0.
*/
public String getValue();
public void setValue(String value);
}
org/w3c/dom/html/HTMLCollection.java 100644 0 0 3666 11146172403 14650 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* An HTMLCollection
is a list of nodes. An individual nodemay be
* accessed by either ordinal index or the node'sname
or
* id
attributes. Note:Collections in the HTML DOM are assumed
* to be live meaningthat they are automatically updated when the underlying
* document ischanged.
*/
public interface HTMLCollection {
/**
* This attribute specifies the length or size of the list.
*/
public int getLength();
/**
* This method retrieves a node specified by ordinal index. Nodes are
* numbered in tree order (depth-first traversal order).
* @param index The index of the node to be fetched. The index origin is 0.
* @return The Node
at the corresponding position upon success.
* A value of null
is returned if the index is out of range.
*/
public Node item(int index);
/**
* This method retrieves a Node
using a name. It first searches
* for a Node
with a matching id
attribute. If it
* doesn't find one, it then searches for a Node
with a
* matching name
attribute, but only on those elements that
* are allowed a name attribute.
* @param name The name of the Node
to be fetched.
* @return The Node
with a name
or id
* attribute whose value corresponds to the specified string. Upon
* failure (e.g., no node with this name exists), returns
* null
.
*/
public Node namedItem(String name);
}
org/w3c/dom/html/HTMLDListElement.java 100644 0 0 1273 11146172403 15076 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Definition list. See the DL element definition in HTML 4.0.
*/
public interface HTMLDListElement extends HTMLElement {
/**
* Reduce spacing between list items. See the compact attribute definition
* in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public boolean getCompact();
public void setCompact(boolean compact);
}
org/w3c/dom/html/HTMLDirectoryElement.java 100644 0 0 1354 11146172403 16023 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Directory list. See the DIR element definition in HTML 4.0. This element is
* deprecated in HTML 4.0.
*/
public interface HTMLDirectoryElement extends HTMLElement {
/**
* Reduce spacing between list items. See the compact attribute definition
* in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public boolean getCompact();
public void setCompact(boolean compact);
}
org/w3c/dom/html/HTMLDivElement.java 100644 0 0 1261 11146172403 14576 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Generic block container. See the DIV element definition in HTML 4.0.
*/
public interface HTMLDivElement extends HTMLElement {
/**
* Horizontal text alignment. See the align attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
}
org/w3c/dom/html/HTMLDocument.java 100644 0 0 12762 11146172403 14350 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* An HTMLDocument
is the root of the HTML hierarchy andholds the
* entire content. Beside providing access to the hierarchy, italso provides
* some convenience methods for accessing certain sets ofinformation from the
* document.
*
The following properties have been deprecated in favor of the
* corresponding ones for the BODY element:alinkColorbackgroundbgColorfgColor
* linkColorvlinkColor
*
*/
public interface HTMLDocument extends Document {
/**
* The title of a document as specified by the TITLE
element in
* the head of the document.
*/
public String getTitle();
public void setTitle(String title);
/**
* Returns the URI of the page that linked to this page. The value isan
* empty string if the user navigated to the page directly (notthrough a
* link, but, for example, via a bookmark).
*/
public String getReferrer();
/**
* The domain name of the server that served the document, or a nullstring
* if the server cannot be identified by a domain name.
*/
public String getDomain();
/**
* The complete URI of the document.
*/
public String getURL();
/**
* The element that contains the content for the document. In documentswith
* BODY
contents, returns the BODY
element, and in
* frameset documents, this returns the outermostFRAMESET
* element.
*/
public HTMLElement getBody();
public void setBody(HTMLElement body);
/**
* A collection of all the IMG
elements in a document.The
* behavior is limited to IMG
elements forbackwards
* compatibility.
*/
public HTMLCollection getImages();
/**
* A collection of all the OBJECT
elements that includeapplets
* and APPLET
(deprecated) elements ina document.
*/
public HTMLCollection getApplets();
/**
* A collection of all AREA
elements andanchor (A
)
* elements in a documentwith a value for the href
attribute.
*/
public HTMLCollection getLinks();
/**
* A collection of all the forms of a document.
*/
public HTMLCollection getForms();
/**
* A collection of all the anchor (A
) elements in a document
* with a value for the name
attribute.Note. For reasons of
* backwardscompatibility, the returned set of anchors only contains those
* anchors created with the name
attribute, not those created
* with the id
attribute.
*/
public HTMLCollection getAnchors();
/**
* The cookies associated with this document. If there are none, thevalue is
* an empty string. Otherwise, the value is a string: asemicolon-delimited
* list of "name, value" pairs for all the cookiesassociated with the page.
* For example, name=value;expires=date
.
*/
public String getCookie();
public void setCookie(String cookie);
/**
* Note.This method and the ones following allow a user to add to or replace
* the structuremodel of a document using strings of unparsed HTML. At the
* time of writing alternate methods for providing similar functionality
* for both HTML and XML documents were being considered. The following
* methodsmay be deprecated at some point in the future in favor of a more
* general-purpose mechanism.
*
Open a document stream for writing. If a document exists in the
* target, this method clears it.
*/
public void open();
/**
* Closes a document stream opened by open()
and forces
* rendering.
*/
public void close();
/**
* Write a string of text to a document stream opened byopen()
.
* The text is parsed into the document's structuremodel.
* @param text The string to be parsed into some structure in the document
* structuremodel.
*/
public void write(String text);
/**
* Write a string of text followed by a newline character to a document
* stream opened by open()
. The text is parsed into the
* document's structure model.
* @param text The string to be parsed into some structure in the document
* structuremodel.
*/
public void writeln(String text);
/**
* Returns the Element whose id
is given by elementId. If no
* such element exists, returns null
. Behavior is not defined
* if more than one element has this id
.
* @param elementId The unique id
value for an element.
* @return The matching element.
*/
public Element getElementById(String elementId);
/**
* Returns the (possibly empty) collection of elements whosename
* value is given by elementName
.
* @param elementName The name
attribute value for an element.
* @return The matching elements.
*/
public NodeList getElementsByName(String elementName);
}
org/w3c/dom/html/HTMLElement.java 100644 0 0 3754 11146172403 14144 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* All HTML element interfaces derive from this class. Elements that only
* exposethe HTML core attributes are represented by the base
* HTMLElement
interface. These elements are as follows:HEAD
* special: SUB, SUP, SPAN, BDOfont: TT, I, B, U, S, STRIKE, BIG, SMALL
* phrase: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ACRONYM, ABBRlist:
* DD, DTNOFRAMES, NOSCRIPTADDRESS, CENTER
* Note. The style
attribute for thisinterface is reserved for
* future usage.
*/
public interface HTMLElement extends Element {
/**
* The element's identifier. See the id attribute definition in HTML 4.0.
*/
public String getId();
public void setId(String id);
/**
* The element's advisory title. See the title attribute definition in HTML
* 4.0.
*/
public String getTitle();
public void setTitle(String title);
/**
* Language code defined in RFC 1766. See the lang attribute definition in
* HTML 4.0.
*/
public String getLang();
public void setLang(String lang);
/**
* Specifies the base direction of directionally neutraltext and the
* directionality of tables. See the dir attribute definition in HTML 4.0.
*/
public String getDir();
public void setDir(String dir);
/**
* The class attribute of the element. This attribute has been renameddue to
* conflicts with the "class" keyword exposed by many languages. See the
* class attribute definition in HTML 4.0.
*/
public String getClassName();
public void setClassName(String className);
}
org/w3c/dom/html/HTMLFieldSetElement.java 100644 0 0 1254 11146172403 15555 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Organizes form controls into logical groups. See the FIELDSET element
* definition in HTML 4.0.
*/
public interface HTMLFieldSetElement extends HTMLElement {
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
}
org/w3c/dom/html/HTMLFontElement.java 100644 0 0 2215 11146172403 14762 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Local change to font. See the FONT element definition in HTML 4.0. This
* element is deprecated in HTML 4.0.
*/
public interface HTMLFontElement extends HTMLElement {
/**
* Font color. See the color attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getColor();
public void setColor(String color);
/**
* Font face identifier. See the face attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getFace();
public void setFace(String face);
/**
* Font size. See the size attribute definition in HTML 4.0. This attribute
* is deprecated in HTML 4.0.
*/
public String getSize();
public void setSize(String size);
}
org/w3c/dom/html/HTMLFormElement.java 100644 0 0 4536 11146172403 14767 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The FORM
element encompasses behavior similar to acollection
* and an element. It provides direct access to the containedinput elements
* as well as the attributes of the form element. See the FORM element
* definition in HTML 4.0.
*/
public interface HTMLFormElement extends HTMLElement {
/**
* Returns a collection of all control elements in the form.
*/
public HTMLCollection getElements();
/**
* The number of form controls in the form.
*/
public int getLength();
/**
* Names the form.
*/
public String getName();
public void setName(String name);
/**
* List of character sets supported by the server. See the accept-charset
* attribute definition in HTML 4.0.
*/
public String getAcceptCharset();
public void setAcceptCharset(String acceptCharset);
/**
* Server-side form handler. See the action attribute definition in HTML 4.0.
*/
public String getAction();
public void setAction(String action);
/**
* The content type of the submitted form, generally
* "application/x-www-form-urlencoded". See the enctype attribute
* definition in HTML 4.0.
*/
public String getEnctype();
public void setEnctype(String enctype);
/**
* HTTP method used to submit form. See the method attribute definition in
* HTML 4.0.
*/
public String getMethod();
public void setMethod(String method);
/**
* Frame to render the resource in. See the target attribute definition in
* HTML 4.0.
*/
public String getTarget();
public void setTarget(String target);
/**
* Submits the form. It performs the same action as a submit button.
*/
public void submit();
/**
* Restores a form element's default values. It performs the same action as
* a reset button.
*/
public void reset();
}
org/w3c/dom/html/HTMLFrameElement.java 100644 0 0 4321 11146172403 15106 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Create a frame. See the FRAME element definition in HTML 4.0.
*/
public interface HTMLFrameElement extends HTMLElement {
/**
* Request frame borders. See the frameborder attribute definition in HTML
* 4.0.
*/
public String getFrameBorder();
public void setFrameBorder(String frameBorder);
/**
* URI designating a long description of this image or frame. See the
* longdesc attribute definition in HTML 4.0.
*/
public String getLongDesc();
public void setLongDesc(String longDesc);
/**
* Frame margin height, in pixels. See the marginheight attribute definition
* in HTML 4.0.
*/
public String getMarginHeight();
public void setMarginHeight(String marginHeight);
/**
* Frame margin width, in pixels. See the marginwidth attribute definition
* in HTML 4.0.
*/
public String getMarginWidth();
public void setMarginWidth(String marginWidth);
/**
* The frame name (object of the target
attribute). See the
* name attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* When true, forbid user from resizing frame. See the noresize attribute
* definition in HTML 4.0.
*/
public boolean getNoResize();
public void setNoResize(boolean noResize);
/**
* Specify whether or not the frame should have scrollbars. See the
* scrolling attribute definition in HTML 4.0.
*/
public String getScrolling();
public void setScrolling(String scrolling);
/**
* A URI designating the initial frame contents. See the src attribute
* definition in HTML 4.0.
*/
public String getSrc();
public void setSrc(String src);
}
org/w3c/dom/html/HTMLFrameSetElement.java 100644 0 0 1566 11146172403 15572 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Create a grid of frames. See the FRAMESET element definition in HTML 4.0.
*/
public interface HTMLFrameSetElement extends HTMLElement {
/**
* The number of columns of frames in the frameset. See the cols attribute
* definition in HTML 4.0.
*/
public String getCols();
public void setCols(String cols);
/**
* The number of rows of frames in the frameset. See the rows attribute
* definition in HTML 4.0.
*/
public String getRows();
public void setRows(String rows);
}
org/w3c/dom/html/HTMLHRElement.java 100644 0 0 2702 11146172403 14366 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Create a horizontal rule. See the HR element definition in HTML 4.0.
*/
public interface HTMLHRElement extends HTMLElement {
/**
* Align the rule on the page. See the align attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Indicates to the user agent that there should be no shading in the
* rendering of this element. See the noshade attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public boolean getNoShade();
public void setNoShade(boolean noShade);
/**
* The height of the rule. See the size attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public String getSize();
public void setSize(String size);
/**
* The width of the rule. See the width attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
}
org/w3c/dom/html/HTMLHeadElement.java 100644 0 0 1234 11146172403 14715 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Document head information. See the HEAD element definition in HTML 4.0.
*/
public interface HTMLHeadElement extends HTMLElement {
/**
* URI designating a metadata profile. See the profile attribute definition
* in HTML 4.0.
*/
public String getProfile();
public void setProfile(String profile);
}
org/w3c/dom/html/HTMLHeadingElement.java 100644 0 0 1325 11146172403 15414 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* For the H1
to H6
elements. See the H1 element
* definition in HTML 4.0.
*/
public interface HTMLHeadingElement extends HTMLElement {
/**
* Horizontal text alignment. See the align attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
}
org/w3c/dom/html/HTMLHtmlElement.java 100644 0 0 1317 11146172403 14762 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Root of an HTML document. See the HTML element definition in HTML 4.0.
*/
public interface HTMLHtmlElement extends HTMLElement {
/**
* Version information about the document's DTD. See the version attribute
* definition in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getVersion();
public void setVersion(String version);
}
org/w3c/dom/html/HTMLIFrameElement.java 100644 0 0 5207 11146172403 15223 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Inline subwindows. See the IFRAME element definition in HTML 4.0.
*/
public interface HTMLIFrameElement extends HTMLElement {
/**
* Aligns this object (vertically or horizontally) with respect to its
* surrounding text. See the align attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Request frame borders. See the frameborder attribute definition in HTML
* 4.0.
*/
public String getFrameBorder();
public void setFrameBorder(String frameBorder);
/**
* Frame height. See the height attribute definition in HTML 4.0.
*/
public String getHeight();
public void setHeight(String height);
/**
* URI designating a long description of this image or frame. See the
* longdesc attribute definition in HTML 4.0.
*/
public String getLongDesc();
public void setLongDesc(String longDesc);
/**
* Frame margin height, in pixels. See the marginheight attribute definition
* in HTML 4.0.
*/
public String getMarginHeight();
public void setMarginHeight(String marginHeight);
/**
* Frame margin width, in pixels. See the marginwidth attribute definition
* in HTML 4.0.
*/
public String getMarginWidth();
public void setMarginWidth(String marginWidth);
/**
* The frame name (object of the target
attribute). See the
* name attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Specify whether or not the frame should have scrollbars. See the
* scrolling attribute definition in HTML 4.0.
*/
public String getScrolling();
public void setScrolling(String scrolling);
/**
* A URI designating the initial frame contents. See the src attribute
* definition in HTML 4.0.
*/
public String getSrc();
public void setSrc(String src);
/**
* Frame width. See the width attribute definition in HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
}
org/w3c/dom/html/HTMLImageElement.java 100644 0 0 6364 11146172403 15107 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Embedded image. See the IMG element definition in HTML 4.0.
*/
public interface HTMLImageElement extends HTMLElement {
/**
* URI designating the source of this image, for low-resolution output.
*/
public String getLowSrc();
public void setLowSrc(String lowSrc);
/**
* The name of the element (for backwards compatibility).
*/
public String getName();
public void setName(String name);
/**
* Aligns this object (vertically or horizontally) with respect to its
* surrounding text. See the align attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Alternate text for user agents not rendering the normal contentof this
* element. See the alt attribute definition in HTML 4.0.
*/
public String getAlt();
public void setAlt(String alt);
/**
* Width of border around image. See the border attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getBorder();
public void setBorder(String border);
/**
* Override height. See the height attribute definition in HTML 4.0.
*/
public String getHeight();
public void setHeight(String height);
/**
* Horizontal space to the left and right of this image. See the hspace
* attribute definition in HTML 4.0. This attribute is deprecated in HTML
* 4.0.
*/
public String getHspace();
public void setHspace(String hspace);
/**
* Use server-side image map. See the ismap attribute definition in HTML 4.0.
*/
public boolean getIsMap();
public void setIsMap(boolean isMap);
/**
* URI designating a long description of this image or frame. See the
* longdesc attribute definition in HTML 4.0.
*/
public String getLongDesc();
public void setLongDesc(String longDesc);
/**
* URI designating the source of this image. See the src attribute definition
* in HTML 4.0.
*/
public String getSrc();
public void setSrc(String src);
/**
* Use client-side image map. See the usemap attribute definition in HTML
* 4.0.
*/
public String getUseMap();
public void setUseMap(String useMap);
/**
* Vertical space above and below this image. See the vspace attribute
* definition in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getVspace();
public void setVspace(String vspace);
/**
* Override width. See the width attribute definition in HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
}
org/w3c/dom/html/HTMLInputElement.java 100644 0 0 13457 11146172403 15205 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Form control. Note. Depending upon the environmentthe page is being viewed,
* the value property may be read-only for thefile upload input type. For the
* "password" input type, the actual valuereturned may be masked to prevent
* unauthorized use. See the INPUT element definition in HTML 4.0.
*/
public interface HTMLInputElement extends HTMLElement {
/**
* Stores the initial control value (i.e., the initial value of
* value
).
*/
public String getDefaultValue();
public void setDefaultValue(String defaultValue);
/**
* When type
has the value "Radio" or "Checkbox", stores the
* initial value of the checked
attribute.
*/
public boolean getDefaultChecked();
public void setDefaultChecked(boolean defaultChecked);
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* A comma-separated list of content types that a server processing thisform
* will handle correctly. See the accept attribute definition in HTML 4.0.
*/
public String getAccept();
public void setAccept(String accept);
/**
* A single character access key to give access to the form control. See the
* accesskey attribute definition in HTML 4.0.
*/
public String getAccessKey();
public void setAccessKey(String accessKey);
/**
* Aligns this object (vertically or horizontally) with respect to its
* surrounding text. See the align attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Alternate text for user agents not rendering the normal contentof this
* element. See the alt attribute definition in HTML 4.0.
*/
public String getAlt();
public void setAlt(String alt);
/**
* Describes whether a radio or check box is checked, whentype
* has the value "Radio" or "Checkbox". The value isTRUE if explicitly
* set. Represents the current state of the checkboxor radio button. See
* the checked attribute definition in HTML 4.0.
*/
public boolean getChecked();
public void setChecked(boolean checked);
/**
* The control is unavailable in this context. See the disabled attribute
* definition in HTML 4.0.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* Maximum number of characters for text fields, when type
has
* the value "Text" or "Password". See the maxlength attribute definition
* in HTML 4.0.
*/
public int getMaxLength();
public void setMaxLength(int maxLength);
/**
* Form control or object name when submitted with a form. See the name
* attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* This control is read-only. When type
has the value "text"or
* "password" only. See the readonly attribute definition in HTML 4.0.
*/
public boolean getReadOnly();
public void setReadOnly(boolean readOnly);
/**
* Size information. The precise meaning is specific to each type offield.
* See the size attribute definition in HTML 4.0.
*/
public String getSize();
public void setSize(String size);
/**
* When the type
attribute has the value "Image", thisattribute
* specifies the location of the image to be used to decoratethe graphical
* submit button. See the src attribute definition in HTML 4.0.
*/
public String getSrc();
public void setSrc(String src);
/**
* Index that represents the element's position in the tabbing order. See
* the tabindex attribute definition in HTML 4.0.
*/
public int getTabIndex();
public void setTabIndex(int tabIndex);
/**
* The type of control created. See the type attribute definition in HTML
* 4.0.
*/
public String getType();
/**
* Use client-side image map. See the usemap attribute definition in HTML
* 4.0.
*/
public String getUseMap();
public void setUseMap(String useMap);
/**
* The current form control value. Used for radio buttons and check boxes.
* See the value attribute definition in HTML 4.0.
*/
public String getValue();
public void setValue(String value);
/**
* Removes keyboard focus from this element.
*/
public void blur();
/**
* Gives keyboard focus to this element.
*/
public void focus();
/**
* Select the contents of the text area. For INPUT
elements
* whose type
attribute has one of the following values:
* "Text", "File", or "Password".
*/
public void select();
/**
* Simulate a mouse-click. For INPUT
elements whose
* type
attribute has one of the followingvalues: "Button",
* "Checkbox", "Radio", "Reset", or "Submit".
*/
public void click();
}
org/w3c/dom/html/HTMLIsIndexElement.java 100644 0 0 1676 11146172403 15431 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* This element is usedfor single-line text input. See the ISINDEX element
* definition in HTML 4.0. This element is deprecated in HTML 4.0.
*/
public interface HTMLIsIndexElement extends HTMLElement {
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* The prompt message. See the prompt attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getPrompt();
public void setPrompt(String prompt);
}
org/w3c/dom/html/HTMLLIElement.java 100644 0 0 1644 11146172403 14365 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* List item. See the LI element definition in HTML 4.0.
*/
public interface HTMLLIElement extends HTMLElement {
/**
* List item bullet style. See the type attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public String getType();
public void setType(String type);
/**
* Reset sequence number when used in OL
See the value
* attribute definition in HTML 4.0. This attribute is deprecated in HTML
* 4.0.
*/
public int getValue();
public void setValue(int value);
}
org/w3c/dom/html/HTMLLabelElement.java 100644 0 0 2210 11146172403 15066 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Form field label text. See the LABEL element definition in HTML 4.0.
*/
public interface HTMLLabelElement extends HTMLElement {
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* A single character access key to give access to the form control. See the
* accesskey attribute definition in HTML 4.0.
*/
public String getAccessKey();
public void setAccessKey(String accessKey);
/**
* This attribute links this label with another form controlby
* id
attribute. See the for attribute definition in HTML 4.0.
*/
public String getHtmlFor();
public void setHtmlFor(String htmlFor);
}
org/w3c/dom/html/HTMLLegendElement.java 100644 0 0 2263 11146172403 15255 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Provides a caption for a FIELDSET
grouping. See the LEGEND
* element definition in HTML 4.0.
*/
public interface HTMLLegendElement extends HTMLElement {
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* A single character access key to give access to the form control. See the
* accesskey attribute definition in HTML 4.0.
*/
public String getAccessKey();
public void setAccessKey(String accessKey);
/**
* Text alignment relative to FIELDSET
. See the align attribute
* definition in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
}
org/w3c/dom/html/HTMLLinkElement.java 100644 0 0 4620 11146172403 14753 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The LINK
element specifies a link to an externalresource, and
* defines this document's relationship to that resource(or vice versa). See
* the LINK element definition in HTML 4.0.
*/
public interface HTMLLinkElement extends HTMLElement {
/**
* Enables/disables the link. This is currently only used for style sheet
* links, and may be used to activate or deactivate style sheets.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* The character encoding of the resource being linked to. See the charset
* attribute definition in HTML 4.0.
*/
public String getCharset();
public void setCharset(String charset);
/**
* The URI of the linked resource. See the href attribute definition in HTML
* 4.0.
*/
public String getHref();
public void setHref(String href);
/**
* Language code of the linked resource. See the hreflang attribute
* definition in HTML 4.0.
*/
public String getHreflang();
public void setHreflang(String hreflang);
/**
* Designed for use with one or more target media. See the media attribute
* definition in HTML 4.0.
*/
public String getMedia();
public void setMedia(String media);
/**
* Forward link type. See the rel attribute definition in HTML 4.0.
*/
public String getRel();
public void setRel(String rel);
/**
* Reverse link type. See the rev attribute definition in HTML 4.0.
*/
public String getRev();
public void setRev(String rev);
/**
* Frame to render the resource in. See the target attribute definition in
* HTML 4.0.
*/
public String getTarget();
public void setTarget(String target);
/**
* Advisory content type. See the type attribute definition in HTML 4.0.
*/
public String getType();
public void setType(String type);
}
org/w3c/dom/html/HTMLMapElement.java 100644 0 0 1403 11146172403 14567 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Client-side image map. See the MAP element definition in HTML 4.0.
*/
public interface HTMLMapElement extends HTMLElement {
/**
* The list of areas defined for the image map.
*/
public HTMLCollection getAreas();
/**
* Names the map (for use with usemap
). See the name attribute
* definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
}
org/w3c/dom/html/HTMLMenuElement.java 100644 0 0 1343 11146172403 14761 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Menu list. See the MENU element definition in HTML 4.0. This element is
* deprecated in HTML 4.0.
*/
public interface HTMLMenuElement extends HTMLElement {
/**
* Reduce spacing between list items. See the compact attribute definition
* in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public boolean getCompact();
public void setCompact(boolean compact);
}
org/w3c/dom/html/HTMLMetaElement.java 100644 0 0 2366 11146172403 14751 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* This contains generic meta-information about the document. See the META
* element definition in HTML 4.0.
*/
public interface HTMLMetaElement extends HTMLElement {
/**
* Associated information. See the content attribute definition in HTML 4.0.
*/
public String getContent();
public void setContent(String content);
/**
* HTTP response header name. See the http-equiv attribute definition in
* HTML 4.0.
*/
public String getHttpEquiv();
public void setHttpEquiv(String httpEquiv);
/**
* Meta information name. See the name attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Select form of content. See the scheme attribute definition in HTML 4.0.
*/
public String getScheme();
public void setScheme(String scheme);
}
org/w3c/dom/html/HTMLModElement.java 100644 0 0 1653 11146172403 14600 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Notice of modification to part of a document. See the INS and DEL
* element definitions in HTML 4.0.
*/
public interface HTMLModElement extends HTMLElement {
/**
* A URI designating a document that describes the reason forthe change. See
* the cite attribute definition in HTML 4.0.
*/
public String getCite();
public void setCite(String cite);
/**
* The date and time of the change. See the datetime attribute definition in
* HTML 4.0.
*/
public String getDateTime();
public void setDateTime(String dateTime);
}
org/w3c/dom/html/HTMLOListElement.java 100644 0 0 2202 11146172403 15102 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Ordered list. See the OL element definition in HTML 4.0.
*/
public interface HTMLOListElement extends HTMLElement {
/**
* Reduce spacing between list items. See the compact attribute definition
* in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public boolean getCompact();
public void setCompact(boolean compact);
/**
* Starting sequence number. See the start attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public int getStart();
public void setStart(int start);
/**
* Numbering style. See the type attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getType();
public void setType(String type);
}
org/w3c/dom/html/HTMLObjectElement.java 100644 0 0 11362 11146172403 15305 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Generic embedded object. Note. In principle, allproperties on the object
* element are read-write but in someenvironments some properties may be
* read-only once the underlyingobject is instantiated. See the OBJECT
* element definition in HTML 4.0.
*/
public interface HTMLObjectElement extends HTMLElement {
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* Applet class file. See the code
attribute for
* HTMLAppletElement.
*/
public String getCode();
public void setCode(String code);
/**
* Aligns this object (vertically or horizontally) with respect to its
* surrounding text. See the align attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Space-separated list of archives. See the archive attribute definition in
* HTML 4.0.
*/
public String getArchive();
public void setArchive(String archive);
/**
* Width of border around the object. See the border attribute definition in
* HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getBorder();
public void setBorder(String border);
/**
* Base URI for classid
, data
, and
* archive
attributes. See the codebase attribute definition
* in HTML 4.0.
*/
public String getCodeBase();
public void setCodeBase(String codeBase);
/**
* Content type for data downloaded via classid
attribute. See
* the codetype attribute definition in HTML 4.0.
*/
public String getCodeType();
public void setCodeType(String codeType);
/**
* A URI specifying the location of the object's data. See the data
* attribute definition in HTML 4.0.
*/
public String getData();
public void setData(String data);
/**
* Declare (for future reference), but do not instantiate, thisobject. See
* the declare attribute definition in HTML 4.0.
*/
public boolean getDeclare();
public void setDeclare(boolean declare);
/**
* Override height. See the height attribute definition in HTML 4.0.
*/
public String getHeight();
public void setHeight(String height);
/**
* Horizontal space to the left and right of this image, applet, or object.
* See the hspace attribute definition in HTML 4.0. This attribute is
* deprecated in HTML 4.0.
*/
public String getHspace();
public void setHspace(String hspace);
/**
* Form control or object name when submitted with a form. See the name
* attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Message to render while loading the object. See the standby attribute
* definition in HTML 4.0.
*/
public String getStandby();
public void setStandby(String standby);
/**
* Index that represents the element's position in the tabbing order. See
* the tabindex attribute definition in HTML 4.0.
*/
public int getTabIndex();
public void setTabIndex(int tabIndex);
/**
* Content type for data downloaded via data
attribute. See the
* type attribute definition in HTML 4.0.
*/
public String getType();
public void setType(String type);
/**
* Use client-side image map. See the usemap attribute definition in HTML
* 4.0.
*/
public String getUseMap();
public void setUseMap(String useMap);
/**
* Vertical space above and below this image, applet, or object. See the
* vspace attribute definition in HTML 4.0. This attribute is deprecated in
* HTML 4.0.
*/
public String getVspace();
public void setVspace(String vspace);
/**
* Override width. See the width attribute definition in HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
}
org/w3c/dom/html/HTMLOptGroupElement.java 100644 0 0 1632 11146172403 15635 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Group options together in logical subdivisions. See the OPTGROUP element
* definition in HTML 4.0.
*/
public interface HTMLOptGroupElement extends HTMLElement {
/**
* The control is unavailable in this context. See the disabled attribute
* definition in HTML 4.0.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* Assigns a label to this option group. See the label attribute definition
* in HTML 4.0.
*/
public String getLabel();
public void setLabel(String label);
}
org/w3c/dom/html/HTMLOptionElement.java 100644 0 0 3650 11146172403 15330 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* A selectable choice. See the OPTION element definition in HTML 4.0.
*/
public interface HTMLOptionElement extends HTMLElement {
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* Stores the initial value of the selected
attribute.
*/
public boolean getDefaultSelected();
public void setDefaultSelected(boolean defaultSelected);
/**
* The text contained within the option element.
*/
public String getText();
/**
* The index of this OPTION
in its parent SELECT
.
*/
public int getIndex();
public void setIndex(int index);
/**
* The control is unavailable in this context. See the disabled attribute
* definition in HTML 4.0.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* Option label for use in hierarchical menus. See the label attribute
* definition in HTML 4.0.
*/
public String getLabel();
public void setLabel(String label);
/**
* Means that this option is initially selected. See the selected attribute
* definition in HTML 4.0.
*/
public boolean getSelected();
/**
* The current form control value. See the value attribute definition in
* HTML 4.0.
*/
public String getValue();
public void setValue(String value);
}
org/w3c/dom/html/HTMLParagraphElement.java 100644 0 0 1250 11146172403 15757 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Paragraphs. See the P element definition in HTML 4.0.
*/
public interface HTMLParagraphElement extends HTMLElement {
/**
* Horizontal text alignment. See the align attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
}
org/w3c/dom/html/HTMLParamElement.java 100644 0 0 2610 11146172403 15113 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Parameters fed to the OBJECT
element. See the PARAM element
* definition in HTML 4.0.
*/
public interface HTMLParamElement extends HTMLElement {
/**
* The name of a run-time parameter. See the name attribute definition in
* HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Content type for the value
attribute when
* valuetype
has the value "ref". See the type attribute
* definition in HTML 4.0.
*/
public String getType();
public void setType(String type);
/**
* The value of a run-time parameter. See the value attribute definition in
* HTML 4.0.
*/
public String getValue();
public void setValue(String value);
/**
* Information about the meaning of the value
attributevalue.
* See the valuetype attribute definition in HTML 4.0.
*/
public String getValueType();
public void setValueType(String valueType);
}
org/w3c/dom/html/HTMLPreElement.java 100644 0 0 1246 11146172403 14605 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Preformatted text. See the PRE element definition in HTML 4.0.
*/
public interface HTMLPreElement extends HTMLElement {
/**
* Fixed width for content. See the width attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public int getWidth();
public void setWidth(int width);
}
org/w3c/dom/html/HTMLQuoteElement.java 100644 0 0 1334 11146172403 15152 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* For the Q
and BLOCKQUOTE
elements. See the Q
* element definition in HTML 4.0.
*/
public interface HTMLQuoteElement extends HTMLElement {
/**
* A URI designating a document that designates a source document or
* message. See the cite attribute definition in HTML 4.0.
*/
public String getCite();
public void setCite(String cite);
}
org/w3c/dom/html/HTMLScriptElement.java 100644 0 0 3324 11146172403 15322 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Script statements. See the SCRIPT element definition in HTML 4.0.
*/
public interface HTMLScriptElement extends HTMLElement {
/**
* The script content of the element.
*/
public String getText();
public void setText(String text);
/**
* Reserved for future use.
*/
public String getHtmlFor();
public void setHtmlFor(String htmlFor);
/**
* Reserved for future use.
*/
public String getEvent();
public void setEvent(String event);
/**
* The character encoding of the linked resource. See the charset attribute
* definition in HTML 4.0.
*/
public String getCharset();
public void setCharset(String charset);
/**
* Indicates that the user agent can defer processing of the script. See
* the defer attribute definition in HTML 4.0.
*/
public boolean getDefer();
public void setDefer(boolean defer);
/**
* URI designating an external script. See the src attribute definition in
* HTML 4.0.
*/
public String getSrc();
public void setSrc(String src);
/**
* The content type of the script language. See the type attribute definition
* in HTML 4.0.
*/
public String getType();
public void setType(String type);
}
org/w3c/dom/html/HTMLSelectElement.java 100644 0 0 6772 11146172403 15307 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The select element allows the selection of an option. The containedoptions
* can be directly accessed through the select element as acollection. See
* the SELECT element definition in HTML 4.0.
*/
public interface HTMLSelectElement extends HTMLElement {
/**
* The type of control created.
*/
public String getType();
/**
* The ordinal index of the selected option. The value -1 is returned ifno
* element is selected. If multiple options are selected, the index ofthe
* first selected option is returned.
*/
public int getSelectedIndex();
public void setSelectedIndex(int selectedIndex);
/**
* The current form control value.
*/
public String getValue();
public void setValue(String value);
/**
* The number of options in this SELECT
.
*/
public int getLength();
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* The collection of OPTION
elements contained by this element.
*/
public HTMLCollection getOptions();
/**
* The control is unavailable in this context. See the disabled attribute
* definition in HTML 4.0.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* If true, multiple OPTION
elements may be selected in this
* SELECT
. See the multiple attribute definition in HTML 4.0.
*/
public boolean getMultiple();
public void setMultiple(boolean multiple);
/**
* Form control or object name when submitted with a form. See the name
* attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* Number of visible rows. See the size attribute definition in HTML 4.0.
*/
public int getSize();
public void setSize(int size);
/**
* Index that represents the element's position in the tabbing order. See
* the tabindex attribute definition in HTML 4.0.
*/
public int getTabIndex();
public void setTabIndex(int tabIndex);
/**
* Add a new element to the collection of OPTION
elementsfor
* this SELECT
.
* @param element The element to add.
* @param before The element to insert before, or NULL for the head of the
* list.
*/
public void add(HTMLElement element,
HTMLElement before);
/**
* Remove an element from the collection of OPTION
elementsfor
* this SELECT
. Does nothing if no element has the givenindex.
* @param index The index of the item to remove.
*/
public void remove(int index);
/**
* Removes keyboard focus from this element.
*/
public void blur();
/**
* Gives keyboard focus to this element.
*/
public void focus();
}
org/w3c/dom/html/HTMLStyleElement.java 100644 0 0 2161 11146172403 15154 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Style information. A more detailed style sheet object model is planned to be
* defined in a separate document. See the STYLE element definition in HTML
* 4.0.
*/
public interface HTMLStyleElement extends HTMLElement {
/**
* Enables/disables the style sheet.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* Designed for use with one or more target media. See the media attribute
* definition in HTML 4.0.
*/
public String getMedia();
public void setMedia(String media);
/**
* The style sheet language (Internet media type). See the type attribute
* definition in HTML 4.0.
*/
public String getType();
public void setType(String type);
}
org/w3c/dom/html/HTMLTableCaptionElement.java 100644 0 0 1305 11146172403 16420 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Table caption See the CAPTION element definition in HTML 4.0.
*/
public interface HTMLTableCaptionElement extends HTMLElement {
/**
* Caption alignment with respect to the table. See the align attribute
* definition in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
}
org/w3c/dom/html/HTMLTableCellElement.java 100644 0 0 7126 11146172403 15711 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The object used to represent the TH
and TD
* elements. See the TD element definition in HTML 4.0.
*/
public interface HTMLTableCellElement extends HTMLElement {
/**
* The index of this cell in the row.
*/
public int getCellIndex();
public void setCellIndex(int cellIndex);
/**
* Abbreviation for header cells. See the abbr attribute definition in HTML
* 4.0.
*/
public String getAbbr();
public void setAbbr(String abbr);
/**
* Horizontal alignment of data in cell. See the align attribute definition
* in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Names group of related headers. See the axis attribute definition in HTML
* 4.0.
*/
public String getAxis();
public void setAxis(String axis);
/**
* Cell background color. See the bgcolor attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public String getBgColor();
public void setBgColor(String bgColor);
/**
* Alignment character for cells in a column. See the char attribute
* definition in HTML 4.0.
*/
public String getCh();
public void setCh(String ch);
/**
* Offset of alignment character. See the charoff attribute definition in
* HTML 4.0.
*/
public String getChOff();
public void setChOff(String chOff);
/**
* Number of columns spanned by cell. See the colspan attribute definition
* in HTML 4.0.
*/
public int getColSpan();
public void setColSpan(int colSpan);
/**
* List of id
attribute values for header cells. See the
* headers attribute definition in HTML 4.0.
*/
public String getHeaders();
public void setHeaders(String headers);
/**
* Cell height. See the height attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getHeight();
public void setHeight(String height);
/**
* Suppress word wrapping. See the nowrap attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public boolean getNoWrap();
public void setNoWrap(boolean noWrap);
/**
* Number of rows spanned by cell. See the rowspan attribute definition in
* HTML 4.0.
*/
public int getRowSpan();
public void setRowSpan(int rowSpan);
/**
* Scope covered by header cells. See the scope attribute definition in HTML
* 4.0.
*/
public String getScope();
public void setScope(String scope);
/**
* Vertical alignment of data in cell. See the valign attribute definition
* in HTML 4.0.
*/
public String getVAlign();
public void setVAlign(String vAlign);
/**
* Cell width. See the width attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
}
org/w3c/dom/html/HTMLTableColElement.java 100644 0 0 3330 11146172403 15540 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Regroups the COL
and COLGROUP
elements. See the
* COL element definition in HTML 4.0.
*/
public interface HTMLTableColElement extends HTMLElement {
/**
* Horizontal alignment of cell data in column. See the align attribute
* definition in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Alignment character for cells in a column. See the char attribute
* definition in HTML 4.0.
*/
public String getCh();
public void setCh(String ch);
/**
* Offset of alignment character. See the charoff attribute definition in
* HTML 4.0.
*/
public String getChOff();
public void setChOff(String chOff);
/**
* Indicates the number of columns in a group or affected by a grouping. See
* the span attribute definition in HTML 4.0.
*/
public int getSpan();
public void setSpan(int span);
/**
* Vertical alignment of cell data in column. See the valign attribute
* definition in HTML 4.0.
*/
public String getVAlign();
public void setVAlign(String vAlign);
/**
* Default column width. See the width attribute definition in HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
}
org/w3c/dom/html/HTMLTableElement.java 100644 0 0 12204 11146172403 15122 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The create* and delete* methods on the table allow authors to constructand
* modify tables. HTML 4.0 specifies that only one of each of the
* CAPTION
, THEAD
, and TFOOT
elements
* may exist in a table. Therefore, if one exists, and thecreateTHead() or
* createTFoot() method is called, the method returnsthe existing THead or
* TFoot element. See the TABLE element definition in HTML 4.0.
*/
public interface HTMLTableElement extends HTMLElement {
/**
* Returns the table's CAPTION
, or void if none exists.
*/
public HTMLTableCaptionElement getCaption();
public void setCaption(HTMLTableCaptionElement caption);
/**
* Returns the table's THEAD
, or null
if none
* exists.
*/
public HTMLTableSectionElement getTHead();
public void setTHead(HTMLTableSectionElement tHead);
/**
* Returns the table's TFOOT
, or null
if none
* exists.
*/
public HTMLTableSectionElement getTFoot();
public void setTFoot(HTMLTableSectionElement tFoot);
/**
* Returns a collection of all the rows in the table, including all in
* THEAD
, TFOOT
, all TBODY
elements.
*/
public HTMLCollection getRows();
/**
* Returns a collection of the defined table bodies.
*/
public HTMLCollection getTBodies();
/**
* Specifies the table's position with respect to the rest of the document.
* See the align attribute definition in HTML 4.0. This attribute is
* deprecated in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Cell background color. See the bgcolor attribute definition in HTML 4.0.
* This attribute is deprecated in HTML 4.0.
*/
public String getBgColor();
public void setBgColor(String bgColor);
/**
* The width of the border around the table. See the border attribute
* definition in HTML 4.0.
*/
public String getBorder();
public void setBorder(String border);
/**
* Specifies the horizontal and vertical space between cell content andcell
* borders. See the cellpadding attribute definition in HTML 4.0.
*/
public String getCellPadding();
public void setCellPadding(String cellPadding);
/**
* Specifies the horizontal and vertical separation between cells. See the
* cellspacing attribute definition in HTML 4.0.
*/
public String getCellSpacing();
public void setCellSpacing(String cellSpacing);
/**
* Specifies which external table borders to render. See the frame attribute
* definition in HTML 4.0.
*/
public String getFrame();
public void setFrame(String frame);
/**
* Specifies which internal table borders to render. See the rules attribute
* definition in HTML 4.0.
*/
public String getRules();
public void setRules(String rules);
/**
* Supplementary description about the purpose or structureof a table. See
* the summary attribute definition in HTML 4.0.
*/
public String getSummary();
public void setSummary(String summary);
/**
* Specifies the desired table width. See the width attribute definition in
* HTML 4.0.
*/
public String getWidth();
public void setWidth(String width);
/**
* Create a table header row or return an existing one.
* @return A new table header element (THEAD
).
*/
public HTMLElement createTHead();
/**
* Delete the header from the table, if one exists.
*/
public void deleteTHead();
/**
* Create a table footer row or return an existing one.
* @return A footer element (TFOOT
).
*/
public HTMLElement createTFoot();
/**
* Delete the footer from the table, if one exists.
*/
public void deleteTFoot();
/**
* Create a new table caption object or return an existing one.
* @return A CAPTION
element.
*/
public HTMLElement createCaption();
/**
* Delete the table caption, if one exists.
*/
public void deleteCaption();
/**
* Insert a new empty row in the table.Note. A table row cannot be empty
* according to HTML 4.0 Recommendation.
* @param index The row number where to insert a new row.
* @return The newly created row.
*/
public HTMLElement insertRow(int index);
/**
* Delete a table row.
* @param index The index of the row to be deleted.
*/
public void deleteRow(int index);
}
org/w3c/dom/html/HTMLTableRowElement.java 100644 0 0 4731 11146172403 15600 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* A row in a table. See the TR element definition in HTML 4.0.
*/
public interface HTMLTableRowElement extends HTMLElement {
/**
* The index of this row, relative to the entire table.
*/
public int getRowIndex();
public void setRowIndex(int rowIndex);
/**
* The index of this row, relative to the current section(THEAD
* , TFOOT
, or TBODY
).
*/
public int getSectionRowIndex();
public void setSectionRowIndex(int sectionRowIndex);
/**
* The collection of cells in this row.
*/
public HTMLCollection getCells();
public void setCells(HTMLCollection cells);
/**
* Horizontal alignment of data within cells of this row. See the align
* attribute definition in HTML 4.0.
*/
public String getAlign();
public void setAlign(String align);
/**
* Background color for rows. See the bgcolor attribute definition in HTML
* 4.0. This attribute is deprecated in HTML 4.0.
*/
public String getBgColor();
public void setBgColor(String bgColor);
/**
* Alignment character for cells in a column. See the char attribute
* definition in HTML 4.0.
*/
public String getCh();
public void setCh(String ch);
/**
* Offset of alignment character. See the charoff attribute definition in
* HTML 4.0.
*/
public String getChOff();
public void setChOff(String chOff);
/**
* Vertical alignment of data within cells of this row. See the valign
* attribute definition in HTML 4.0.
*/
public String getVAlign();
public void setVAlign(String vAlign);
/**
* Insert an empty TD
cell into this row.
* @param index The place to insert the cell.
* @return The newly created cell.
*/
public HTMLElement insertCell(int index);
/**
* Delete a cell from the current row.
* @param index The index of the cell to delete.
*/
public void deleteCell(int index);
}
org/w3c/dom/html/HTMLTableSectionElement.java 100644 0 0 3411 11146172403 16427 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The THEAD
, TFOOT
, and TBODY
elements.
*/
public interface HTMLTableSectionElement extends HTMLElement {
/**
* Horizontal alignment of data in cells. See the align
* attribute for HTMLTheadElement for details.
*/
public String getAlign();
public void setAlign(String align);
/**
* Alignment character for cells in a column. See the char attribute
* definition in HTML 4.0.
*/
public String getCh();
public void setCh(String ch);
/**
* Offset of alignment character. See the charoff attribute definition in
* HTML 4.0.
*/
public String getChOff();
public void setChOff(String chOff);
/**
* Vertical alignment of data in cells.See the valign
attribute
* for HTMLTheadElement for details.
*/
public String getVAlign();
public void setVAlign(String vAlign);
/**
* The collection of rows in this table section.
*/
public HTMLCollection getRows();
/**
* Insert a row into this section.
* @param index The row number where to insert a new row.
* @return The newly created row.
*/
public HTMLElement insertRow(int index);
/**
* Delete a row from this section.
* @param index The index of the row to be deleted.
*/
public void deleteRow(int index);
}
org/w3c/dom/html/HTMLTextAreaElement.java 100644 0 0 6022 11146172403 15571 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Multi-line text field. See the TEXTAREA element definition in HTML 4.0.
*/
public interface HTMLTextAreaElement extends HTMLElement {
/**
* Stores the initial control value (i.e., the initial value of
* value
).
*/
public String getDefaultValue();
public void setDefaultValue(String defaultValue);
/**
* Returns the FORM
element containing this control.Returns
* null if this control is not within the context of a form.
*/
public HTMLFormElement getForm();
/**
* A single character access key to give access to the form control. See the
* accesskey attribute definition in HTML 4.0.
*/
public String getAccessKey();
public void setAccessKey(String accessKey);
/**
* Width of control (in characters). See the cols attribute definition in
* HTML 4.0.
*/
public int getCols();
public void setCols(int cols);
/**
* The control is unavailable in this context. See the disabled attribute
* definition in HTML 4.0.
*/
public boolean getDisabled();
public void setDisabled(boolean disabled);
/**
* Form control or object name when submitted with a form. See the name
* attribute definition in HTML 4.0.
*/
public String getName();
public void setName(String name);
/**
* This control is read-only. See the readonly attribute definition in HTML
* 4.0.
*/
public boolean getReadOnly();
public void setReadOnly(boolean readOnly);
/**
* Number of text rows. See the rows attribute definition in HTML 4.0.
*/
public int getRows();
public void setRows(int rows);
/**
* Index that represents the element's position in the tabbing order. See
* the tabindex attribute definition in HTML 4.0.
*/
public int getTabIndex();
public void setTabIndex(int tabIndex);
/**
* The type of this form control.
*/
public String getType();
/**
* The current textual content of the multi-line text field. If the entirety
* of the data can not fit into a single wstring, the implementation may
* truncate the data.
*/
public String getValue();
public void setValue(String value);
/**
* Removes keyboard focus from this element.
*/
public void blur();
/**
* Gives keyboard focus to this element.
*/
public void focus();
/**
* Select the contents of the TEXTAREA
.
*/
public void select();
}
org/w3c/dom/html/HTMLTitleElement.java 100644 0 0 1123 11146172403 15132 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* The document title. See the TITLE element definition in HTML 4.0.
*/
public interface HTMLTitleElement extends HTMLElement {
/**
* The specified title as a string.
*/
public String getText();
public void setText(String text);
}
org/w3c/dom/html/HTMLUListElement.java 100644 0 0 1627 11146172403 15122 0 ustar 0 0 /*
* Copyright (c) 1998 World Wide Web Consortium, (Massachusetts Institute of
* Technology, Institut National de Recherche en Informatique et en
* Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*/
package org.w3c.dom.html;
import org.w3c.dom.*;
/**
* Unordered list. See the UL element definition in HTML 4.0.
*/
public interface HTMLUListElement extends HTMLElement {
/**
* Reduce spacing between list items. See the compact attribute definition
* in HTML 4.0. This attribute is deprecated in HTML 4.0.
*/
public boolean getCompact();
public void setCompact(boolean compact);
/**
* Bullet style. See the type attribute definition in HTML 4.0. This
* attribute is deprecated in HTML 4.0.
*/
public String getType();
public void setType(String type);
}
org/w3c/dom/ls/DOMImplementationLS.java 100644 0 0 14272 11146172405 15343 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
import org.w3c.dom.DOMException;
/**
* DOMImplementationLS
contains the factory methods for creating
* Load and Save objects.
*
The expectation is that an instance of the
* DOMImplementationLS
interface can be obtained by using
* binding-specific casting methods on an instance of the
* DOMImplementation
interface or, if the Document
* supports the feature "Core"
version "3.0"
* defined in [DOM Level 3 Core]
* , by using the method DOMImplementation.getFeature
with
* parameter values "LS"
(or "LS-Async"
) and
* "3.0"
(respectively).
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface DOMImplementationLS {
// DOMImplementationLSMode
/**
* Create a synchronous LSParser
.
*/
public static final short MODE_SYNCHRONOUS = 1;
/**
* Create an asynchronous LSParser
.
*/
public static final short MODE_ASYNCHRONOUS = 2;
/**
* Create a new LSParser
. The newly constructed parser may
* then be configured by means of its DOMConfiguration
* object, and used to parse documents by means of its parse
* method.
* @param mode The mode
argument is either
* MODE_SYNCHRONOUS
or MODE_ASYNCHRONOUS
, if
* mode
is MODE_SYNCHRONOUS
then the
* LSParser
that is created will operate in synchronous
* mode, if it's MODE_ASYNCHRONOUS
then the
* LSParser
that is created will operate in asynchronous
* mode.
* @param schemaType An absolute URI representing the type of the schema
* language used during the load of a Document
using the
* newly created LSParser
. Note that no lexical checking
* is done on the absolute URI. In order to create a
* LSParser
for any kind of schema types (i.e. the
* LSParser will be free to use any schema found), use the value
* null
.
*
Note: For W3C XML Schema [XML Schema Part 1]
* , applications must use the value
* "http://www.w3.org/2001/XMLSchema"
. For XML DTD [XML 1.0],
* applications must use the value
* "http://www.w3.org/TR/REC-xml"
. Other Schema languages
* are outside the scope of the W3C and therefore should recommend an
* absolute URI in order to use this method.
* @return The newly created LSParser
object. This
* LSParser
is either synchronous or asynchronous
* depending on the value of the mode
argument.
*
Note: By default, the newly created LSParser
* does not contain a DOMErrorHandler
, i.e. the value of
* the "
* error-handler" configuration parameter is null
. However, implementations
* may provide a default error handler at creation time. In that case,
* the initial value of the "error-handler"
configuration
* parameter on the new LSParser
object contains a
* reference to the default error handler.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the requested mode or schema type is
* not supported.
*/
public LSParser createLSParser(short mode,
String schemaType)
throws DOMException;
/**
* Create a new LSSerializer
object.
* @return The newly created LSSerializer
object.
*
Note: By default, the newly created
* LSSerializer
has no DOMErrorHandler
, i.e.
* the value of the "error-handler"
configuration
* parameter is null
. However, implementations may
* provide a default error handler at creation time. In that case, the
* initial value of the "error-handler"
configuration
* parameter on the new LSSerializer
object contains a
* reference to the default error handler.
*/
public LSSerializer createLSSerializer();
/**
* Create a new empty input source object where
* LSInput.characterStream
, LSInput.byteStream
* , LSInput.stringData
LSInput.systemId
,
* LSInput.publicId
, LSInput.baseURI
, and
* LSInput.encoding
are null, and
* LSInput.certifiedText
is false.
* @return The newly created input object.
*/
public LSInput createLSInput();
/**
* Create a new empty output destination object where
* LSOutput.characterStream
,
* LSOutput.byteStream
, LSOutput.systemId
,
* LSOutput.encoding
are null.
* @return The newly created output object.
*/
public LSOutput createLSOutput();
}
org/w3c/dom/ls/LSException.java 100644 0 0 3744 11146172405 13736 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
/**
* Parser or write operations may throw an LSException
if the
* processing is stopped. The processing can be stopped due to a
* DOMError
with a severity of
* DOMError.SEVERITY_FATAL_ERROR
or a non recovered
* DOMError.SEVERITY_ERROR
, or if
* DOMErrorHandler.handleError()
returned false
.
*
Note: As suggested in the definition of the constants in the
* DOMError
interface, a DOM implementation may choose to
* continue after a fatal error, but the resulting DOM tree is then
* implementation dependent.
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public class LSException extends RuntimeException {
public LSException(short code, String message) {
super(message);
this.code = code;
}
public short code;
// LSExceptionCode
/**
* If an attempt was made to load a document, or an XML Fragment, using
* LSParser
and the processing has been stopped.
*/
public static final short PARSE_ERR = 81;
/**
* If an attempt was made to serialize a Node
using
* LSSerializer
and the processing has been stopped.
*/
public static final short SERIALIZE_ERR = 82;
}
org/w3c/dom/ls/LSInput.java 100644 0 0 26270 11146172405 13116 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
/**
* This interface represents an input source for data.
*
This interface allows an application to encapsulate information about * an input source in a single object, which may include a public * identifier, a system identifier, a byte stream (possibly with a specified * encoding), a base URI, and/or a character stream. *
The exact definitions of a byte stream and a character stream are * binding dependent. *
The application is expected to provide objects that implement this
* interface whenever such objects are needed. The application can either
* provide its own objects that implement this interface, or it can use the
* generic factory method DOMImplementationLS.createLSInput()
* to create objects that implement this interface.
*
The LSParser
will use the LSInput
object to
* determine how to read data. The LSParser
will look at the
* different inputs specified in the LSInput
in the following
* order to know which one to read from, the first one that is not null and
* not an empty string will be used:
*
LSInput.characterStream
* LSInput.byteStream
* LSInput.stringData
* LSInput.systemId
* LSInput.publicId
* If all inputs are null, the LSParser
will report a
* DOMError
with its DOMError.type
set to
* "no-input-specified"
and its DOMError.severity
* set to DOMError.SEVERITY_FATAL_ERROR
.
*
LSInput
objects belong to the application. The DOM
* implementation will never modify them (though it may make copies and
* modify the copies, if necessary).
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSInput {
/**
* An attribute of a language and binding dependent type that represents
* a stream of 16-bit units. The application must encode the stream
* using UTF-16 (defined in [Unicode] and in [ISO/IEC 10646]). It is not a requirement to have an XML declaration when
* using character streams. If an XML declaration is present, the value
* of the encoding attribute will be ignored.
*/
public java.io.Reader getCharacterStream();
/**
* An attribute of a language and binding dependent type that represents
* a stream of 16-bit units. The application must encode the stream
* using UTF-16 (defined in [Unicode] and in [ISO/IEC 10646]). It is not a requirement to have an XML declaration when
* using character streams. If an XML declaration is present, the value
* of the encoding attribute will be ignored.
*/
public void setCharacterStream(java.io.Reader characterStream);
/**
* An attribute of a language and binding dependent type that represents
* a stream of bytes.
*
If the application knows the character encoding of the byte
* stream, it should set the encoding attribute. Setting the encoding in
* this way will override any encoding specified in an XML declaration
* in the data.
*/
public java.io.InputStream getByteStream();
/**
* An attribute of a language and binding dependent type that represents
* a stream of bytes.
*
If the application knows the character encoding of the byte
* stream, it should set the encoding attribute. Setting the encoding in
* this way will override any encoding specified in an XML declaration
* in the data.
*/
public void setByteStream(java.io.InputStream byteStream);
/**
* String data to parse. If provided, this will always be treated as a
* sequence of 16-bit units (UTF-16 encoded characters). It is not a
* requirement to have an XML declaration when using
* stringData
. If an XML declaration is present, the value
* of the encoding attribute will be ignored.
*/
public String getStringData();
/**
* String data to parse. If provided, this will always be treated as a
* sequence of 16-bit units (UTF-16 encoded characters). It is not a
* requirement to have an XML declaration when using
* stringData
. If an XML declaration is present, the value
* of the encoding attribute will be ignored.
*/
public void setStringData(String stringData);
/**
* The system identifier, a URI reference [IETF RFC 2396], for this
* input source. The system identifier is optional if there is a byte
* stream, a character stream, or string data. It is still useful to
* provide one, since the application will use it to resolve any
* relative URIs and can include it in error messages and warnings. (The
* LSParser will only attempt to fetch the resource identified by the
* URI reference if there is no other input available in the input
* source.)
*
If the application knows the character encoding of the object
* pointed to by the system identifier, it can set the encoding using
* the encoding
attribute.
*
If the specified system ID is a relative URI reference (see
* section 5 in [IETF RFC 2396]), the DOM
* implementation will attempt to resolve the relative URI with the
* baseURI
as the base, if that fails, the behavior is
* implementation dependent.
*/
public String getSystemId();
/**
* The system identifier, a URI reference [IETF RFC 2396], for this
* input source. The system identifier is optional if there is a byte
* stream, a character stream, or string data. It is still useful to
* provide one, since the application will use it to resolve any
* relative URIs and can include it in error messages and warnings. (The
* LSParser will only attempt to fetch the resource identified by the
* URI reference if there is no other input available in the input
* source.)
*
If the application knows the character encoding of the object
* pointed to by the system identifier, it can set the encoding using
* the encoding
attribute.
*
If the specified system ID is a relative URI reference (see
* section 5 in [IETF RFC 2396]), the DOM
* implementation will attempt to resolve the relative URI with the
* baseURI
as the base, if that fails, the behavior is
* implementation dependent.
*/
public void setSystemId(String systemId);
/**
* The public identifier for this input source. This may be mapped to an
* input source using an implementation dependent mechanism (such as
* catalogues or other mappings). The public identifier, if specified,
* may also be reported as part of the location information when errors
* are reported.
*/
public String getPublicId();
/**
* The public identifier for this input source. This may be mapped to an
* input source using an implementation dependent mechanism (such as
* catalogues or other mappings). The public identifier, if specified,
* may also be reported as part of the location information when errors
* are reported.
*/
public void setPublicId(String publicId);
/**
* The base URI to be used (see section 5.1.4 in [IETF RFC 2396]) for
* resolving a relative systemId
to an absolute URI.
*
If, when used, the base URI is itself a relative URI, an empty
* string, or null, the behavior is implementation dependent.
*/
public String getBaseURI();
/**
* The base URI to be used (see section 5.1.4 in [IETF RFC 2396]) for
* resolving a relative systemId
to an absolute URI.
*
If, when used, the base URI is itself a relative URI, an empty
* string, or null, the behavior is implementation dependent.
*/
public void setBaseURI(String baseURI);
/**
* The character encoding, if known. The encoding must be a string
* acceptable for an XML encoding declaration ([XML 1.0] section
* 4.3.3 "Character Encoding in Entities").
*
This attribute has no effect when the application provides a
* character stream or string data. For other sources of input, an
* encoding specified by means of this attribute will override any
* encoding specified in the XML declaration or the Text declaration, or
* an encoding obtained from a higher level protocol, such as HTTP [IETF RFC 2616].
*/
public String getEncoding();
/**
* The character encoding, if known. The encoding must be a string
* acceptable for an XML encoding declaration ([XML 1.0] section
* 4.3.3 "Character Encoding in Entities").
*
This attribute has no effect when the application provides a
* character stream or string data. For other sources of input, an
* encoding specified by means of this attribute will override any
* encoding specified in the XML declaration or the Text declaration, or
* an encoding obtained from a higher level protocol, such as HTTP [IETF RFC 2616].
*/
public void setEncoding(String encoding);
/**
* If set to true, assume that the input is certified (see section 2.13
* in [XML 1.1]) when
* parsing [XML 1.1].
*/
public boolean getCertifiedText();
/**
* If set to true, assume that the input is certified (see section 2.13
* in [XML 1.1]) when
* parsing [XML 1.1].
*/
public void setCertifiedText(boolean certifiedText);
}
org/w3c/dom/ls/LSLoadEvent.java 100644 0 0 2151 11146172405 13650 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
import org.w3c.dom.Document;
import org.w3c.dom.events.Event;
/**
* This interface represents a load event object that signals the completion
* of a document load.
*
See also the Document Object Model (DOM) Level 3 Load and Save Specification. */ public interface LSLoadEvent extends Event { /** * The document that finished loading. */ public Document getNewDocument(); /** * The input source that was parsed. */ public LSInput getInput(); } org/w3c/dom/ls/LSOutput.java 100644 0 0 12017 11146172405 13311 0 ustar 0 0 /* * Copyright (c) 2004 World Wide Web Consortium, * * (Massachusetts Institute of Technology, European Research Consortium for * Informatics and Mathematics, Keio University). All Rights Reserved. This * work is distributed under the W3C(r) Software License [1] 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. * * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 */ package org.w3c.dom.ls; /** * This interface represents an output destination for data. *
This interface allows an application to encapsulate information about * an output destination in a single object, which may include a URI, a byte * stream (possibly with a specified encoding), a base URI, and/or a * character stream. *
The exact definitions of a byte stream and a character stream are * binding dependent. *
The application is expected to provide objects that implement this
* interface whenever such objects are needed. The application can either
* provide its own objects that implement this interface, or it can use the
* generic factory method DOMImplementationLS.createLSOutput()
* to create objects that implement this interface.
*
The LSSerializer
will use the LSOutput
object
* to determine where to serialize the output to. The
* LSSerializer
will look at the different outputs specified in
* the LSOutput
in the following order to know which one to
* output to, the first one that is not null and not an empty string will be
* used:
*
LSOutput.characterStream
* LSOutput.byteStream
* LSOutput.systemId
* LSOutput
objects belong to the application. The DOM
* implementation will never modify them (though it may make copies and
* modify the copies, if necessary).
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSOutput {
/**
* An attribute of a language and binding dependent type that represents
* a writable stream to which 16-bit units can be output.
*/
public java.io.Writer getCharacterStream();
/**
* An attribute of a language and binding dependent type that represents
* a writable stream to which 16-bit units can be output.
*/
public void setCharacterStream(java.io.Writer characterStream);
/**
* An attribute of a language and binding dependent type that represents
* a writable stream of bytes.
*/
public java.io.OutputStream getByteStream();
/**
* An attribute of a language and binding dependent type that represents
* a writable stream of bytes.
*/
public void setByteStream(java.io.OutputStream byteStream);
/**
* The system identifier, a URI reference [IETF RFC 2396], for this
* output destination.
*
If the system ID is a relative URI reference (see section 5 in [IETF RFC 2396]), the
* behavior is implementation dependent.
*/
public String getSystemId();
/**
* The system identifier, a URI reference [IETF RFC 2396], for this
* output destination.
*
If the system ID is a relative URI reference (see section 5 in [IETF RFC 2396]), the
* behavior is implementation dependent.
*/
public void setSystemId(String systemId);
/**
* The character encoding to use for the output. The encoding must be a
* string acceptable for an XML encoding declaration ([XML 1.0] section
* 4.3.3 "Character Encoding in Entities"), it is recommended that
* character encodings registered (as charsets) with the Internet
* Assigned Numbers Authority [IANA-CHARSETS]
* should be referred to using their registered names.
*/
public String getEncoding();
/**
* The character encoding to use for the output. The encoding must be a
* string acceptable for an XML encoding declaration ([XML 1.0] section
* 4.3.3 "Character Encoding in Entities"), it is recommended that
* character encodings registered (as charsets) with the Internet
* Assigned Numbers Authority [IANA-CHARSETS]
* should be referred to using their registered names.
*/
public void setEncoding(String encoding);
}
org/w3c/dom/ls/LSParser.java 100644 0 0 63727 11146172405 13263 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
import org.w3c.dom.Document;
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* An interface to an object that is able to build, or augment, a DOM tree
* from various input sources.
*
LSParser
provides an API for parsing XML and building the
* corresponding DOM document structure. A LSParser
instance
* can be obtained by invoking the
* DOMImplementationLS.createLSParser()
method.
*
As specified in [DOM Level 3 Core] * , when a document is first made available via the LSParser: *
value
and
* nodeValue
attributes of an Attr
node initially
* return the XML 1.0
* normalized value. However, if the parameters "
* validate-if-schema" and "
* datatype-normalization" are set to true
, depending on the attribute normalization
* used, the attribute values may differ from the ones obtained by the XML
* 1.0 attribute normalization. If the parameters "
* datatype-normalization" is set to false
, the XML 1.0 attribute normalization is
* guaranteed to occur, and if the attributes list does not contain
* namespace declarations, the attributes
attribute on
* Element
node represents the property [attributes] defined in [XML Information Set]
* .
* Asynchronous LSParser
objects are expected to also
* implement the events::EventTarget
interface so that event
* listeners can be registered on asynchronous LSParser
* objects.
*
Events supported by asynchronous LSParser
objects are:
*
LSParser
finishes to load the document. See also the
* definition of the LSLoadEvent
interface. LSParser
signals progress as data is parsed. This
* specification does not attempt to define exactly when progress events
* should be dispatched. That is intentionally left as
* implementation-dependent. Here is one example of how an application might
* dispatch progress events: Once the parser starts receiving data, a
* progress event is dispatched to indicate that the parsing starts. From
* there on, a progress event is dispatched for every 4096 bytes of data
* that is received and processed. This is only one example, though, and
* implementations can choose to dispatch progress events at any time while
* parsing, or not dispatch them at all. See also the definition of the
* LSProgressEvent
interface. Note: All events defined in this specification use the
* namespace URI "http://www.w3.org/2002/DOMLS"
.
*
While parsing an input source, errors are reported to the application
* through the error handler (LSParser.domConfig
's "
* error-handler" parameter). This specification does in no way try to define all possible
* errors that can occur while parsing XML, or any other markup, but some
* common error cases are defined. The types (DOMError.type
) of
* errors and warnings defined by this specification are:
*
"check-character-normalization-failure" [error]
"doctype-not-allowed" [fatal]
true
* and a doctype is encountered. "no-input-specified" [fatal]
LSInput
object. "pi-base-uri-not-preserved" [warning]
false
and the following XML file is parsed:
* * <!DOCTYPE root [ <!ENTITY e SYSTEM 'subdir/myentity.ent' ]> * <root> &e; </root>* And
subdir/myentity.ent
* contains:
* <one> <two/> </one> <?pi 3.14159?> * <more/>*
"unbound-prefix-in-entity" [warning]
true
and an unbound namespace prefix is
* encountered in an entity's replacement text. Raising this warning is not
* enforced since some existing parsers may not recognize unbound namespace
* prefixes in the replacement text of entities. "unknown-character-denormalization" [fatal]
false
and a character is encountered for which the
* processor cannot determine the normalization properties. "unsupported-encoding" [fatal]
"unsupported-media-type" [fatal]
true
and an unsupported media type is encountered. In addition to raising the defined errors and warnings, implementations * are expected to raise implementation specific errors and warnings for any * other error and warning cases such as IO errors (file not found, * permission denied,...), XML well-formedness errors, and so on. *
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSParser {
/**
* The DOMConfiguration
object used when parsing an input
* source. This DOMConfiguration
is specific to the parse
* operation. No parameter values from this DOMConfiguration
* object are passed automatically to the DOMConfiguration
* object on the Document
that is created, or used, by the
* parse operation. The DOM application is responsible for passing any
* needed parameter values from this DOMConfiguration
* object to the DOMConfiguration
object referenced by the
* Document
object.
*
In addition to the parameters recognized in on the
* DOMConfiguration interface defined in [DOM Level 3 Core]
* , the DOMConfiguration
objects for LSParser
* add or modify the following parameters:
*
"charset-overrides-xml-encoding"
true
LSInput
overrides
* any encoding from the protocol. false
"disallow-doctype"
true
false
"ignore-unknown-character-denormalizations"
true
false
"infoset"
DOMConfiguration
for a description of
* this parameter. Unlike in [DOM Level 3 Core]
* , this parameter will default to true
for
* LSParser
. "namespaces"
true
false
"resource-resolver"
LSResourceResolver
object, or null. If
* the value of this parameter is not null when an external resource
* (such as an external XML entity or an XML schema location) is
* encountered, the implementation will request that the
* LSResourceResolver
referenced in this parameter resolves
* the resource. "supported-media-types-only"
true
false
"validate"
DOMConfiguration
for a description of this parameter.
* Unlike in [DOM Level 3 Core]
* , the processing of the internal subset is always accomplished, even
* if this parameter is set to false
. "validate-if-schema"
DOMConfiguration
for a description of this parameter.
* Unlike in [DOM Level 3 Core]
* , the processing of the internal subset is always accomplished, even
* if this parameter is set to false
. "well-formed"
DOMConfiguration
for a description of this parameter.
* Unlike in [DOM Level 3 Core]
* , this parameter cannot be set to false
. DOMConfiguration
parameters have been applied. For
* example, if "
* validate" is set to true
, the validation is done before invoking the
* filter.
*/
public LSParserFilter getFilter();
/**
* When a filter is provided, the implementation will call out to the
* filter as it is constructing the DOM tree structure. The filter can
* choose to remove elements from the document being constructed, or to
* terminate the parsing early.
* DOMConfiguration
parameters have been applied. For
* example, if "
* validate" is set to true
, the validation is done before invoking the
* filter.
*/
public void setFilter(LSParserFilter filter);
/**
* true
if the LSParser
is asynchronous,
* false
if it is synchronous.
*/
public boolean getAsync();
/**
* true
if the LSParser
is currently busy
* loading a document, otherwise false
.
*/
public boolean getBusy();
/**
* Parse an XML document from a resource identified by a
* LSInput
.
* @param input The LSInput
from which the source of the
* document is to be read.
* @return If the LSParser
is a synchronous
* LSParser
, the newly created and populated
* Document
is returned. If the LSParser
is
* asynchronous, null
is returned since the document
* object may not yet be constructed when this method returns.
* @exception DOMException
* INVALID_STATE_ERR: Raised if the LSParser
's
* LSParser.busy
attribute is true
.
* @exception LSException
* PARSE_ERR: Raised if the LSParser
was unable to load
* the XML document. DOM applications should attach a
* DOMErrorHandler
using the parameter "
* error-handler" if they wish to get details on the error.
*/
public Document parse(LSInput input)
throws DOMException, LSException;
/**
* Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. If the URI
* contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), the
* behavior is not defined by this specification, future versions of
* this specification may define the behavior.
* @param uri The location of the XML document to be read.
* @return If the LSParser
is a synchronous
* LSParser
, the newly created and populated
* Document
is returned, or null
if an error
* occured. If the LSParser
is asynchronous,
* null
is returned since the document object may not yet
* be constructed when this method returns.
* @exception DOMException
* INVALID_STATE_ERR: Raised if the LSParser.busy
* attribute is true
.
* @exception LSException
* PARSE_ERR: Raised if the LSParser
was unable to load
* the XML document. DOM applications should attach a
* DOMErrorHandler
using the parameter "
* error-handler" if they wish to get details on the error.
*/
public Document parseURI(String uri)
throws DOMException, LSException;
// ACTION_TYPES
/**
* Append the result of the parse operation as children of the context
* node. For this action to work, the context node must be an
* Element
or a DocumentFragment
.
*/
public static final short ACTION_APPEND_AS_CHILDREN = 1;
/**
* Replace all the children of the context node with the result of the
* parse operation. For this action to work, the context node must be an
* Element
, a Document
, or a
* DocumentFragment
.
*/
public static final short ACTION_REPLACE_CHILDREN = 2;
/**
* Insert the result of the parse operation as the immediately preceding
* sibling of the context node. For this action to work the context
* node's parent must be an Element
or a
* DocumentFragment
.
*/
public static final short ACTION_INSERT_BEFORE = 3;
/**
* Insert the result of the parse operation as the immediately following
* sibling of the context node. For this action to work the context
* node's parent must be an Element
or a
* DocumentFragment
.
*/
public static final short ACTION_INSERT_AFTER = 4;
/**
* Replace the context node with the result of the parse operation. For
* this action to work, the context node must have a parent, and the
* parent must be an Element
or a
* DocumentFragment
.
*/
public static final short ACTION_REPLACE = 5;
/**
* Parse an XML fragment from a resource identified by a
* LSInput
and insert the content into an existing document
* at the position specified with the context
and
* action
arguments. When parsing the input stream, the
* context node (or its parent, depending on where the result will be
* inserted) is used for resolving unbound namespace prefixes. The
* context node's ownerDocument
node (or the node itself if
* the node of type DOCUMENT_NODE
) is used to resolve
* default attributes and entity references.
* Document
node and the action
* is ACTION_REPLACE_CHILDREN
, then the document that is
* passed as the context node will be changed such that its
* xmlEncoding
, documentURI
,
* xmlVersion
, inputEncoding
,
* xmlStandalone
, and all other such attributes are set to
* what they would be set to if the input source was parsed using
* LSParser.parse()
.
* LSParser
is asynchronous (LSParser.async
is
* true
).
* ErrorHandler
instance associated with the "
* error-handler" parameter of the DOMConfiguration
.
* parseWithContext
, the values of the
* following configuration parameters will be ignored and their default
* values will always be used instead: "
* validate", "
* validate-if-schema", and "
* element-content-whitespace". Other parameters will be treated normally, and the parser is expected
* to call the LSParserFilter
just as if a whole document
* was parsed.
* @param input The LSInput
from which the source document
* is to be read. The source document must be an XML fragment, i.e.
* anything except a complete XML document (except in the case where
* the context node of type DOCUMENT_NODE
, and the action
* is ACTION_REPLACE_CHILDREN
), a DOCTYPE (internal
* subset), entity declaration(s), notation declaration(s), or XML or
* text declaration(s).
* @param contextArg The node that is used as the context for the data
* that is being parsed. This node must be a Document
* node, a DocumentFragment
node, or a node of a type
* that is allowed as a child of an Element
node, e.g. it
* cannot be an Attribute
node.
* @param action This parameter describes which action should be taken
* between the new set of nodes being inserted and the existing
* children of the context node. The set of possible actions is
* defined in ACTION_TYPES
above.
* @return Return the node that is the result of the parse operation. If
* the result is more than one top-level node, the first one is
* returned.
* @exception DOMException
* HIERARCHY_REQUEST_ERR: Raised if the content cannot replace, be
* inserted before, after, or as a child of the context node (see also
* Node.insertBefore
or Node.replaceChild
in [DOM Level 3 Core]
* ).
* LSParser
doesn't
* support this method, or if the context node is of type
* Document
and the DOM implementation doesn't support
* the replacement of the DocumentType
child or
* Element
child.
* LSParser.busy
* attribute is true
.
* @exception LSException
* PARSE_ERR: Raised if the LSParser
was unable to load
* the XML fragment. DOM applications should attach a
* DOMErrorHandler
using the parameter "
* error-handler" if they wish to get details on the error.
*/
public Node parseWithContext(LSInput input,
Node contextArg,
short action)
throws DOMException, LSException;
/**
* Abort the loading of the document that is currently being loaded by
* the LSParser
. If the LSParser
is currently
* not busy, a call to this method does nothing.
*/
public void abort();
}
org/w3c/dom/ls/LSParserFilter.java 100644 0 0 21303 11146172405 14411 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
/**
* LSParserFilter
s provide applications the ability to examine
* nodes as they are being constructed while parsing. As each node is
* examined, it may be modified or removed, or the entire parse may be
* terminated early.
* At the time any of the filter methods are called by the parser, the
* owner Document and DOMImplementation objects exist and are accessible.
* The document element is never passed to the LSParserFilter
* methods, i.e. it is not possible to filter out the document element.
* Document
, DocumentType
, Notation
,
* Entity
, and Attr
nodes are never passed to the
* acceptNode
method on the filter. The child nodes of an
* EntityReference
node are passed to the filter if the
* parameter "
* entities" is set to false
. Note that, as described by the parameter "
* entities", unexpanded entity reference nodes are never discarded and are always
* passed to the filter.
*
All validity checking while parsing a document occurs on the source * document as it appears on the input stream, not on the DOM document as it * is built in memory. With filters, the document in memory may be a subset * of the document on the stream, and its validity may have been affected by * the filtering. *
All default attributes must be present on elements when the elements * are passed to the filter methods. All other default content must be * passed to the filter methods. *
DOM applications must not raise exceptions in a filter. The effect of * throwing exceptions from a filter is DOM implementation dependent. *
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSParserFilter {
// Constants returned by startElement and acceptNode
/**
* Accept the node.
*/
public static final short FILTER_ACCEPT = 1;
/**
* Reject the node and its children.
*/
public static final short FILTER_REJECT = 2;
/**
* Skip this single node. The children of this node will still be
* considered.
*/
public static final short FILTER_SKIP = 3;
/**
* Interrupt the normal processing of the document.
*/
public static final short FILTER_INTERRUPT = 4;
/**
* The parser will call this method after each Element
start
* tag has been scanned, but before the remainder of the
* Element
is processed. The intent is to allow the
* element, including any children, to be efficiently skipped. Note that
* only element nodes are passed to the startElement
* function.
*
The element node passed to startElement
for filtering
* will include all of the Element's attributes, but none of the
* children nodes. The Element may not yet be in place in the document
* being constructed (it may not have a parent node.)
*
A startElement
filter function may access or change
* the attributes for the Element. Changing Namespace declarations will
* have no effect on namespace resolution by the parser.
*
For efficiency, the Element node passed to the filter may not be
* the same one as is actually placed in the tree if the node is
* accepted. And the actual node (node object identity) may be reused
* during the process of reading in and filtering a document.
* @param elementArg The newly encountered element. At the time this
* method is called, the element is incomplete - it will have its
* attributes, but no children.
* @return
*
FILTER_ACCEPT
if the Element
should
* be included in the DOM document being built.
* FILTER_REJECT
if the Element
and all of
* its children should be rejected.
* FILTER_SKIP
if the
* Element
should be skipped. All of its children are
* inserted in place of the skipped Element
node.
* FILTER_INTERRUPT
if the filter wants to stop the
* processing of the document. Interrupting the processing of the
* document does no longer guarantee that the resulting DOM tree is
* XML well-formed. The Element
is rejected.
* FILTER_ACCEPT
if this Node
should
* be included in the DOM document being built.
* FILTER_REJECT
if the Node
and all of its
* children should be rejected.
* FILTER_SKIP
if the
* Node
should be skipped and the Node
* should be replaced by all the children of the Node
.
* FILTER_INTERRUPT
if the filter wants to stop the
* processing of the document. Interrupting the processing of the
* document does no longer guarantee that the resulting DOM tree is
* XML well-formed. The Node
is accepted and will be the
* last completely parsed node.
* LSParser
what types of nodes to show to the
* method LSParserFilter.acceptNode
. If a node is not shown
* to the filter using this attribute, it is automatically included in
* the DOM document being built. See NodeFilter
for
* definition of the constants. The constants SHOW_ATTRIBUTE
* , SHOW_DOCUMENT
, SHOW_DOCUMENT_TYPE
,
* SHOW_NOTATION
, SHOW_ENTITY
, and
* SHOW_DOCUMENT_FRAGMENT
are meaningless here. Those nodes
* will never be passed to LSParserFilter.acceptNode
.
* Event
interface defined in [DOM Level 3 Events]
* .
* The units used for the attributes position
and
* totalSize
are not specified and can be implementation and
* input dependent.
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSProgressEvent extends Event {
/**
* The input source that is being parsed.
*/
public LSInput getInput();
/**
* The current position in the input source, including all external
* entities and other resources that have been read.
*/
public int getPosition();
/**
* The total size of the document including all external resources, this
* number might change as a document is being parsed if references to
* more external resources are seen. A value of 0
is
* returned if the total size cannot be determined or estimated.
*/
public int getTotalSize();
}
org/w3c/dom/ls/LSResourceResolver.java 100644 0 0 11526 11146172405 15326 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
/**
* LSResourceResolver
provides a way for applications to
* redirect references to external resources.
*
Applications needing to implement custom handling for external
* resources can implement this interface and register their implementation
* by setting the "resource-resolver" parameter of
* DOMConfiguration
objects attached to LSParser
* and LSSerializer
. It can also be register on
* DOMConfiguration
objects attached to Document
* if the "LS" feature is supported.
*
The LSParser
will then allow the application to intercept
* any external entities, including the external DTD subset and external
* parameter entities, before including them. The top-level document entity
* is never passed to the resolveResource
method.
*
Many DOM applications will not need to implement this interface, but it * will be especially useful for applications that build XML documents from * databases or other specialized input sources, or for applications that * use URNs. *
Note: LSResourceResolver
is based on the SAX2 [SAX] EntityResolver
* interface.
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSResourceResolver {
/**
* Allow the application to resolve external resources.
*
The LSParser
will call this method before opening any
* external resource, including the external DTD subset, external
* entities referenced within the DTD, and external entities referenced
* within the document element (however, the top-level document entity
* is not passed to this method). The application may then request that
* the LSParser
resolve the external resource itself, that
* it use an alternative URI, or that it use an entirely different input
* source.
*
Application writers can use this method to redirect external
* system identifiers to secure and/or local URI, to look up public
* identifiers in a catalogue, or to read an entity from a database or
* other input source (including, for example, a dialog box).
* @param type The type of the resource being resolved. For XML [XML 1.0] resources
* (i.e. entities), applications must use the value
* "http://www.w3.org/TR/REC-xml"
. For XML Schema [XML Schema Part 1]
* , applications must use the value
* "http://www.w3.org/2001/XMLSchema"
. Other types of
* resources are outside the scope of this specification and therefore
* should recommend an absolute URI in order to use this method.
* @param namespaceURI The namespace of the resource being resolved,
* e.g. the target namespace of the XML Schema [XML Schema Part 1]
* when resolving XML Schema resources.
* @param publicId The public identifier of the external entity being
* referenced, or null
if no public identifier was
* supplied or if the resource is not an entity.
* @param systemId The system identifier, a URI reference [IETF RFC 2396], of the
* external resource being referenced, or null
if no
* system identifier was supplied.
* @param baseURI The absolute base URI of the resource being parsed, or
* null
if there is no base URI.
* @return A LSInput
object describing the new input
* source, or null
to request that the parser open a
* regular URI connection to the resource.
*/
public LSInput resolveResource(String type,
String namespaceURI,
String publicId,
String systemId,
String baseURI);
}
org/w3c/dom/ls/LSSerializer.java 100644 0 0 62561 11146172405 14133 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* A LSSerializer
provides an API for serializing (writing) a
* DOM document out into XML. The XML data is written to a string or an
* output stream. Any changes or fixups made during the serialization affect
* only the serialized data. The Document
object and its
* children are never altered by the serialization operation.
*
During serialization of XML data, namespace fixup is done as defined in [DOM Level 3 Core]
* , Appendix B. [DOM Level 2 Core]
* allows empty strings as a real namespace URI. If the
* namespaceURI
of a Node
is empty string, the
* serialization will treat them as null
, ignoring the prefix
* if any.
*
LSSerializer
accepts any node type for serialization. For
* nodes of type Document
or Entity
, well-formed
* XML will be created when possible (well-formedness is guaranteed if the
* document or entity comes from a parse operation and is unchanged since it
* was created). The serialized output for these node types is either as a
* XML document or an External XML Entity, respectively, and is acceptable
* input for an XML parser. For all other types of nodes the serialized form
* is implementation dependent.
*
Within a Document
, DocumentFragment
, or
* Entity
being serialized, Nodes
are processed as
* follows
*
Document
nodes are written, including the XML
* declaration (unless the parameter "xml-declaration" is set to
* false
) and a DTD subset, if one exists in the DOM. Writing a
* Document
node serializes the entire document.
* Entity
nodes, when written directly by
* LSSerializer.write
, outputs the entity expansion but no
* namespace fixup is done. The resulting output will be valid as an
* external entity.
* true
, EntityReference
nodes are
* serialized as an entity reference of the form "
* &entityName;
" in the output. Child nodes (the expansion)
* of the entity reference are ignored. If the parameter "
* entities" is set to false
, only the children of the entity reference
* are serialized. EntityReference
nodes with no children (no
* corresponding Entity
node or the corresponding
* Entity
nodes have no children) are always serialized.
* CDATAsections
containing content characters that cannot be
* represented in the specified output encoding are handled according to the
* "
* split-cdata-sections" parameter. If the parameter is set to true
,
* CDATAsections
are split, and the unrepresentable characters
* are serialized as numeric character references in ordinary content. The
* exact position and number of splits is not specified. If the parameter
* is set to false
, unrepresentable characters in a
* CDATAsection
are reported as
* "wf-invalid-character"
errors if the parameter "
* well-formed" is set to true
. The error is not recoverable - there is no
* mechanism for supplying alternative characters and continuing with the
* serialization.
* DocumentFragment
nodes are serialized by
* serializing the children of the document fragment in the order they
* appear in the document fragment.
* Note: The serialization of a Node
does not always
* generate a well-formed XML document, i.e. a LSParser
might
* throw fatal errors when parsing the resulting serialization.
*
Within the character data of a document (outside of markup), any * characters that cannot be represented directly are replaced with * character references. Occurrences of '<' and '&' are replaced by * the predefined entities < and &. The other predefined * entities (>, ', and ") might not be used, except * where needed (e.g. using > in cases such as ']]>'). Any * characters that cannot be represented directly in the output character * encoding are serialized as numeric character references (and since * character encoding standards commonly use hexadecimal representations of * characters, using the hexadecimal representation when serializing * character references is encouraged). *
To allow attribute values to contain both single and double quotes, the * apostrophe or single-quote character (') may be represented as * "'", and the double-quote character (") as """. New * line characters and other characters that cannot be represented directly * in attribute values in the output character encoding are serialized as a * numeric character reference. *
Within markup, but outside of attributes, any occurrence of a character
* that cannot be represented in the output character encoding is reported
* as a DOMError
fatal error. An example would be serializing
* the element <LaCa\u00f1ada/> with encoding="us-ascii"
.
* This will result with a generation of a DOMError
* "wf-invalid-character-in-node-name" (as proposed in "
* well-formed").
*
When requested by setting the parameter "
* normalize-characters" on LSSerializer
to true, character normalization is
* performed according to the definition of fully
* normalized characters included in appendix E of [XML 1.1] on all
* data to be serialized, both markup and character data. The character
* normalization process affects only the data as it is being written; it
* does not alter the DOM's view of the document after serialization has
* completed.
*
Implementations are required to support the encodings "UTF-8",
* "UTF-16", "UTF-16BE", and "UTF-16LE" to guarantee that data is
* serializable in all encodings that are required to be supported by all
* XML parsers. When the encoding is UTF-8, whether or not a byte order mark
* is serialized, or if the output is big-endian or little-endian, is
* implementation dependent. When the encoding is UTF-16, whether or not the
* output is big-endian or little-endian is implementation dependent, but a
* Byte Order Mark must be generated for non-character outputs, such as
* LSOutput.byteStream
or LSOutput.systemId
. If
* the Byte Order Mark is not generated, a "byte-order-mark-needed" warning
* is reported. When the encoding is UTF-16LE or UTF-16BE, the output is
* big-endian (UTF-16BE) or little-endian (UTF-16LE) and the Byte Order Mark
* is not be generated. In all cases, the encoding declaration, if
* generated, will correspond to the encoding used during the serialization
* (e.g. encoding="UTF-16"
will appear if UTF-16 was
* requested).
*
Namespaces are fixed up during serialization, the serialization process * will verify that namespace declarations, namespace prefixes and the * namespace URI associated with elements and attributes are consistent. If * inconsistencies are found, the serialized form of the document will be * altered to remove them. The method used for doing the namespace fixup * while serializing a document is the algorithm defined in Appendix B.1, * "Namespace normalization", of [DOM Level 3 Core] * . *
While serializing a document, the parameter "discard-default-content" * controls whether or not non-specified data is serialized. *
While serializing, errors and warnings are reported to the application
* through the error handler (LSSerializer.domConfig
's "
* error-handler" parameter). This specification does in no way try to define all possible
* errors and warnings that can occur while serializing a DOM node, but some
* common error and warning cases are defined. The types (
* DOMError.type
) of errors and warnings defined by this
* specification are:
*
"no-output-specified" [fatal]
LSOutput
if no output is specified in the
* LSOutput
. "unbound-prefix-in-entity-reference" [fatal]
true
and an entity whose replacement text
* contains unbound namespace prefixes is referenced in a location where
* there are no bindings for the namespace prefixes. "unsupported-encoding" [fatal]
In addition to raising the defined errors and warnings, implementations * are expected to raise implementation specific errors and warnings for any * other error and warning cases such as IO errors (file not found, * permission denied,...) and so on. *
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSSerializer {
/**
* The DOMConfiguration
object used by the
* LSSerializer
when serializing a DOM node.
*
In addition to the parameters recognized by the
* DOMConfiguration interface defined in [DOM Level 3 Core]
* , the DOMConfiguration
objects for
* LSSerializer
adds, or modifies, the following
* parameters:
*
"canonical-form"
true
true
will set the parameters
* "format-pretty-print", "discard-default-content", and "xml-declaration
* ", to false
. Setting one of those parameters to
* true
will set this parameter to false
.
* Serializing an XML 1.1 document when "canonical-form" is
* true
will generate a fatal error. false
"discard-default-content"
true
Attr.specified
attribute to decide what attributes
* should be discarded. Note that some implementations might use
* whatever information available to the implementation (i.e. XML
* schema, DTD, the Attr.specified
attribute, and so on) to
* determine what attributes and content to discard if this parameter is
* set to true
. false
"format-pretty-print"
true
false
"ignore-unknown-character-denormalizations"
true
"unknown-character-denormalization"
warning (instead of
* raising an error, if this parameter is not set) and ignore any
* possible denormalizations caused by these characters. false
"normalize-characters"
DOMConfiguration
in [DOM Level 3 Core]
* . Unlike in the Core, the default value for this parameter is
* true
. While DOM implementations are not required to
* support fully
* normalizing the characters in the document according to appendix E of [XML 1.1], this
* parameter must be activated by default if supported. "xml-declaration"
true
Document
, Element
, or Entity
* node is serialized, the XML declaration, or text declaration, should
* be included. The version (Document.xmlVersion
if the
* document is a Level 3 document and the version is non-null, otherwise
* use the value "1.0"), and the output encoding (see
* LSSerializer.write
for details on how to find the output
* encoding) are specified in the serialized XML declaration. false
"xml-declaration-needed"
warning if this will cause
* problems (i.e. the serialized data is of an XML version other than [XML 1.0], or an
* encoding would be needed to be able to re-parse the serialized data). null
will reset its
* value to the default value.
* null
will reset its
* value to the default value.
* DOMConfiguration
parameters have been applied. For
* example, CDATA sections won't be passed to the filter if "
* cdata-sections" is set to false
.
*/
public LSSerializerFilter getFilter();
/**
* When the application provides a filter, the serializer will call out
* to the filter before serializing each Node. The filter implementation
* can choose to remove the node from the stream or to terminate the
* serialization early.
* DOMConfiguration
parameters have been applied. For
* example, CDATA sections won't be passed to the filter if "
* cdata-sections" is set to false
.
*/
public void setFilter(LSSerializerFilter filter);
/**
* Serialize the specified node as described above in the general
* description of the LSSerializer
interface. The output is
* written to the supplied LSOutput
.
* LSOutput
, the encoding is found by
* looking at the encoding information that is reachable through the
* LSOutput
and the item to be written (or its owner
* document) in this order:
* LSOutput.encoding
,
* Document.inputEncoding
,
* Document.xmlEncoding
.
* LSOutput
, a
* "no-output-specified" fatal error is raised.
* true
if node
was
* successfully serialized. Return false
in case the
* normal processing stopped but the implementation kept serializing
* the document; the result of the serialization being implementation
* dependent then.
* @exception LSException
* SERIALIZE_ERR: Raised if the LSSerializer
was unable to
* serialize the node. DOM applications should attach a
* DOMErrorHandler
using the parameter "
* error-handler" if they wish to get details on the error.
*/
public boolean write(Node nodeArg,
LSOutput destination)
throws LSException;
/**
* A convenience method that acts as if LSSerializer.write
* was called with a LSOutput
with no encoding specified
* and LSOutput.systemId
set to the uri
* argument.
* @param nodeArg The node to serialize.
* @param uri The URI to write to.
* @return Returns true
if node
was
* successfully serialized. Return false
in case the
* normal processing stopped but the implementation kept serializing
* the document; the result of the serialization being implementation
* dependent then.
* @exception LSException
* SERIALIZE_ERR: Raised if the LSSerializer
was unable to
* serialize the node. DOM applications should attach a
* DOMErrorHandler
using the parameter "
* error-handler" if they wish to get details on the error.
*/
public boolean writeToURI(Node nodeArg,
String uri)
throws LSException;
/**
* Serialize the specified node as described above in the general
* description of the LSSerializer
interface. The output is
* written to a DOMString
that is returned to the caller.
* The encoding used is the encoding of the DOMString
type,
* i.e. UTF-16. Note that no Byte Order Mark is generated in a
* DOMString
object.
* @param nodeArg The node to serialize.
* @return Returns the serialized data.
* @exception DOMException
* DOMSTRING_SIZE_ERR: Raised if the resulting string is too long to
* fit in a DOMString
.
* @exception LSException
* SERIALIZE_ERR: Raised if the LSSerializer
was unable to
* serialize the node. DOM applications should attach a
* DOMErrorHandler
using the parameter "
* error-handler" if they wish to get details on the error.
*/
public String writeToString(Node nodeArg)
throws DOMException, LSException;
}
org/w3c/dom/ls/LSSerializerFilter.java 100644 0 0 7016 11146172405 15253 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
import org.w3c.dom.traversal.NodeFilter;
/**
* LSSerializerFilter
s provide applications the ability to
* examine nodes as they are being serialized and decide what nodes should
* be serialized or not. The LSSerializerFilter
interface is
* based on the NodeFilter
interface defined in [DOM Level 2 Traversal and Range]
* .
* Document
, DocumentType
,
* DocumentFragment
, Notation
, Entity
* , and children of Attr
nodes are not passed to the filter.
* The child nodes of an EntityReference
node are only passed
* to the filter if the EntityReference
node is skipped by the
* method LSParserFilter.acceptNode()
.
*
When serializing an Element
, the element is passed to the
* filter before any of its attributes are passed to the filter. Namespace
* declaration attributes, and default attributes (except in the case when "
* discard-default-content" is set to false
), are never passed
* to the filter.
*
The result of any attempt to modify a node passed to a
* LSSerializerFilter
is implementation dependent.
*
DOM applications must not raise exceptions in a filter. The effect of * throwing exceptions from a filter is DOM implementation dependent. *
For efficiency, a node passed to the filter may not be the same as the * one that is actually in the tree. And the actual node (node object * identity) may be reused during the process of filtering and serializing a * document. *
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSSerializerFilter extends NodeFilter {
/**
* Tells the LSSerializer
what types of nodes to show to the
* filter. If a node is not shown to the filter using this attribute, it
* is automatically serialized. See NodeFilter
for
* definition of the constants. The constants SHOW_DOCUMENT
* , SHOW_DOCUMENT_TYPE
, SHOW_DOCUMENT_FRAGMENT
* , SHOW_NOTATION
, and SHOW_ENTITY
are
* meaningless here, such nodes will never be passed to a
* LSSerializerFilter
.
*
Unlike [DOM Level 2 Traversal and Range]
* , the SHOW_ATTRIBUTE
constant indicates that the
* Attr
nodes are shown and passed to the filter.
*
The constants used here are defined in [DOM Level 2 Traversal and Range]
* .
*/
public int getWhatToShow();
}
org/w3c/dom/ranges/DocumentRange.java 100644 0 0 2724 11146172405 15132 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.ranges;
/**
*
See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
* @since DOM Level 2
*/
public interface DocumentRange {
/**
* This interface can be obtained from the object implementing the
* Document
interface using binding-specific casting
* methods.
* @return The initial state of the Range returned from this method is
* such that both of its boundary-points are positioned at the
* beginning of the corresponding Document, before any content. The
* Range returned can only be used to select content associated with
* this Document, or with DocumentFragments and Attrs for which this
* Document is the ownerDocument
.
*/
public Range createRange();
}
org/w3c/dom/ranges/Range.java 100644 0 0 45134 11146172405 13455 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.ranges;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
import org.w3c.dom.DocumentFragment;
/**
*
See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
* @since DOM Level 2
*/
public interface Range {
/**
* Node within which the Range begins
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public Node getStartContainer()
throws DOMException;
/**
* Offset within the starting node of the Range.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public int getStartOffset()
throws DOMException;
/**
* Node within which the Range ends
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public Node getEndContainer()
throws DOMException;
/**
* Offset within the ending node of the Range.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public int getEndOffset()
throws DOMException;
/**
* TRUE if the Range is collapsed
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public boolean getCollapsed()
throws DOMException;
/**
* The deepest common ancestor container of the Range's two
* boundary-points.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public Node getCommonAncestorContainer()
throws DOMException;
/**
* Sets the attributes describing the start of the Range.
* @param refNode The refNode
value. This parameter must be
* different from null
.
* @param offset The startOffset
value.
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if refNode
or an ancestor
* of refNode
is an Entity, Notation, or DocumentType
* node.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if offset
is negative or greater
* than the number of child units in refNode
. Child units
* are 16-bit units if refNode
is a type of CharacterData
* node (e.g., a Text or Comment node) or a ProcessingInstruction
* node. Child units are Nodes in all other cases.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void setStart(Node refNode,
int offset)
throws RangeException, DOMException;
/**
* Sets the attributes describing the end of a Range.
* @param refNode The refNode
value. This parameter must be
* different from null
.
* @param offset The endOffset
value.
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if refNode
or an ancestor
* of refNode
is an Entity, Notation, or DocumentType
* node.
* @exception DOMException
* INDEX_SIZE_ERR: Raised if offset
is negative or greater
* than the number of child units in refNode
. Child units
* are 16-bit units if refNode
is a type of CharacterData
* node (e.g., a Text or Comment node) or a ProcessingInstruction
* node. Child units are Nodes in all other cases.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void setEnd(Node refNode,
int offset)
throws RangeException, DOMException;
/**
* Sets the start position to be before a node
* @param refNode Range starts before refNode
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if the root container of
* refNode
is not an Attr, Document, or DocumentFragment
* node or if refNode
is a Document, DocumentFragment,
* Attr, Entity, or Notation node.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void setStartBefore(Node refNode)
throws RangeException, DOMException;
/**
* Sets the start position to be after a node
* @param refNode Range starts after refNode
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if the root container of
* refNode
is not an Attr, Document, or DocumentFragment
* node or if refNode
is a Document, DocumentFragment,
* Attr, Entity, or Notation node.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void setStartAfter(Node refNode)
throws RangeException, DOMException;
/**
* Sets the end position to be before a node.
* @param refNode Range ends before refNode
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if the root container of
* refNode
is not an Attr, Document, or DocumentFragment
* node or if refNode
is a Document, DocumentFragment,
* Attr, Entity, or Notation node.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void setEndBefore(Node refNode)
throws RangeException, DOMException;
/**
* Sets the end of a Range to be after a node
* @param refNode Range ends after refNode
.
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if the root container of
* refNode
is not an Attr, Document or DocumentFragment
* node or if refNode
is a Document, DocumentFragment,
* Attr, Entity, or Notation node.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void setEndAfter(Node refNode)
throws RangeException, DOMException;
/**
* Collapse a Range onto one of its boundary-points
* @param toStart If TRUE, collapses the Range onto its start; if FALSE,
* collapses it onto its end.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public void collapse(boolean toStart)
throws DOMException;
/**
* Select a node and its contents
* @param refNode The node to select.
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if an ancestor of refNode
* is an Entity, Notation or DocumentType node or if
* refNode
is a Document, DocumentFragment, Attr, Entity,
* or Notation node.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void selectNode(Node refNode)
throws RangeException, DOMException;
/**
* Select the contents within a node
* @param refNode Node to select from
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if refNode
or an ancestor
* of refNode
is an Entity, Notation or DocumentType node.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*
WRONG_DOCUMENT_ERR: Raised if refNode
was created
* from a different document than the one that created this range.
*/
public void selectNodeContents(Node refNode)
throws RangeException, DOMException;
// CompareHow
/**
* Compare start boundary-point of sourceRange
to start
* boundary-point of Range on which compareBoundaryPoints
* is invoked.
*/
public static final short START_TO_START = 0;
/**
* Compare start boundary-point of sourceRange
to end
* boundary-point of Range on which compareBoundaryPoints
* is invoked.
*/
public static final short START_TO_END = 1;
/**
* Compare end boundary-point of sourceRange
to end
* boundary-point of Range on which compareBoundaryPoints
* is invoked.
*/
public static final short END_TO_END = 2;
/**
* Compare end boundary-point of sourceRange
to start
* boundary-point of Range on which compareBoundaryPoints
* is invoked.
*/
public static final short END_TO_START = 3;
/**
* Compare the boundary-points of two Ranges in a document.
* @param how A code representing the type of comparison, as defined
* above.
* @param sourceRange The Range
on which this current
* Range
is compared to.
* @return -1, 0 or 1 depending on whether the corresponding
* boundary-point of the Range is respectively before, equal to, or
* after the corresponding boundary-point of sourceRange
.
* @exception DOMException
* WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same
* Document or DocumentFragment.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
*/
public short compareBoundaryPoints(short how,
Range sourceRange)
throws DOMException;
/**
* Removes the contents of a Range from the containing document or
* document fragment without returning a reference to the removed
* content.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of
* the Range is read-only or any of the nodes that contain any of the
* content of the Range are read-only.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
*/
public void deleteContents()
throws DOMException;
/**
* Moves the contents of a Range from the containing document or document
* fragment to a new DocumentFragment.
* @return A DocumentFragment containing the extracted contents.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of
* the Range is read-only or any of the nodes which contain any of the
* content of the Range are read-only.
*
HIERARCHY_REQUEST_ERR: Raised if a DocumentType node would be
* extracted into the new DocumentFragment.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
*/
public DocumentFragment extractContents()
throws DOMException;
/**
* Duplicates the contents of a Range
* @return A DocumentFragment that contains content equivalent to this
* Range.
* @exception DOMException
* HIERARCHY_REQUEST_ERR: Raised if a DocumentType node would be
* extracted into the new DocumentFragment.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
*/
public DocumentFragment cloneContents()
throws DOMException;
/**
* Inserts a node into the Document or DocumentFragment at the start of
* the Range. If the container is a Text node, this will be split at the
* start of the Range (as if the Text node's splitText method was
* performed at the insertion point) and the insertion will occur
* between the two resulting Text nodes. Adjacent Text nodes will not be
* automatically merged. If the node to be inserted is a
* DocumentFragment node, the children will be inserted rather than the
* DocumentFragment node itself.
* @param newNode The node to insert at the start of the Range
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the
* start of the Range is read-only.
*
WRONG_DOCUMENT_ERR: Raised if newNode
and the
* container of the start of the Range were not created from the same
* document.
*
HIERARCHY_REQUEST_ERR: Raised if the container of the start of
* the Range is of a type that does not allow children of the type of
* newNode
or if newNode
is an ancestor of
* the container.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
* @exception RangeException
* INVALID_NODE_TYPE_ERR: Raised if newNode
is an Attr,
* Entity, Notation, or Document node.
*/
public void insertNode(Node newNode)
throws DOMException, RangeException;
/**
* Reparents the contents of the Range to the given node and inserts the
* node at the position of the start of the Range.
* @param newParent The node to surround the contents with.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of
* either boundary-point of the Range is read-only.
*
WRONG_DOCUMENT_ERR: Raised if newParent
and the
* container of the start of the Range were not created from the same
* document.
*
HIERARCHY_REQUEST_ERR: Raised if the container of the start of
* the Range is of a type that does not allow children of the type of
* newParent
or if newParent
is an ancestor
* of the container or if node
would end up with a child
* node of a type not allowed by the type of node
.
*
INVALID_STATE_ERR: Raised if detach()
has already
* been invoked on this object.
* @exception RangeException
* BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a
* non-text node.
*
INVALID_NODE_TYPE_ERR: Raised if node
is an Attr,
* Entity, DocumentType, Notation, Document, or DocumentFragment node.
*/
public void surroundContents(Node newParent)
throws DOMException, RangeException;
/**
* Produces a new Range whose boundary-points are equal to the
* boundary-points of the Range.
* @return The duplicated Range.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public Range cloneRange()
throws DOMException;
/**
* Returns the contents of a Range as a string. This string contains only
* the data characters, not any markup.
* @return The contents of the Range.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public String toString()
throws DOMException;
/**
* Called to indicate that the Range is no longer in use and that the
* implementation may relinquish any resources associated with this
* Range. Subsequent calls to any methods or attribute getters on this
* Range will result in a DOMException
being thrown with an
* error code of INVALID_STATE_ERR
.
* @exception DOMException
* INVALID_STATE_ERR: Raised if detach()
has already been
* invoked on this object.
*/
public void detach()
throws DOMException;
}
org/w3c/dom/ranges/RangeException.java 100644 0 0 3021 11146172405 15301 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.ranges;
/**
* Range operations may throw a RangeException
as specified in
* their method descriptions.
*
See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * @since DOM Level 2 */ public class RangeException extends RuntimeException { public RangeException(short code, String message) { super(message); this.code = code; } public short code; // RangeExceptionCode /** * If the boundary-points of a Range do not meet specific requirements. */ public static final short BAD_BOUNDARYPOINTS_ERR = 1; /** * If the container of an boundary-point of a Range is being set to either * a node of an invalid type or a node with an ancestor of an invalid * type. */ public static final short INVALID_NODE_TYPE_ERR = 2; } org/w3c/dom/smil/ElementTimeControl.java 100644 0 0 22263 11146172406 15656 0 ustar 0 0 /* * Copyright (c) 2001 World Wide Web Consortium, * (Massachusetts Institute of Technology, Institut National de * Recherche en Informatique et en Automatique, Keio University). All * Rights Reserved. This program is distributed under the W3C's Software * Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details. * */ package org.w3c.dom.smil; import org.w3c.dom.DOMException; /** *
SMILAnimation
* supports several methods for controlling the behavior of animation:
* beginElement()
and endElement()
, et al. These
* methods are used to begin and end an animation that has declared the timing
* to respond to the DOM, using the following syntax:
<animate begin="indefinite" end="indefinite" .../>* *
Note that only one of begin
or end
need be
* specified - either or both can be used. The beginElement()
* and beginElementAt()
methods must do nothing if the animation
* is not explicitly set with the begin="indefinite"
syntax
* above. The endElement()
and endElementAt()
* methods must do nothing if the animation is not explicitly set with the
* end
="indefinite"
syntax above.
Calling beginElement()
causes the animation to begin in much
* the same way that an animation with event-based begin timing begins. The
* effective begin time is the current presentation time at the time of the DOM
* method call. Note that beginElement()
is subject to the
* restart
attribute in the same manner that event-based begin
* timing is. If an animation is specified to disallow restarting at a given
* point, beginElement()
methods calls must fail. Refer also to
* the section Restarting
* animations.
Calling beginElementAt()
has the same effect as
* beginElement()
, except that the effective begin time is offset
* from the current presentation time by an amount specified as a parameter.
* Passing a negative value for the offset causes the element to begin as for
* beginElement()
, but has the effect that the element begins at
* the specified offset into its active duration. The
* beginElementAt()
method must also respect the
* restart
attribute. The restart semantics for a
* beginElementAt()
method call are evaluated at the time of the
* method call, and not at the effective begin time specified by the offset
* parameter.
Calling endElement()
causes an animation to end the active
* duration, just as end
does. Depending upon the value of the
* fill
attribute, the animation effect may no longer be applied,
* or it may be frozen at the current effect. Refer also to the section Freezing animations. If an animation is not currently
* active (i.e. if it has not yet begun or if it is frozen), the
* endElement()
method will fail.
Calling endElementAt()
causes an animation to end the active
* duration, just as endElement()
does, but allows the caller to
* specify a positive offset, to cause the element to end at a point in the
* future. Other than delaying when the end actually happens, the semantics are
* identical to those for endElement()
. If
* endElementAt()
is called more than once while an element is
* active, the end time specified by the last method call will determine the
* end behavior.
The expectation of the following interface is that an instance of the
* ElementTimeControl interface can be obtained by using binding-specific
* casting methods on an instance of an animate element. A DOM application can
* use the hasFeature
method of the DOMImplementation
* interface to determine whether the ElementTimeControl
interface is
* supported or not. The feature string for this interface is
* "TimeControl"
.
true
if the method call was successful and the
* element was begun. false
if the method call
* failed. Possible reasons for failure include:
* beginElement
* method. The begin
attribute is not set to
* "indefinite"
.restart
attribute is set to
* "whenNotActive"
.restart
attribute is set to
* "never"
.SYNTAX_ERR
: The element was not defined
* with the appropriate syntax to allow beginElement
calls.
*/
public boolean beginElement()
throws DOMException;
/**
* Causes this element to begin the local timeline (subject to restart
* constraints), at the passed offset from the current time when the method
* is called. If the offset is >= 0, the semantics are equivalent to an
* event-base begin with the specified offset. If the offset is < 0, the
* semantics are equivalent to beginElement(), but the element active
* duration is evaluated as though the element had begun at the passed
* (negative) offset from the current time when the method is called.
*
* @param offset The offset in seconds at which to begin the element.
* @return true
if the method call was successful and the element was begun.
* false
if the method call failed.
* Possible reasons for failure include:
* beginElementAt
method. The
* begin
attribute is not set to
* "indefinite"
.restart
attribute is set to
* "whenNotActive"
.restart
* attribute is set to "never"
.beginElementAt
calls.
*/
public boolean beginElementAt(float offset)
throws DOMException;
/**
* Causes this element to end the local timeline.
*
* @return true
if the method call was
* successful and the element was ended.
* false
if method call failed. Possible
* reasons for failure include:
* endElement
method. The
* end
attribute is not set to
* "indefinite"
.endElement
* calls.
*/
public boolean endElement()
throws DOMException;
/**
* Causes this element to end the local timeline at the specified offset
* from the current time when the method is called
*
* @param offset The offset in seconds at which to end the element.
* Must be >= 0
.
* @return true
if the method call was
* successful and the element was ended.
* false
if method call failed. Possible
* reasons for failure include:
* endElementAt
method. The
* end
attribute is not set to
* "indefinite"
.endElementAt
calls.
*/
public boolean endElementAt(float offset)
throws DOMException;
}
org/w3c/dom/smil/TimeEvent.java 100644 0 0 10475 11146172406 14007 0 ustar 0 0 /*
* Copyright (c) 2001 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.smil;
import org.w3c.dom.events.Event;
import org.w3c.dom.views.AbstractView;
/**
* The TimeEvent
interface provides specific contextual
* information associated with Time events.
*
* @see SMIL Animation.
*/
public interface TimeEvent extends Event {
/**
* The view
attribute identifies the AbstractView
* from which the event was generated.
*/
public AbstractView getView();
/**
* Specifies some detail information about the Event
,
* depending on the type of event.
*/
public int getDetail();
/**
* The initTimeEvent
method is used to initialize the value of
* a TimeEvent
created through the DocumentEvent
* interface. This method may only be called before the
* TimeEvent
has been dispatched via the
* dispatchEvent
method, though it may be called multiple
* times during that phase if necessary. If called multiple times, the
* final invocation takes precedence.
*
* The different types of events that can occur are:
* *
* beginElement()
or beginElementAt()
methods. Note
* that if an element is restarted while it is currently playing, the
* element will raise an end event and another begin event, as the element
* restarts.
* endElement()
or
* endElementAt()
methods. Note that if an element is restarted
* while it is currently playing, the element will raise an end event and
* another begin event, as the element restarts.
* Event
's
* AbstractView
.
* @param detailArg Specifies the Event
's detail. */
public void initTimeEvent(String typeArg,
AbstractView viewArg,
int detailArg);
}
org/w3c/dom/stylesheets/DocumentStyle.java 100644 0 0 3116 11146172407 16271 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.stylesheets;
/**
* The DocumentStyle
interface provides a mechanism by which the
* style sheets embedded in a document can be retrieved. The expectation is
* that an instance of the DocumentStyle
interface can be
* obtained by using binding-specific casting methods on an instance of the
* Document
interface.
* See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface DocumentStyle {
/**
* A list containing all the style sheets explicitly linked into or
* embedded in a document. For HTML documents, this includes external
* style sheets, included via the HTML LINK element, and inline STYLE
* elements. In XML, this includes external style sheets, included via
* style sheet processing instructions (see [XML StyleSheet]).
*/
public StyleSheetList getStyleSheets();
}
org/w3c/dom/stylesheets/LinkStyle.java 100644 0 0 2503 11146172407 15407 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.stylesheets;
/**
* The LinkStyle
interface provides a mechanism by which a style
* sheet can be retrieved from the node responsible for linking it into a
* document. An instance of the LinkStyle
interface can be
* obtained using binding-specific casting methods on an instance of a
* linking node (HTMLLinkElement
, HTMLStyleElement
* or ProcessingInstruction
in DOM Level 2).
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface LinkStyle {
/**
* The style sheet.
*/
public StyleSheet getSheet();
}
org/w3c/dom/stylesheets/MediaList.java 100644 0 0 6722 11146172407 15353 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.stylesheets;
import org.w3c.dom.DOMException;
/**
* The MediaList
interface provides the abstraction of an
* ordered collection of media, without defining or constraining how this
* collection is implemented. An empty list is the same as a list that
* contains the medium "all"
.
*
The items in the MediaList
are accessible via an integral
* index, starting from 0.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface MediaList {
/**
* The parsable textual representation of the media list. This is a
* comma-separated list of media.
*/
public String getMediaText();
/**
* The parsable textual representation of the media list. This is a
* comma-separated list of media.
* @exception DOMException
* SYNTAX_ERR: Raised if the specified string value has a syntax error
* and is unparsable.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this media list is
* readonly.
*/
public void setMediaText(String mediaText)
throws DOMException;
/**
* The number of media in the list. The range of valid media is
* 0
to length-1
inclusive.
*/
public int getLength();
/**
* Returns the index
th in the list. If index
is
* greater than or equal to the number of media in the list, this
* returns null
.
* @param index Index into the collection.
* @return The medium at the index
th position in the
* MediaList
, or null
if that is not a valid
* index.
*/
public String item(int index);
/**
* Deletes the medium indicated by oldMedium
from the list.
* @param oldMedium The medium to delete in the media list.
* @exception DOMException
* NO_MODIFICATION_ALLOWED_ERR: Raised if this list is readonly.
*
NOT_FOUND_ERR: Raised if oldMedium
is not in the
* list.
*/
public void deleteMedium(String oldMedium)
throws DOMException;
/**
* Adds the medium newMedium
to the end of the list. If the
* newMedium
is already used, it is first removed.
* @param newMedium The new medium to add.
* @exception DOMException
* INVALID_CHARACTER_ERR: If the medium contains characters that are
* invalid in the underlying style language.
*
NO_MODIFICATION_ALLOWED_ERR: Raised if this list is readonly.
*/
public void appendMedium(String newMedium)
throws DOMException;
}
org/w3c/dom/stylesheets/StyleSheet.java 100644 0 0 11500 11146172407 15577 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.stylesheets;
import org.w3c.dom.Node;
/**
* The StyleSheet
interface is the abstract base interface for
* any type of style sheet. It represents a single style sheet associated
* with a structured document. In HTML, the StyleSheet interface represents
* either an external style sheet, included via the HTML LINK element, or
* an inline STYLE element. In XML, this interface represents an external
* style sheet, included via a style sheet processing instruction.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface StyleSheet {
/**
* This specifies the style sheet language for this style sheet. The
* style sheet language is specified as a content type (e.g.
* "text/css"). The content type is often specified in the
* ownerNode
. Also see the type attribute definition for
* the LINK
element in HTML 4.0, and the type
* pseudo-attribute for the XML style sheet processing instruction.
*/
public String getType();
/**
* false
if the style sheet is applied to the document.
* true
if it is not. Modifying this attribute may cause a
* new resolution of style for the document. A stylesheet only applies
* if both an appropriate medium definition is present and the disabled
* attribute is false. So, if the media doesn't apply to the current
* user agent, the disabled
attribute is ignored.
*/
public boolean getDisabled();
/**
* false
if the style sheet is applied to the document.
* true
if it is not. Modifying this attribute may cause a
* new resolution of style for the document. A stylesheet only applies
* if both an appropriate medium definition is present and the disabled
* attribute is false. So, if the media doesn't apply to the current
* user agent, the disabled
attribute is ignored.
*/
public void setDisabled(boolean disabled);
/**
* The node that associates this style sheet with the document. For HTML,
* this may be the corresponding LINK
or STYLE
* element. For XML, it may be the linking processing instruction. For
* style sheets that are included by other style sheets, the value of
* this attribute is null
.
*/
public Node getOwnerNode();
/**
* For style sheet languages that support the concept of style sheet
* inclusion, this attribute represents the including style sheet, if
* one exists. If the style sheet is a top-level style sheet, or the
* style sheet language does not support inclusion, the value of this
* attribute is null
.
*/
public StyleSheet getParentStyleSheet();
/**
* If the style sheet is a linked style sheet, the value of its attribute
* is its location. For inline style sheets, the value of this attribute
* is null
. See the href attribute definition for the
* LINK
element in HTML 4.0, and the href pseudo-attribute
* for the XML style sheet processing instruction.
*/
public String getHref();
/**
* The advisory title. The title is often specified in the
* ownerNode
. See the title attribute definition for the
* LINK
element in HTML 4.0, and the title pseudo-attribute
* for the XML style sheet processing instruction.
*/
public String getTitle();
/**
* The intended destination media for style information. The media is
* often specified in the ownerNode
. If no media has been
* specified, the MediaList
will be empty. See the media
* attribute definition for the LINK
element in HTML 4.0,
* and the media pseudo-attribute for the XML style sheet processing
* instruction . Modifying the media list may cause a change to the
* attribute disabled
.
*/
public MediaList getMedia();
}
org/w3c/dom/stylesheets/StyleSheetList.java 100644 0 0 3335 11146172407 16422 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.stylesheets;
/**
* The StyleSheetList
interface provides the abstraction of an
* ordered collection of style sheets.
*
The items in the StyleSheetList
are accessible via an
* integral index, starting from 0.
*
See also the Document Object Model (DOM) Level 2 Style Specification.
* @since DOM Level 2
*/
public interface StyleSheetList {
/**
* The number of StyleSheets
in the list. The range of valid
* child stylesheet indices is 0
to length-1
* inclusive.
*/
public int getLength();
/**
* Used to retrieve a style sheet by ordinal index. If index is greater
* than or equal to the number of style sheets in the list, this returns
* null
.
* @param index Index into the collection
* @return The style sheet at the index
position in the
* StyleSheetList
, or null
if that is not a
* valid index.
*/
public StyleSheet item(int index);
}
org/w3c/dom/svg/EventListenerInitializer.java 100644 0 0 3407 11146172400 16704 0 ustar 0 0 /*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package org.w3c.dom.svg;
/**
* This interface must be implemented in order to call Java code from
* an SVG document.
*
* A EventListenerInitializer
instance is called when
* a 'script' element's 'type' attribute value is 'application/java-archive' and when
* the manifest of the jar file referenced by the 'xlink:href' attribute contains
* a 'SVG-Handler-Class' entry. The value of this entry must be the classname of the
* EventListenerInitializer
to call.
*
* This classes implementing this interface must have a default
* constructor.
*
* @version $Id: EventListenerInitializer.java 477018 2006-11-20 03:24:32Z mrglavas $
*/
public interface EventListenerInitializer {
/**
* This method is called by the SVG viewer
* when the scripts are loaded to register
* the listener needed.
* @param doc The current document.
*/
public void initializeEventListeners(SVGDocument doc);
}
org/w3c/dom/svg/GetSVGDocument.java 100644 0 0 272 11146172400 14464 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface GetSVGDocument {
public SVGDocument getSVGDocument ( )
throws DOMException;
}
org/w3c/dom/svg/SVGAElement.java 100644 0 0 634 11146172400 13742 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGAElement extends
SVGElement,
SVGURIReference,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedString getTarget( );
}
org/w3c/dom/svg/SVGAltGlyphDefElement.java 100644 0 0 157 11146172401 15726 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAltGlyphDefElement extends
SVGElement {
}
org/w3c/dom/svg/SVGAltGlyphElement.java 100644 0 0 674 11146172400 15312 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGAltGlyphElement extends
SVGTextPositioningElement,
SVGURIReference {
public String getGlyphRef( );
public void setGlyphRef( String glyphRef )
throws DOMException;
public String getFormat( );
public void setFormat( String format )
throws DOMException;
}
org/w3c/dom/svg/SVGAltGlyphItemElement.java 100644 0 0 160 11146172400 16117 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAltGlyphItemElement extends
SVGElement {
}
org/w3c/dom/svg/SVGAngle.java 100644 0 0 2053 11146172400 13313 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGAngle {
// Angle Unit Types
public static final short SVG_ANGLETYPE_UNKNOWN = 0;
public static final short SVG_ANGLETYPE_UNSPECIFIED = 1;
public static final short SVG_ANGLETYPE_DEG = 2;
public static final short SVG_ANGLETYPE_RAD = 3;
public static final short SVG_ANGLETYPE_GRAD = 4;
public short getUnitType( );
public float getValue( );
public void setValue( float value )
throws DOMException;
public float getValueInSpecifiedUnits( );
public void setValueInSpecifiedUnits( float valueInSpecifiedUnits )
throws DOMException;
public String getValueAsString( );
public void setValueAsString( String valueAsString )
throws DOMException;
public void newValueSpecifiedUnits ( short unitType, float valueInSpecifiedUnits );
public void convertToSpecifiedUnits ( short unitType );
}
org/w3c/dom/svg/SVGAnimateColorElement.java 100644 0 0 171 11146172400 16133 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimateColorElement extends
SVGAnimationElement {
}
org/w3c/dom/svg/SVGAnimateElement.java 100644 0 0 164 11146172400 15136 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimateElement extends
SVGAnimationElement {
}
org/w3c/dom/svg/SVGAnimateMotionElement.java 100644 0 0 172 11146172400 16323 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimateMotionElement extends
SVGAnimationElement {
}
org/w3c/dom/svg/SVGAnimateTransformElement.java 100644 0 0 175 11146172400 17034 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimateTransformElement extends
SVGAnimationElement {
}
org/w3c/dom/svg/SVGAnimatedAngle.java 100644 0 0 212 11146172400 14731 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedAngle {
public SVGAngle getBaseVal( );
public SVGAngle getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedBoolean.java 100644 0 0 420 11146172400 15263 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGAnimatedBoolean {
public boolean getBaseVal( );
public void setBaseVal( boolean baseVal )
throws DOMException;
public boolean getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedEnumeration.java 100644 0 0 416 11146172400 16177 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGAnimatedEnumeration {
public short getBaseVal( );
public void setBaseVal( short baseVal )
throws DOMException;
public short getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedInteger.java 100644 0 0 404 11146172400 15303 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGAnimatedInteger {
public int getBaseVal( );
public void setBaseVal( int baseVal )
throws DOMException;
public int getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedLength.java 100644 0 0 215 11146172400 15127 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedLength {
public SVGLength getBaseVal( );
public SVGLength getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedLengthList.java 100644 0 0 231 11146172400 15761 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedLengthList {
public SVGLengthList getBaseVal( );
public SVGLengthList getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedNumber.java 100644 0 0 411 11146172400 15134 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGAnimatedNumber {
public float getBaseVal( );
public void setBaseVal( float baseVal )
throws DOMException;
public float getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedNumberList.java 100644 0 0 231 11146172400 15770 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedNumberList {
public SVGNumberList getBaseVal( );
public SVGNumberList getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedPathData.java 100644 0 0 445 11146172400 15401 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedPathData {
public SVGPathSegList getPathSegList( );
public SVGPathSegList getNormalizedPathSegList( );
public SVGPathSegList getAnimatedPathSegList( );
public SVGPathSegList getAnimatedNormalizedPathSegList( );
}
org/w3c/dom/svg/SVGAnimatedPoints.java 100644 0 0 235 11146172400 15164 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedPoints {
public SVGPointList getPoints( );
public SVGPointList getAnimatedPoints( );
}
org/w3c/dom/svg/SVGAnimatedPreserveAspectRatio.java 100644 0 0 264 11146172400 17644 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedPreserveAspectRatio {
public SVGPreserveAspectRatio getBaseVal( );
public SVGPreserveAspectRatio getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedRect.java 100644 0 0 207 11146172400 14604 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedRect {
public SVGRect getBaseVal( );
public SVGRect getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedString.java 100644 0 0 414 11146172400 15155 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGAnimatedString {
public String getBaseVal( );
public void setBaseVal( String baseVal )
throws DOMException;
public String getAnimVal( );
}
org/w3c/dom/svg/SVGAnimatedTransformList.java 100644 0 0 242 11146172400 16515 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGAnimatedTransformList {
public SVGTransformList getBaseVal( );
public SVGTransformList getAnimVal( );
}
org/w3c/dom/svg/SVGAnimationElement.java 100644 0 0 1062 11146172400 15515 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
import org.w3c.dom.events.EventTarget;
import org.w3c.dom.smil.ElementTimeControl;
public interface SVGAnimationElement extends
SVGElement,
SVGTests,
SVGExternalResourcesRequired,
ElementTimeControl,
EventTarget {
public SVGElement getTargetElement( );
public float getStartTime ( );
public float getCurrentTime ( );
public float getSimpleDuration ( )
throws DOMException;
}
org/w3c/dom/svg/SVGCSSRule.java 100644 0 0 373 11146172400 13530 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.css.CSSRule;
public interface SVGCSSRule extends
CSSRule {
// Additional CSS RuleType to support ICC color specifications
public static final short COLOR_PROFILE_RULE = 7;
}
org/w3c/dom/svg/SVGCircleElement.java 100644 0 0 707 11146172400 14764 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGCircleElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedLength getCx( );
public SVGAnimatedLength getCy( );
public SVGAnimatedLength getR( );
}
org/w3c/dom/svg/SVGClipPathElement.java 100644 0 0 545 11146172400 15267 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGClipPathElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
SVGUnitTypes {
public SVGAnimatedEnumeration getClipPathUnits( );
}
org/w3c/dom/svg/SVGColor.java 100644 0 0 1604 11146172400 13344 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.css.CSSValue;
import org.w3c.dom.css.RGBColor;
public interface SVGColor extends
CSSValue {
// Color Types
public static final short SVG_COLORTYPE_UNKNOWN = 0;
public static final short SVG_COLORTYPE_RGBCOLOR = 1;
public static final short SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2;
public static final short SVG_COLORTYPE_CURRENTCOLOR = 3;
public short getColorType( );
public RGBColor getRGBColor( );
public SVGICCColor getICCColor( );
public void setRGBColor ( String rgbColor )
throws SVGException;
public void setRGBColorICCColor ( String rgbColor, String iccColor )
throws SVGException;
public void setColor ( short colorType, String rgbColor, String iccColor )
throws SVGException;
}
org/w3c/dom/svg/SVGColorProfileElement.java 100644 0 0 1163 11146172400 16177 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGColorProfileElement extends
SVGElement,
SVGURIReference,
SVGRenderingIntent {
public String getLocal( );
public void setLocal( String local )
throws DOMException;
public String getName( );
public void setName( String name )
throws DOMException;
public short getRenderingIntent( );
public void setRenderingIntent( short renderingIntent )
throws DOMException;
}
org/w3c/dom/svg/SVGColorProfileRule.java 100644 0 0 1111 11146172400 15506 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGColorProfileRule extends
SVGCSSRule,
SVGRenderingIntent {
public String getSrc( );
public void setSrc( String src )
throws DOMException;
public String getName( );
public void setName( String name )
throws DOMException;
public short getRenderingIntent( );
public void setRenderingIntent( short renderingIntent )
throws DOMException;
}
org/w3c/dom/svg/SVGComponentTransferFunctionElement.java 100644 0 0 1644 11146172400 20761 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGComponentTransferFunctionElement extends
SVGElement {
// Component Transfer Types
public static final short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0;
public static final short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1;
public static final short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2;
public static final short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3;
public static final short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4;
public static final short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5;
public SVGAnimatedEnumeration getType( );
public SVGAnimatedNumberList getTableValues( );
public SVGAnimatedNumber getSlope( );
public SVGAnimatedNumber getIntercept( );
public SVGAnimatedNumber getAmplitude( );
public SVGAnimatedNumber getExponent( );
public SVGAnimatedNumber getOffset( );
}
org/w3c/dom/svg/SVGCursorElement.java 100644 0 0 435 11146172400 15036 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGCursorElement extends
SVGElement,
SVGURIReference,
SVGTests,
SVGExternalResourcesRequired {
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
}
org/w3c/dom/svg/SVGDefinitionSrcElement.java 100644 0 0 161 11146172400 16315 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGDefinitionSrcElement extends
SVGElement {
}
org/w3c/dom/svg/SVGDefsElement.java 100644 0 0 524 11146172400 14441 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGDefsElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
}
org/w3c/dom/svg/SVGDescElement.java 100644 0 0 243 11146172400 14434 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGDescElement extends
SVGElement,
SVGLangSpace,
SVGStylable {
}
org/w3c/dom/svg/SVGDocument.java 100644 0 0 602 11146172400 14021 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.Document;
import org.w3c.dom.events.DocumentEvent;
public interface SVGDocument extends
Document,
DocumentEvent {
public String getTitle( );
public String getReferrer( );
public String getDomain( );
public String getURL( );
public SVGSVGElement getRootElement( );
}
org/w3c/dom/svg/SVGElement.java 100644 0 0 752 11146172400 13642 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
import org.w3c.dom.Element;
public interface SVGElement extends
Element {
public String getId( );
public void setId( String id )
throws DOMException;
public String getXMLbase( );
public void setXMLbase( String xmlbase )
throws DOMException;
public SVGSVGElement getOwnerSVGElement( );
public SVGElement getViewportElement( );
}
org/w3c/dom/svg/SVGElementInstance.java 100644 0 0 1042 11146172400 15340 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGElementInstance extends
EventTarget {
public SVGElement getCorrespondingElement( );
public SVGUseElement getCorrespondingUseElement( );
public SVGElementInstance getParentNode( );
public SVGElementInstanceList getChildNodes( );
public SVGElementInstance getFirstChild( );
public SVGElementInstance getLastChild( );
public SVGElementInstance getPreviousSibling( );
public SVGElementInstance getNextSibling( );
}
org/w3c/dom/svg/SVGElementInstanceList.java 100644 0 0 233 11146172400 16155 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGElementInstanceList {
public int getLength( );
public SVGElementInstance item ( int index );
}
org/w3c/dom/svg/SVGEllipseElement.java 100644 0 0 757 11146172400 15165 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGEllipseElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedLength getCx( );
public SVGAnimatedLength getCy( );
public SVGAnimatedLength getRx( );
public SVGAnimatedLength getRy( );
}
org/w3c/dom/svg/SVGEvent.java 100644 0 0 201 11146172400 13317 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.Event;
public interface SVGEvent extends
Event {
}
org/w3c/dom/svg/SVGException.java 100644 0 0 653 11146172400 14207 0 ustar 0 0 package org.w3c.dom.svg;
public abstract class SVGException extends RuntimeException {
public SVGException(short code, String message) {
super(message);
this.code = code;
}
public short code;
// ExceptionCode
public static final short SVG_WRONG_TYPE_ERR = 0;
public static final short SVG_INVALID_VALUE_ERR = 1;
public static final short SVG_MATRIX_NOT_INVERTABLE = 2;
}
org/w3c/dom/svg/SVGExternalResourcesRequired.java 100644 0 0 220 11146172400 17415 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGExternalResourcesRequired {
public SVGAnimatedBoolean getExternalResourcesRequired( );
}
org/w3c/dom/svg/SVGFEBlendElement.java 100644 0 0 1247 11146172400 15042 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEBlendElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
// Blend Mode Types
public static final short SVG_FEBLEND_MODE_UNKNOWN = 0;
public static final short SVG_FEBLEND_MODE_NORMAL = 1;
public static final short SVG_FEBLEND_MODE_MULTIPLY = 2;
public static final short SVG_FEBLEND_MODE_SCREEN = 3;
public static final short SVG_FEBLEND_MODE_DARKEN = 4;
public static final short SVG_FEBLEND_MODE_LIGHTEN = 5;
public SVGAnimatedString getIn1( );
public SVGAnimatedString getIn2( );
public SVGAnimatedEnumeration getMode( );
}
org/w3c/dom/svg/SVGFEColorMatrixElement.java 100644 0 0 1274 11146172400 16261 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEColorMatrixElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
// Color Matrix Types
public static final short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0;
public static final short SVG_FECOLORMATRIX_TYPE_MATRIX = 1;
public static final short SVG_FECOLORMATRIX_TYPE_SATURATE = 2;
public static final short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
public static final short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
public SVGAnimatedString getIn1( );
public SVGAnimatedEnumeration getType( );
public SVGAnimatedNumberList getValues( );
}
org/w3c/dom/svg/SVGFEComponentTransferElement.java 100644 0 0 324 11146172400 17440 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEComponentTransferElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedString getIn1( );
}
org/w3c/dom/svg/SVGFECompositeElement.java 100644 0 0 1740 11146172400 15756 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFECompositeElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
// Composite Operators
public static final short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0;
public static final short SVG_FECOMPOSITE_OPERATOR_OVER = 1;
public static final short SVG_FECOMPOSITE_OPERATOR_IN = 2;
public static final short SVG_FECOMPOSITE_OPERATOR_OUT = 3;
public static final short SVG_FECOMPOSITE_OPERATOR_ATOP = 4;
public static final short SVG_FECOMPOSITE_OPERATOR_XOR = 5;
public static final short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
public SVGAnimatedString getIn1( );
public SVGAnimatedString getIn2( );
public SVGAnimatedEnumeration getOperator( );
public SVGAnimatedNumber getK1( );
public SVGAnimatedNumber getK2( );
public SVGAnimatedNumber getK3( );
public SVGAnimatedNumber getK4( );
}
org/w3c/dom/svg/SVGFEConvolveMatrixElement.java 100644 0 0 1722 11146172400 16774 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEConvolveMatrixElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
// Edge Mode Values
public static final short SVG_EDGEMODE_UNKNOWN = 0;
public static final short SVG_EDGEMODE_DUPLICATE = 1;
public static final short SVG_EDGEMODE_WRAP = 2;
public static final short SVG_EDGEMODE_NONE = 3;
public SVGAnimatedInteger getOrderX( );
public SVGAnimatedInteger getOrderY( );
public SVGAnimatedNumberList getKernelMatrix( );
public SVGAnimatedNumber getDivisor( );
public SVGAnimatedNumber getBias( );
public SVGAnimatedInteger getTargetX( );
public SVGAnimatedInteger getTargetY( );
public SVGAnimatedEnumeration getEdgeMode( );
public SVGAnimatedNumber getKernelUnitLengthX( );
public SVGAnimatedNumber getKernelUnitLengthY( );
public SVGAnimatedBoolean getPreserveAlpha( );
}
org/w3c/dom/svg/SVGFEDiffuseLightingElement.java 100644 0 0 635 11146172400 17051 0 ustar 0 0 package org.w3c.dom.svg;
public interface SVGFEDiffuseLightingElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedString getIn1( );
public SVGAnimatedNumber getSurfaceScale( );
public SVGAnimatedNumber getDiffuseConstant( );
public SVGAnimatedNumber getKernelUnitLengthX( );
public SVGAnimatedNumber getKernelUnitLengthY( );
}
org/w3c/dom/svg/SVGFEDisplacementMapElement.java 100644 0 0 1313 11146172400 17056 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEDisplacementMapElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
// Channel Selectors
public static final short SVG_CHANNEL_UNKNOWN = 0;
public static final short SVG_CHANNEL_R = 1;
public static final short SVG_CHANNEL_G = 2;
public static final short SVG_CHANNEL_B = 3;
public static final short SVG_CHANNEL_A = 4;
public SVGAnimatedString getIn1( );
public SVGAnimatedString getIn2( );
public SVGAnimatedNumber getScale( );
public SVGAnimatedEnumeration getXChannelSelector( );
public SVGAnimatedEnumeration getYChannelSelector( );
}
org/w3c/dom/svg/SVGFEDistantLightElement.java 100644 0 0 312 11146172400 16364 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEDistantLightElement extends
SVGElement {
public SVGAnimatedNumber getAzimuth( );
public SVGAnimatedNumber getElevation( );
}
org/w3c/dom/svg/SVGFEFloodElement.java 100644 0 0 315 11146172400 15034 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEFloodElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedString getIn1( );
}
org/w3c/dom/svg/SVGFEFuncAElement.java 100644 0 0 204 11146172400 14762 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEFuncAElement extends
SVGComponentTransferFunctionElement {
}
org/w3c/dom/svg/SVGFEFuncBElement.java 100644 0 0 204 11146172400 14763 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEFuncBElement extends
SVGComponentTransferFunctionElement {
}
org/w3c/dom/svg/SVGFEFuncGElement.java 100644 0 0 204 11146172400 14770 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEFuncGElement extends
SVGComponentTransferFunctionElement {
}
org/w3c/dom/svg/SVGFEFuncRElement.java 100644 0 0 204 11146172401 15004 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEFuncRElement extends
SVGComponentTransferFunctionElement {
}
org/w3c/dom/svg/SVGFEGaussianBlurElement.java 100644 0 0 600 11146172400 16365 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEGaussianBlurElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedString getIn1( );
public SVGAnimatedNumber getStdDeviationX( );
public SVGAnimatedNumber getStdDeviationY( );
public void setStdDeviation ( float stdDeviationX, float stdDeviationY );
}
org/w3c/dom/svg/SVGFEImageElement.java 100644 0 0 526 11146172400 15017 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEImageElement extends
SVGElement,
SVGURIReference,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedPreserveAspectRatio getPreserveAspectRatio( );
}
org/w3c/dom/svg/SVGFEMergeElement.java 100644 0 0 241 11146172400 15026 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEMergeElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
}
org/w3c/dom/svg/SVGFEMergeNodeElement.java 100644 0 0 226 11146172400 15637 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEMergeNodeElement extends
SVGElement {
public SVGAnimatedString getIn1( );
}
org/w3c/dom/svg/SVGFEMorphologyElement.java 100644 0 0 1106 11146172400 16147 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEMorphologyElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
// Morphology Operators
public static final short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
public static final short SVG_MORPHOLOGY_OPERATOR_ERODE = 1;
public static final short SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
public SVGAnimatedString getIn1( );
public SVGAnimatedEnumeration getOperator( );
public SVGAnimatedNumber getRadiusX( );
public SVGAnimatedNumber getRadiusY( );
}
org/w3c/dom/svg/SVGFEOffsetElement.java 100644 0 0 425 11146172400 15221 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEOffsetElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedString getIn1( );
public SVGAnimatedNumber getDx( );
public SVGAnimatedNumber getDy( );
}
org/w3c/dom/svg/SVGFEPointLightElement.java 100644 0 0 337 11146172400 16056 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFEPointLightElement extends
SVGElement {
public SVGAnimatedNumber getX( );
public SVGAnimatedNumber getY( );
public SVGAnimatedNumber getZ( );
}
org/w3c/dom/svg/SVGFESpecularLightingElement.java 100644 0 0 553 11146172400 17241 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFESpecularLightingElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedString getIn1( );
public SVGAnimatedNumber getSurfaceScale( );
public SVGAnimatedNumber getSpecularConstant( );
public SVGAnimatedNumber getSpecularExponent( );
}
org/w3c/dom/svg/SVGFESpotLightElement.java 100644 0 0 716 11146172400 15713 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFESpotLightElement extends
SVGElement {
public SVGAnimatedNumber getX( );
public SVGAnimatedNumber getY( );
public SVGAnimatedNumber getZ( );
public SVGAnimatedNumber getPointsAtX( );
public SVGAnimatedNumber getPointsAtY( );
public SVGAnimatedNumber getPointsAtZ( );
public SVGAnimatedNumber getSpecularExponent( );
public SVGAnimatedNumber getLimitingConeAngle( );
}
org/w3c/dom/svg/SVGFETileElement.java 100644 0 0 307 11146172400 14667 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFETileElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
public SVGAnimatedString getIn1( );
}
org/w3c/dom/svg/SVGFETurbulenceElement.java 100644 0 0 1572 11146172400 16127 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFETurbulenceElement extends
SVGElement,
SVGFilterPrimitiveStandardAttributes {
// Turbulence Types
public static final short SVG_TURBULENCE_TYPE_UNKNOWN = 0;
public static final short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
public static final short SVG_TURBULENCE_TYPE_TURBULENCE = 2;
// Stitch Options
public static final short SVG_STITCHTYPE_UNKNOWN = 0;
public static final short SVG_STITCHTYPE_STITCH = 1;
public static final short SVG_STITCHTYPE_NOSTITCH = 2;
public SVGAnimatedNumber getBaseFrequencyX( );
public SVGAnimatedNumber getBaseFrequencyY( );
public SVGAnimatedInteger getNumOctaves( );
public SVGAnimatedNumber getSeed( );
public SVGAnimatedEnumeration getStitchTiles( );
public SVGAnimatedEnumeration getType( );
}
org/w3c/dom/svg/SVGFilterElement.java 100644 0 0 1324 11146172400 15024 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFilterElement extends
SVGElement,
SVGURIReference,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGUnitTypes {
public SVGAnimatedEnumeration getFilterUnits( );
public SVGAnimatedEnumeration getPrimitiveUnits( );
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
public SVGAnimatedInteger getFilterResX( );
public SVGAnimatedInteger getFilterResY( );
public void setFilterRes ( int filterResX, int filterResY );
}
org/w3c/dom/svg/SVGFilterPrimitiveStandardAttributes.java 100644 0 0 506 11146172400 21114 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFilterPrimitiveStandardAttributes extends
SVGStylable {
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
public SVGAnimatedString getResult( );
}
org/w3c/dom/svg/SVGFitToViewBox.java 100644 0 0 301 11146172400 14570 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFitToViewBox {
public SVGAnimatedRect getViewBox( );
public SVGAnimatedPreserveAspectRatio getPreserveAspectRatio( );
}
org/w3c/dom/svg/SVGFontElement.java 100644 0 0 263 11146172400 14466 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFontElement extends
SVGElement,
SVGExternalResourcesRequired,
SVGStylable {
}
org/w3c/dom/svg/SVGFontFaceElement.java 100644 0 0 154 11146172400 15244 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFontFaceElement extends
SVGElement {
}
org/w3c/dom/svg/SVGFontFaceFormatElement.java 100644 0 0 162 11146172400 16414 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFontFaceFormatElement extends
SVGElement {
}
org/w3c/dom/svg/SVGFontFaceNameElement.java 100644 0 0 160 11146172400 16042 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFontFaceNameElement extends
SVGElement {
}
org/w3c/dom/svg/SVGFontFaceSrcElement.java 100644 0 0 157 11146172400 15717 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFontFaceSrcElement extends
SVGElement {
}
org/w3c/dom/svg/SVGFontFaceUriElement.java 100644 0 0 157 11146172400 15727 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGFontFaceUriElement extends
SVGElement {
}
org/w3c/dom/svg/SVGForeignObjectElement.java 100644 0 0 772 11146172400 16305 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGForeignObjectElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
}
org/w3c/dom/svg/SVGGElement.java 100644 0 0 521 11146172400 13743 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGGElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
}
org/w3c/dom/svg/SVGGlyphElement.java 100644 0 0 206 11146172400 14640 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGGlyphElement extends
SVGElement,
SVGStylable {
}
org/w3c/dom/svg/SVGGlyphRefElement.java 100644 0 0 1604 11146172400 15320 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGGlyphRefElement extends
SVGElement,
SVGURIReference,
SVGStylable {
public String getGlyphRef( );
public void setGlyphRef( String glyphRef )
throws DOMException;
public String getFormat( );
public void setFormat( String format )
throws DOMException;
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getDx( );
public void setDx( float dx )
throws DOMException;
public float getDy( );
public void setDy( float dy )
throws DOMException;
}
org/w3c/dom/svg/SVGGradientElement.java 100644 0 0 1251 11146172400 15333 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGGradientElement extends
SVGElement,
SVGURIReference,
SVGExternalResourcesRequired,
SVGStylable,
SVGUnitTypes {
// Spread Method Types
public static final short SVG_SPREADMETHOD_UNKNOWN = 0;
public static final short SVG_SPREADMETHOD_PAD = 1;
public static final short SVG_SPREADMETHOD_REFLECT = 2;
public static final short SVG_SPREADMETHOD_REPEAT = 3;
public SVGAnimatedEnumeration getGradientUnits( );
public SVGAnimatedTransformList getGradientTransform( );
public SVGAnimatedEnumeration getSpreadMethod( );
}
org/w3c/dom/svg/SVGHKernElement.java 100644 0 0 151 11146172400 14563 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGHKernElement extends
SVGElement {
}
org/w3c/dom/svg/SVGICCColor.java 100644 0 0 433 11146172400 13642 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGICCColor {
public String getColorProfile( );
public void setColorProfile( String colorProfile )
throws DOMException;
public SVGNumberList getColors( );
}
org/w3c/dom/svg/SVGImageElement.java 100644 0 0 1127 11146172400 14622 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGImageElement extends
SVGElement,
SVGURIReference,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
public SVGAnimatedPreserveAspectRatio getPreserveAspectRatio( );
}
org/w3c/dom/svg/SVGLangSpace.java 100644 0 0 545 11146172400 14106 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGLangSpace {
public String getXMLlang( );
public void setXMLlang( String xmllang )
throws DOMException;
public String getXMLspace( );
public void setXMLspace( String xmlspace )
throws DOMException;
}
org/w3c/dom/svg/SVGLength.java 100644 0 0 2626 11146172400 13514 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGLength {
// Length Unit Types
public static final short SVG_LENGTHTYPE_UNKNOWN = 0;
public static final short SVG_LENGTHTYPE_NUMBER = 1;
public static final short SVG_LENGTHTYPE_PERCENTAGE = 2;
public static final short SVG_LENGTHTYPE_EMS = 3;
public static final short SVG_LENGTHTYPE_EXS = 4;
public static final short SVG_LENGTHTYPE_PX = 5;
public static final short SVG_LENGTHTYPE_CM = 6;
public static final short SVG_LENGTHTYPE_MM = 7;
public static final short SVG_LENGTHTYPE_IN = 8;
public static final short SVG_LENGTHTYPE_PT = 9;
public static final short SVG_LENGTHTYPE_PC = 10;
public short getUnitType( );
public float getValue( );
public void setValue( float value )
throws DOMException;
public float getValueInSpecifiedUnits( );
public void setValueInSpecifiedUnits( float valueInSpecifiedUnits )
throws DOMException;
public String getValueAsString( );
public void setValueAsString( String valueAsString )
throws DOMException;
public void newValueSpecifiedUnits ( short unitType, float valueInSpecifiedUnits );
public void convertToSpecifiedUnits ( short unitType );
}
org/w3c/dom/svg/SVGLengthList.java 100644 0 0 1500 11146172400 14336 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGLengthList {
public int getNumberOfItems( );
public void clear ( )
throws DOMException;
public SVGLength initialize ( SVGLength newItem )
throws DOMException, SVGException;
public SVGLength getItem ( int index )
throws DOMException;
public SVGLength insertItemBefore ( SVGLength newItem, int index )
throws DOMException, SVGException;
public SVGLength replaceItem ( SVGLength newItem, int index )
throws DOMException, SVGException;
public SVGLength removeItem ( int index )
throws DOMException;
public SVGLength appendItem ( SVGLength newItem )
throws DOMException, SVGException;
}
org/w3c/dom/svg/SVGLineElement.java 100644 0 0 754 11146172400 14454 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGLineElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedLength getX1( );
public SVGAnimatedLength getY1( );
public SVGAnimatedLength getX2( );
public SVGAnimatedLength getY2( );
}
org/w3c/dom/svg/SVGLinearGradientElement.java 100644 0 0 422 11146172400 16445 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGLinearGradientElement extends
SVGGradientElement {
public SVGAnimatedLength getX1( );
public SVGAnimatedLength getY1( );
public SVGAnimatedLength getX2( );
public SVGAnimatedLength getY2( );
}
org/w3c/dom/svg/SVGLocatable.java 100644 0 0 630 11146172400 14132 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGLocatable {
public SVGElement getNearestViewportElement( );
public SVGElement getFarthestViewportElement( );
public SVGRect getBBox ( );
public SVGMatrix getCTM ( );
public SVGMatrix getScreenCTM ( );
public SVGMatrix getTransformToElement ( SVGElement element )
throws SVGException;
}
org/w3c/dom/svg/SVGMPathElement.java 100644 0 0 270 11146172400 14567 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGMPathElement extends
SVGElement,
SVGURIReference,
SVGExternalResourcesRequired {
}
org/w3c/dom/svg/SVGMarkerElement.java 100644 0 0 2153 11146172400 15021 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGMarkerElement extends
SVGElement,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGFitToViewBox {
// Marker Unit Types
public static final short SVG_MARKERUNITS_UNKNOWN = 0;
public static final short SVG_MARKERUNITS_USERSPACEONUSE = 1;
public static final short SVG_MARKERUNITS_STROKEWIDTH = 2;
// Marker Orientation Types
public static final short SVG_MARKER_ORIENT_UNKNOWN = 0;
public static final short SVG_MARKER_ORIENT_AUTO = 1;
public static final short SVG_MARKER_ORIENT_ANGLE = 2;
public SVGAnimatedLength getRefX( );
public SVGAnimatedLength getRefY( );
public SVGAnimatedEnumeration getMarkerUnits( );
public SVGAnimatedLength getMarkerWidth( );
public SVGAnimatedLength getMarkerHeight( );
public SVGAnimatedEnumeration getOrientType( );
public SVGAnimatedAngle getOrientAngle( );
public void setOrientToAuto ( );
public void setOrientToAngle ( SVGAngle angle );
}
org/w3c/dom/svg/SVGMaskElement.java 100644 0 0 1045 11146172400 14472 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGMaskElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGUnitTypes {
public SVGAnimatedEnumeration getMaskUnits( );
public SVGAnimatedEnumeration getMaskContentUnits( );
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
}
org/w3c/dom/svg/SVGMatrix.java 100644 0 0 2474 11146172400 13540 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGMatrix {
public float getA( );
public void setA( float a )
throws DOMException;
public float getB( );
public void setB( float b )
throws DOMException;
public float getC( );
public void setC( float c )
throws DOMException;
public float getD( );
public void setD( float d )
throws DOMException;
public float getE( );
public void setE( float e )
throws DOMException;
public float getF( );
public void setF( float f )
throws DOMException;
public SVGMatrix multiply ( SVGMatrix secondMatrix );
public SVGMatrix inverse ( )
throws SVGException;
public SVGMatrix translate ( float x, float y );
public SVGMatrix scale ( float scaleFactor );
public SVGMatrix scaleNonUniform ( float scaleFactorX, float scaleFactorY );
public SVGMatrix rotate ( float angle );
public SVGMatrix rotateFromVector ( float x, float y )
throws SVGException;
public SVGMatrix flipX ( );
public SVGMatrix flipY ( );
public SVGMatrix skewX ( float angle );
public SVGMatrix skewY ( float angle );
}
org/w3c/dom/svg/SVGMetadataElement.java 100644 0 0 154 11146172400 15277 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGMetadataElement extends
SVGElement {
}
org/w3c/dom/svg/SVGMissingGlyphElement.java 100644 0 0 215 11146172400 16172 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGMissingGlyphElement extends
SVGElement,
SVGStylable {
}
org/w3c/dom/svg/SVGNumber.java 100644 0 0 336 11146172400 13477 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGNumber {
public float getValue( );
public void setValue( float value )
throws DOMException;
}
org/w3c/dom/svg/SVGNumberList.java 100644 0 0 1500 11146172400 14345 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGNumberList {
public int getNumberOfItems( );
public void clear ( )
throws DOMException;
public SVGNumber initialize ( SVGNumber newItem )
throws DOMException, SVGException;
public SVGNumber getItem ( int index )
throws DOMException;
public SVGNumber insertItemBefore ( SVGNumber newItem, int index )
throws DOMException, SVGException;
public SVGNumber replaceItem ( SVGNumber newItem, int index )
throws DOMException, SVGException;
public SVGNumber removeItem ( int index )
throws DOMException;
public SVGNumber appendItem ( SVGNumber newItem )
throws DOMException, SVGException;
}
org/w3c/dom/svg/SVGPaint.java 100644 0 0 2054 11146172400 13341 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGPaint extends
SVGColor {
// Paint Types
public static final short SVG_PAINTTYPE_UNKNOWN = 0;
public static final short SVG_PAINTTYPE_RGBCOLOR = 1;
public static final short SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2;
public static final short SVG_PAINTTYPE_NONE = 101;
public static final short SVG_PAINTTYPE_CURRENTCOLOR = 102;
public static final short SVG_PAINTTYPE_URI_NONE = 103;
public static final short SVG_PAINTTYPE_URI_CURRENTCOLOR = 104;
public static final short SVG_PAINTTYPE_URI_RGBCOLOR = 105;
public static final short SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106;
public static final short SVG_PAINTTYPE_URI = 107;
public short getPaintType( );
public String getUri( );
public void setUri ( String uri );
public void setPaint ( short paintType, String uri, String rgbColor, String iccColor )
throws SVGException;
}
org/w3c/dom/svg/SVGPathElement.java 100644 0 0 5100 11146172400 14467 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGPathElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget,
SVGAnimatedPathData {
public SVGAnimatedNumber getPathLength( );
public float getTotalLength ( );
public SVGPoint getPointAtLength ( float distance );
public int getPathSegAtLength ( float distance );
public SVGPathSegClosePath createSVGPathSegClosePath ( );
public SVGPathSegMovetoAbs createSVGPathSegMovetoAbs ( float x, float y );
public SVGPathSegMovetoRel createSVGPathSegMovetoRel ( float x, float y );
public SVGPathSegLinetoAbs createSVGPathSegLinetoAbs ( float x, float y );
public SVGPathSegLinetoRel createSVGPathSegLinetoRel ( float x, float y );
public SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs ( float x, float y, float x1, float y1, float x2, float y2 );
public SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel ( float x, float y, float x1, float y1, float x2, float y2 );
public SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs ( float x, float y, float x1, float y1 );
public SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel ( float x, float y, float x1, float y1 );
public SVGPathSegArcAbs createSVGPathSegArcAbs ( float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag );
public SVGPathSegArcRel createSVGPathSegArcRel ( float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag );
public SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs ( float x );
public SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel ( float x );
public SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs ( float y );
public SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel ( float y );
public SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs ( float x, float y, float x2, float y2 );
public SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel ( float x, float y, float x2, float y2 );
public SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs ( float x, float y );
public SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel ( float x, float y );
}
org/w3c/dom/svg/SVGPathSeg.java 100644 0 0 3105 11146172400 13617 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGPathSeg {
// Path Segment Types
public static final short PATHSEG_UNKNOWN = 0;
public static final short PATHSEG_CLOSEPATH = 1;
public static final short PATHSEG_MOVETO_ABS = 2;
public static final short PATHSEG_MOVETO_REL = 3;
public static final short PATHSEG_LINETO_ABS = 4;
public static final short PATHSEG_LINETO_REL = 5;
public static final short PATHSEG_CURVETO_CUBIC_ABS = 6;
public static final short PATHSEG_CURVETO_CUBIC_REL = 7;
public static final short PATHSEG_CURVETO_QUADRATIC_ABS = 8;
public static final short PATHSEG_CURVETO_QUADRATIC_REL = 9;
public static final short PATHSEG_ARC_ABS = 10;
public static final short PATHSEG_ARC_REL = 11;
public static final short PATHSEG_LINETO_HORIZONTAL_ABS = 12;
public static final short PATHSEG_LINETO_HORIZONTAL_REL = 13;
public static final short PATHSEG_LINETO_VERTICAL_ABS = 14;
public static final short PATHSEG_LINETO_VERTICAL_REL = 15;
public static final short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
public static final short PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
public static final short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
public static final short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;
public short getPathSegType( );
public String getPathSegTypeAsLetter( );
}
org/w3c/dom/svg/SVGPathSegArcAbs.java 100644 0 0 1721 11146172400 14675 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegArcAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getR1( );
public void setR1( float r1 )
throws DOMException;
public float getR2( );
public void setR2( float r2 )
throws DOMException;
public float getAngle( );
public void setAngle( float angle )
throws DOMException;
public boolean getLargeArcFlag( );
public void setLargeArcFlag( boolean largeArcFlag )
throws DOMException;
public boolean getSweepFlag( );
public void setSweepFlag( boolean sweepFlag )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegArcRel.java 100644 0 0 1721 11146172400 14712 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegArcRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getR1( );
public void setR1( float r1 )
throws DOMException;
public float getR2( );
public void setR2( float r2 )
throws DOMException;
public float getAngle( );
public void setAngle( float angle )
throws DOMException;
public boolean getLargeArcFlag( );
public void setLargeArcFlag( boolean largeArcFlag )
throws DOMException;
public boolean getSweepFlag( );
public void setSweepFlag( boolean sweepFlag )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegClosePath.java 100644 0 0 155 11146172400 15404 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGPathSegClosePath extends
SVGPathSeg {
}
org/w3c/dom/svg/SVGPathSegCurvetoCubicAbs.java 100644 0 0 1453 11146172400 16567 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoCubicAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getX1( );
public void setX1( float x1 )
throws DOMException;
public float getY1( );
public void setY1( float y1 )
throws DOMException;
public float getX2( );
public void setX2( float x2 )
throws DOMException;
public float getY2( );
public void setY2( float y2 )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegCurvetoCubicRel.java 100644 0 0 1453 11146172401 16605 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoCubicRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getX1( );
public void setX1( float x1 )
throws DOMException;
public float getY1( );
public void setY1( float y1 )
throws DOMException;
public float getX2( );
public void setX2( float x2 )
throws DOMException;
public float getY2( );
public void setY2( float y2 )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegCurvetoCubicSmoothAbs.java 100644 0 0 1123 11146172400 17753 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoCubicSmoothAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getX2( );
public void setX2( float x2 )
throws DOMException;
public float getY2( );
public void setY2( float y2 )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegCurvetoCubicSmoothRel.java 100644 0 0 1123 11146172400 17770 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoCubicSmoothRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getX2( );
public void setX2( float x2 )
throws DOMException;
public float getY2( );
public void setY2( float y2 )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegCurvetoQuadraticAbs.java 100644 0 0 1121 11146172400 17447 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoQuadraticAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getX1( );
public void setX1( float x1 )
throws DOMException;
public float getY1( );
public void setY1( float y1 )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegCurvetoQuadraticRel.java 100644 0 0 1121 11146172400 17464 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoQuadraticRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getX1( );
public void setX1( float x1 )
throws DOMException;
public float getY1( );
public void setY1( float y1 )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegCurvetoQuadraticSmoothAbs.java 100644 0 0 571 11146172400 20631 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoQuadraticSmoothAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegCurvetoQuadraticSmoothRel.java 100644 0 0 571 11146172400 20646 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegCurvetoQuadraticSmoothRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegLinetoAbs.java 100644 0 0 551 11146172400 15402 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegLinetoAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegLinetoHorizontalAbs.java 100644 0 0 407 11146172401 17455 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegLinetoHorizontalAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegLinetoHorizontalRel.java 100644 0 0 407 11146172400 17471 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegLinetoHorizontalRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegLinetoRel.java 100644 0 0 551 11146172400 15417 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegLinetoRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegLinetoVerticalAbs.java 100644 0 0 405 11146172400 17072 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegLinetoVerticalAbs extends
SVGPathSeg {
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegLinetoVerticalRel.java 100644 0 0 405 11146172401 17110 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegLinetoVerticalRel extends
SVGPathSeg {
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegList.java 100644 0 0 1513 11146172400 14454 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegList {
public int getNumberOfItems( );
public void clear ( )
throws DOMException;
public SVGPathSeg initialize ( SVGPathSeg newItem )
throws DOMException, SVGException;
public SVGPathSeg getItem ( int index )
throws DOMException;
public SVGPathSeg insertItemBefore ( SVGPathSeg newItem, int index )
throws DOMException, SVGException;
public SVGPathSeg replaceItem ( SVGPathSeg newItem, int index )
throws DOMException, SVGException;
public SVGPathSeg removeItem ( int index )
throws DOMException;
public SVGPathSeg appendItem ( SVGPathSeg newItem )
throws DOMException, SVGException;
}
org/w3c/dom/svg/SVGPathSegMovetoAbs.java 100644 0 0 551 11146172400 15421 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegMovetoAbs extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPathSegMovetoRel.java 100644 0 0 551 11146172400 15436 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPathSegMovetoRel extends
SVGPathSeg {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
}
org/w3c/dom/svg/SVGPatternElement.java 100644 0 0 1267 11146172400 15222 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGPatternElement extends
SVGElement,
SVGURIReference,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGFitToViewBox,
SVGUnitTypes {
public SVGAnimatedEnumeration getPatternUnits( );
public SVGAnimatedEnumeration getPatternContentUnits( );
public SVGAnimatedTransformList getPatternTransform( );
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
}
org/w3c/dom/svg/SVGPoint.java 100644 0 0 561 11146172400 13340 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPoint {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public SVGPoint matrixTransform ( SVGMatrix matrix );
}
org/w3c/dom/svg/SVGPointList.java 100644 0 0 1465 11146172400 14220 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPointList {
public int getNumberOfItems( );
public void clear ( )
throws DOMException;
public SVGPoint initialize ( SVGPoint newItem )
throws DOMException, SVGException;
public SVGPoint getItem ( int index )
throws DOMException;
public SVGPoint insertItemBefore ( SVGPoint newItem, int index )
throws DOMException, SVGException;
public SVGPoint replaceItem ( SVGPoint newItem, int index )
throws DOMException, SVGException;
public SVGPoint removeItem ( int index )
throws DOMException;
public SVGPoint appendItem ( SVGPoint newItem )
throws DOMException, SVGException;
}
org/w3c/dom/svg/SVGPolygonElement.java 100644 0 0 572 11146172400 15212 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGPolygonElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget,
SVGAnimatedPoints {
}
org/w3c/dom/svg/SVGPolylineElement.java 100644 0 0 573 11146172400 15357 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGPolylineElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget,
SVGAnimatedPoints {
}
org/w3c/dom/svg/SVGPreserveAspectRatio.java 100644 0 0 2457 11146172400 16227 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGPreserveAspectRatio {
// Alignment Types
public static final short SVG_PRESERVEASPECTRATIO_UNKNOWN = 0;
public static final short SVG_PRESERVEASPECTRATIO_NONE = 1;
public static final short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
public static final short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3;
public static final short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4;
public static final short SVG_PRESERVEASPECTRATIO_XMINYMID = 5;
public static final short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6;
public static final short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7;
public static final short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8;
public static final short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9;
public static final short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10;
// Meet-or-slice Types
public static final short SVG_MEETORSLICE_UNKNOWN = 0;
public static final short SVG_MEETORSLICE_MEET = 1;
public static final short SVG_MEETORSLICE_SLICE = 2;
public short getAlign( );
public void setAlign( short align )
throws DOMException;
public short getMeetOrSlice( );
public void setMeetOrSlice( short meetOrSlice )
throws DOMException;
}
org/w3c/dom/svg/SVGRadialGradientElement.java 100644 0 0 467 11146172400 16440 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGRadialGradientElement extends
SVGGradientElement {
public SVGAnimatedLength getCx( );
public SVGAnimatedLength getCy( );
public SVGAnimatedLength getR( );
public SVGAnimatedLength getFx( );
public SVGAnimatedLength getFy( );
}
org/w3c/dom/svg/SVGRect.java 100644 0 0 1044 11146172400 13161 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGRect {
public float getX( );
public void setX( float x )
throws DOMException;
public float getY( );
public void setY( float y )
throws DOMException;
public float getWidth( );
public void setWidth( float width )
throws DOMException;
public float getHeight( );
public void setHeight( float height )
throws DOMException;
}
org/w3c/dom/svg/SVGRectElement.java 100644 0 0 1075 11146172400 14477 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGRectElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
public SVGAnimatedLength getRx( );
public SVGAnimatedLength getRy( );
}
org/w3c/dom/svg/SVGRenderingIntent.java 100644 0 0 1033 11146172400 15361 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGRenderingIntent {
// Rendering Intent Types
public static final short RENDERING_INTENT_UNKNOWN = 0;
public static final short RENDERING_INTENT_AUTO = 1;
public static final short RENDERING_INTENT_PERCEPTUAL = 2;
public static final short RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3;
public static final short RENDERING_INTENT_SATURATION = 4;
public static final short RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5;
}
org/w3c/dom/svg/SVGSVGElement.java 100644 0 0 6165 11146172400 14246 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.css.DocumentCSS;
import org.w3c.dom.css.ViewCSS;
import org.w3c.dom.events.DocumentEvent;
import org.w3c.dom.events.EventTarget;
public interface SVGSVGElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGLocatable,
SVGFitToViewBox,
SVGZoomAndPan,
EventTarget,
DocumentEvent,
ViewCSS,
DocumentCSS {
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
public String getContentScriptType( );
public void setContentScriptType( String contentScriptType )
throws DOMException;
public String getContentStyleType( );
public void setContentStyleType( String contentStyleType )
throws DOMException;
public SVGRect getViewport( );
public float getPixelUnitToMillimeterX( );
public float getPixelUnitToMillimeterY( );
public float getScreenPixelToMillimeterX( );
public float getScreenPixelToMillimeterY( );
public boolean getUseCurrentView( );
public void setUseCurrentView( boolean useCurrentView )
throws DOMException;
public SVGViewSpec getCurrentView( );
public float getCurrentScale( );
public void setCurrentScale( float currentScale )
throws DOMException;
public SVGPoint getCurrentTranslate( );
public int suspendRedraw ( int max_wait_milliseconds );
public void unsuspendRedraw ( int suspend_handle_id )
throws DOMException;
public void unsuspendRedrawAll ( );
public void forceRedraw ( );
public void pauseAnimations ( );
public void unpauseAnimations ( );
public boolean animationsPaused ( );
public float getCurrentTime ( );
public void setCurrentTime ( float seconds );
public NodeList getIntersectionList ( SVGRect rect, SVGElement referenceElement );
public NodeList getEnclosureList ( SVGRect rect, SVGElement referenceElement );
public boolean checkIntersection ( SVGElement element, SVGRect rect );
public boolean checkEnclosure ( SVGElement element, SVGRect rect );
public void deselectAll ( );
public SVGNumber createSVGNumber ( );
public SVGLength createSVGLength ( );
public SVGAngle createSVGAngle ( );
public SVGPoint createSVGPoint ( );
public SVGMatrix createSVGMatrix ( );
public SVGRect createSVGRect ( );
public SVGTransform createSVGTransform ( );
public SVGTransform createSVGTransformFromMatrix ( SVGMatrix matrix );
public Element getElementById ( String elementId );
}
org/w3c/dom/svg/SVGScriptElement.java 100644 0 0 522 11146172401 15023 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGScriptElement extends
SVGElement,
SVGURIReference,
SVGExternalResourcesRequired {
public String getType( );
public void setType( String type )
throws DOMException;
}
org/w3c/dom/svg/SVGSetElement.java 100644 0 0 160 11146172400 14307 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGSetElement extends
SVGAnimationElement {
}
org/w3c/dom/svg/SVGStopElement.java 100644 0 0 257 11146172400 14510 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGStopElement extends
SVGElement,
SVGStylable {
public SVGAnimatedNumber getOffset( );
}
org/w3c/dom/svg/SVGStringList.java 100644 0 0 1442 11146172400 14370 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGStringList {
public int getNumberOfItems( );
public void clear ( )
throws DOMException;
public String initialize ( String newItem )
throws DOMException, SVGException;
public String getItem ( int index )
throws DOMException;
public String insertItemBefore ( String newItem, int index )
throws DOMException, SVGException;
public String replaceItem ( String newItem, int index )
throws DOMException, SVGException;
public String removeItem ( int index )
throws DOMException;
public String appendItem ( String newItem )
throws DOMException, SVGException;
}
org/w3c/dom/svg/SVGStylable.java 100644 0 0 451 11146172400 14024 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.css.CSSStyleDeclaration;
import org.w3c.dom.css.CSSValue;
public interface SVGStylable {
public SVGAnimatedString getClassName( );
public CSSStyleDeclaration getStyle( );
public CSSValue getPresentationAttribute ( String name );
}
org/w3c/dom/svg/SVGStyleElement.java 100644 0 0 1163 11146172401 14701 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGStyleElement extends
SVGElement {
public String getXMLspace( );
public void setXMLspace( String xmlspace )
throws DOMException;
public String getType( );
public void setType( String type )
throws DOMException;
public String getMedia( );
public void setMedia( String media )
throws DOMException;
public String getTitle( );
public void setTitle( String title )
throws DOMException;
}
org/w3c/dom/svg/SVGSwitchElement.java 100644 0 0 526 11146172400 15023 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGSwitchElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
}
org/w3c/dom/svg/SVGSymbolElement.java 100644 0 0 473 11146172400 15030 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGSymbolElement extends
SVGElement,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGFitToViewBox,
EventTarget {
}
org/w3c/dom/svg/SVGTRefElement.java 100644 0 0 230 11146172400 14412 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTRefElement extends
SVGTextPositioningElement,
SVGURIReference {
}
org/w3c/dom/svg/SVGTSpanElement.java 100644 0 0 170 11146172400 14602 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTSpanElement extends
SVGTextPositioningElement {
}
org/w3c/dom/svg/SVGTests.java 100644 0 0 405 11146172400 13346 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTests {
public SVGStringList getRequiredFeatures( );
public SVGStringList getRequiredExtensions( );
public SVGStringList getSystemLanguage( );
public boolean hasExtension ( String extension );
}
org/w3c/dom/svg/SVGTextContentElement.java 100644 0 0 2570 11146172400 16062 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
import org.w3c.dom.events.EventTarget;
public interface SVGTextContentElement extends
SVGElement,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
EventTarget {
// lengthAdjust Types
public static final short LENGTHADJUST_UNKNOWN = 0;
public static final short LENGTHADJUST_SPACING = 1;
public static final short LENGTHADJUST_SPACINGANDGLYPHS = 2;
public SVGAnimatedLength getTextLength( );
public SVGAnimatedEnumeration getLengthAdjust( );
public int getNumberOfChars ( );
public float getComputedTextLength ( );
public float getSubStringLength ( int charnum, int nchars )
throws DOMException;
public SVGPoint getStartPositionOfChar ( int charnum )
throws DOMException;
public SVGPoint getEndPositionOfChar ( int charnum )
throws DOMException;
public SVGRect getExtentOfChar ( int charnum )
throws DOMException;
public float getRotationOfChar ( int charnum )
throws DOMException;
public int getCharNumAtPosition ( SVGPoint point );
public void selectSubString ( int charnum, int nchars )
throws DOMException;
}
org/w3c/dom/svg/SVGTextElement.java 100644 0 0 231 11146172400 14477 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTextElement extends
SVGTextPositioningElement,
SVGTransformable {
}
org/w3c/dom/svg/SVGTextPathElement.java 100644 0 0 1362 11146172400 15342 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTextPathElement extends
SVGTextContentElement,
SVGURIReference {
// textPath Method Types
public static final short TEXTPATH_METHODTYPE_UNKNOWN = 0;
public static final short TEXTPATH_METHODTYPE_ALIGN = 1;
public static final short TEXTPATH_METHODTYPE_STRETCH = 2;
// textPath Spacing Types
public static final short TEXTPATH_SPACINGTYPE_UNKNOWN = 0;
public static final short TEXTPATH_SPACINGTYPE_AUTO = 1;
public static final short TEXTPATH_SPACINGTYPE_EXACT = 2;
public SVGAnimatedLength getStartOffset( );
public SVGAnimatedEnumeration getMethod( );
public SVGAnimatedEnumeration getSpacing( );
}
org/w3c/dom/svg/SVGTextPositioningElement.java 100644 0 0 522 11146172400 16725 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTextPositioningElement extends
SVGTextContentElement {
public SVGAnimatedLengthList getX( );
public SVGAnimatedLengthList getY( );
public SVGAnimatedLengthList getDx( );
public SVGAnimatedLengthList getDy( );
public SVGAnimatedNumberList getRotate( );
}
org/w3c/dom/svg/SVGTitleElement.java 100644 0 0 244 11146172400 14640 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTitleElement extends
SVGElement,
SVGLangSpace,
SVGStylable {
}
org/w3c/dom/svg/SVGTransform.java 100644 0 0 1560 11146172400 14242 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTransform {
// Transform Types
public static final short SVG_TRANSFORM_UNKNOWN = 0;
public static final short SVG_TRANSFORM_MATRIX = 1;
public static final short SVG_TRANSFORM_TRANSLATE = 2;
public static final short SVG_TRANSFORM_SCALE = 3;
public static final short SVG_TRANSFORM_ROTATE = 4;
public static final short SVG_TRANSFORM_SKEWX = 5;
public static final short SVG_TRANSFORM_SKEWY = 6;
public short getType( );
public SVGMatrix getMatrix( );
public float getAngle( );
public void setMatrix ( SVGMatrix matrix );
public void setTranslate ( float tx, float ty );
public void setScale ( float sx, float sy );
public void setRotate ( float angle, float cx, float cy );
public void setSkewX ( float angle );
public void setSkewY ( float angle );
}
org/w3c/dom/svg/SVGTransformList.java 100644 0 0 1724 11146172400 15100 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGTransformList {
public int getNumberOfItems( );
public void clear ( )
throws DOMException;
public SVGTransform initialize ( SVGTransform newItem )
throws DOMException, SVGException;
public SVGTransform getItem ( int index )
throws DOMException;
public SVGTransform insertItemBefore ( SVGTransform newItem, int index )
throws DOMException, SVGException;
public SVGTransform replaceItem ( SVGTransform newItem, int index )
throws DOMException, SVGException;
public SVGTransform removeItem ( int index )
throws DOMException;
public SVGTransform appendItem ( SVGTransform newItem )
throws DOMException, SVGException;
public SVGTransform createSVGTransformFromMatrix ( SVGMatrix matrix );
public SVGTransform consolidate ( );
}
org/w3c/dom/svg/SVGTransformable.java 100644 0 0 240 11146172400 15040 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGTransformable extends
SVGLocatable {
public SVGAnimatedTransformList getTransform( );
}
org/w3c/dom/svg/SVGURIReference.java 100644 0 0 155 11146172400 14524 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGURIReference {
public SVGAnimatedString getHref( );
}
org/w3c/dom/svg/SVGUnitTypes.java 100644 0 0 431 11146172400 14207 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGUnitTypes {
// Unit Types
public static final short SVG_UNIT_TYPE_UNKNOWN = 0;
public static final short SVG_UNIT_TYPE_USERSPACEONUSE = 1;
public static final short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
}
org/w3c/dom/svg/SVGUseElement.java 100644 0 0 1203 11146172401 14330 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.EventTarget;
public interface SVGUseElement extends
SVGElement,
SVGURIReference,
SVGTests,
SVGLangSpace,
SVGExternalResourcesRequired,
SVGStylable,
SVGTransformable,
EventTarget {
public SVGAnimatedLength getX( );
public SVGAnimatedLength getY( );
public SVGAnimatedLength getWidth( );
public SVGAnimatedLength getHeight( );
public SVGElementInstance getInstanceRoot( );
public SVGElementInstance getAnimatedInstanceRoot( );
}
org/w3c/dom/svg/SVGVKernElement.java 100644 0 0 151 11146172400 14601 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGVKernElement extends
SVGElement {
}
org/w3c/dom/svg/SVGViewElement.java 100644 0 0 400 11146172400 14463 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGViewElement extends
SVGElement,
SVGExternalResourcesRequired,
SVGFitToViewBox,
SVGZoomAndPan {
public SVGStringList getViewTarget( );
}
org/w3c/dom/svg/SVGViewSpec.java 100644 0 0 647 11146172400 14001 0 ustar 0 0
package org.w3c.dom.svg;
public interface SVGViewSpec extends
SVGZoomAndPan,
SVGFitToViewBox {
public SVGTransformList getTransform( );
public SVGElement getViewTarget( );
public String getViewBoxString( );
public String getPreserveAspectRatioString( );
public String getTransformString( );
public String getViewTargetString( );
}
org/w3c/dom/svg/SVGZoomAndPan.java 100644 0 0 664 11146172400 14261 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.DOMException;
public interface SVGZoomAndPan {
// Zoom and Pan Types
public static final short SVG_ZOOMANDPAN_UNKNOWN = 0;
public static final short SVG_ZOOMANDPAN_DISABLE = 1;
public static final short SVG_ZOOMANDPAN_MAGNIFY = 2;
public short getZoomAndPan( );
public void setZoomAndPan( short zoomAndPan )
throws DOMException;
}
org/w3c/dom/svg/SVGZoomEvent.java 100644 0 0 511 11146172400 14170 0 ustar 0 0
package org.w3c.dom.svg;
import org.w3c.dom.events.UIEvent;
public interface SVGZoomEvent extends
UIEvent {
public SVGRect getZoomRectScreen( );
public float getPreviousScale( );
public SVGPoint getPreviousTranslate( );
public float getNewScale( );
public SVGPoint getNewTranslate( );
}
org/w3c/dom/traversal/DocumentTraversal.java 100644 0 0 11653 11146172406 16607 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.traversal;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* DocumentTraversal
contains methods that create
* NodeIterators
and TreeWalkers
to traverse a
* node and its children in document order (depth first, pre-order
* traversal, which is equivalent to the order in which the start tags occur
* in the text representation of the document). In DOMs which support the
* Traversal feature, DocumentTraversal
will be implemented by
* the same objects that implement the Document interface.
*
See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
* @since DOM Level 2
*/
public interface DocumentTraversal {
/**
* Create a new NodeIterator
over the subtree rooted at the
* specified node.
* @param root The node which will be iterated together with its
* children. The NodeIterator
is initially positioned
* just before this node. The whatToShow
flags and the
* filter, if any, are not considered when setting this position. The
* root must not be null
.
* @param whatToShow This flag specifies which node types may appear in
* the logical view of the tree presented by the
* NodeIterator
. See the description of
* NodeFilter
for the set of possible SHOW_
* values.These flags can be combined using OR
.
* @param filter The NodeFilter
to be used with this
* NodeIterator
, or null
to indicate no
* filter.
* @param entityReferenceExpansion The value of this flag determines
* whether entity reference nodes are expanded.
* @return The newly created NodeIterator
.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the specified root
is
* null
.
*/
public NodeIterator createNodeIterator(Node root,
int whatToShow,
NodeFilter filter,
boolean entityReferenceExpansion)
throws DOMException;
/**
* Create a new TreeWalker
over the subtree rooted at the
* specified node.
* @param root The node which will serve as the root
for the
* TreeWalker
. The whatToShow
flags and the
* NodeFilter
are not considered when setting this value;
* any node type will be accepted as the root
. The
* currentNode
of the TreeWalker
is
* initialized to this node, whether or not it is visible. The
* root
functions as a stopping point for traversal
* methods that look upward in the document structure, such as
* parentNode
and nextNode. The root
must
* not be null
.
* @param whatToShow This flag specifies which node types may appear in
* the logical view of the tree presented by the
* TreeWalker
. See the description of
* NodeFilter
for the set of possible SHOW_
* values.These flags can be combined using OR
.
* @param filter The NodeFilter
to be used with this
* TreeWalker
, or null
to indicate no filter.
* @param entityReferenceExpansion If this flag is false, the contents of
* EntityReference
nodes are not presented in the logical
* view.
* @return The newly created TreeWalker
.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if the specified root
is
* null
.
*/
public TreeWalker createTreeWalker(Node root,
int whatToShow,
NodeFilter filter,
boolean entityReferenceExpansion)
throws DOMException;
}
org/w3c/dom/traversal/NodeFilter.java 100644 0 0 14672 11146172406 15204 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.traversal;
import org.w3c.dom.Node;
/**
* Filters are objects that know how to "filter out" nodes. If a
* NodeIterator
or TreeWalker
is given a
* NodeFilter
, it applies the filter before it returns the next
* node. If the filter says to accept the node, the traversal logic returns
* it; otherwise, traversal looks for the next node and pretends that the
* node that was rejected was not there.
*
The DOM does not provide any filters. NodeFilter
is just an
* interface that users can implement to provide their own filters.
*
NodeFilters
do not need to know how to traverse from node
* to node, nor do they need to know anything about the data structure that
* is being traversed. This makes it very easy to write filters, since the
* only thing they have to know how to do is evaluate a single node. One
* filter may be used with a number of different kinds of traversals,
* encouraging code reuse.
*
See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
* @since DOM Level 2
*/
public interface NodeFilter {
// Constants returned by acceptNode
/**
* Accept the node. Navigation methods defined for
* NodeIterator
or TreeWalker
will return this
* node.
*/
public static final short FILTER_ACCEPT = 1;
/**
* Reject the node. Navigation methods defined for
* NodeIterator
or TreeWalker
will not return
* this node. For TreeWalker
, the children of this node
* will also be rejected. NodeIterators
treat this as a
* synonym for FILTER_SKIP
.
*/
public static final short FILTER_REJECT = 2;
/**
* Skip this single node. Navigation methods defined for
* NodeIterator
or TreeWalker
will not return
* this node. For both NodeIterator
and
* TreeWalker
, the children of this node will still be
* considered.
*/
public static final short FILTER_SKIP = 3;
// Constants for whatToShow
/**
* Show all Nodes
.
*/
public static final int SHOW_ALL = 0xFFFFFFFF;
/**
* Show Element
nodes.
*/
public static final int SHOW_ELEMENT = 0x00000001;
/**
* Show Attr
nodes. This is meaningful only when creating an
* NodeIterator
or TreeWalker
with an
* attribute node as its root
; in this case, it means that
* the attribute node will appear in the first position of the iteration
* or traversal. Since attributes are never children of other nodes,
* they do not appear when traversing over the document tree.
*/
public static final int SHOW_ATTRIBUTE = 0x00000002;
/**
* Show Text
nodes.
*/
public static final int SHOW_TEXT = 0x00000004;
/**
* Show CDATASection
nodes.
*/
public static final int SHOW_CDATA_SECTION = 0x00000008;
/**
* Show EntityReference
nodes.
*/
public static final int SHOW_ENTITY_REFERENCE = 0x00000010;
/**
* Show Entity
nodes. This is meaningful only when creating
* an NodeIterator
or TreeWalker
with an
* Entity
node as its root
; in this case, it
* means that the Entity
node will appear in the first
* position of the traversal. Since entities are not part of the
* document tree, they do not appear when traversing over the document
* tree.
*/
public static final int SHOW_ENTITY = 0x00000020;
/**
* Show ProcessingInstruction
nodes.
*/
public static final int SHOW_PROCESSING_INSTRUCTION = 0x00000040;
/**
* Show Comment
nodes.
*/
public static final int SHOW_COMMENT = 0x00000080;
/**
* Show Document
nodes.
*/
public static final int SHOW_DOCUMENT = 0x00000100;
/**
* Show DocumentType
nodes.
*/
public static final int SHOW_DOCUMENT_TYPE = 0x00000200;
/**
* Show DocumentFragment
nodes.
*/
public static final int SHOW_DOCUMENT_FRAGMENT = 0x00000400;
/**
* Show Notation
nodes. This is meaningful only when creating
* an NodeIterator
or TreeWalker
with a
* Notation
node as its root
; in this case, it
* means that the Notation
node will appear in the first
* position of the traversal. Since notations are not part of the
* document tree, they do not appear when traversing over the document
* tree.
*/
public static final int SHOW_NOTATION = 0x00000800;
/**
* Test whether a specified node is visible in the logical view of a
* TreeWalker
or NodeIterator
. This function
* will be called by the implementation of TreeWalker
and
* NodeIterator
; it is not normally called directly from
* user code. (Though you could do so if you wanted to use the same
* filter to guide your own application logic.)
* @param n The node to check to see if it passes the filter or not.
* @return A constant to determine whether the node is accepted,
* rejected, or skipped, as defined above.
*/
public short acceptNode(Node n);
}
org/w3c/dom/traversal/NodeIterator.java 100644 0 0 11701 11146172406 15536 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.traversal;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* NodeIterators
are used to step through a set of nodes, e.g.
* the set of nodes in a NodeList
, the document subtree
* governed by a particular Node
, the results of a query, or
* any other set of nodes. The set of nodes to be iterated is determined by
* the implementation of the NodeIterator
. DOM Level 2
* specifies a single NodeIterator
implementation for
* document-order traversal of a document subtree. Instances of these
* NodeIterators
are created by calling
* DocumentTraversal
.createNodeIterator()
.
*
See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
* @since DOM Level 2
*/
public interface NodeIterator {
/**
* The root node of the NodeIterator
, as specified when it
* was created.
*/
public Node getRoot();
/**
* This attribute determines which node types are presented via the
* NodeIterator
. The available set of constants is defined
* in the NodeFilter
interface. Nodes not accepted by
* whatToShow
will be skipped, but their children may still
* be considered. Note that this skip takes precedence over the filter,
* if any.
*/
public int getWhatToShow();
/**
* The NodeFilter
used to screen nodes.
*/
public NodeFilter getFilter();
/**
* The value of this flag determines whether the children of entity
* reference nodes are visible to the NodeIterator
. If
* false, these children and their descendants will be rejected. Note
* that this rejection takes precedence over whatToShow
and
* the filter. Also note that this is currently the only situation where
* NodeIterators
may reject a complete subtree rather than
* skipping individual nodes.
*
*
To produce a view of the document that has entity references
* expanded and does not expose the entity reference node itself, use
* the whatToShow
flags to hide the entity reference node
* and set expandEntityReferences
to true when creating the
* NodeIterator
. To produce a view of the document that has
* entity reference nodes but no entity expansion, use the
* whatToShow
flags to show the entity reference node and
* set expandEntityReferences
to false.
*/
public boolean getExpandEntityReferences();
/**
* Returns the next node in the set and advances the position of the
* NodeIterator
in the set. After a
* NodeIterator
is created, the first call to
* nextNode()
returns the first node in the set.
* @return The next Node
in the set being iterated over, or
* null
if there are no more members in that set.
* @exception DOMException
* INVALID_STATE_ERR: Raised if this method is called after the
* detach
method was invoked.
*/
public Node nextNode()
throws DOMException;
/**
* Returns the previous node in the set and moves the position of the
* NodeIterator
backwards in the set.
* @return The previous Node
in the set being iterated over,
* or null
if there are no more members in that set.
* @exception DOMException
* INVALID_STATE_ERR: Raised if this method is called after the
* detach
method was invoked.
*/
public Node previousNode()
throws DOMException;
/**
* Detaches the NodeIterator
from the set which it iterated
* over, releasing any computational resources and placing the
* NodeIterator
in the INVALID state. After
* detach
has been invoked, calls to nextNode
* or previousNode
will raise the exception
* INVALID_STATE_ERR.
*/
public void detach();
}
org/w3c/dom/traversal/TreeWalker.java 100644 0 0 21424 11146172406 15207 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.traversal;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* TreeWalker
objects are used to navigate a document tree or
* subtree using the view of the document defined by their
* whatToShow
flags and filter (if any). Any function which
* performs navigation using a TreeWalker
will automatically
* support any view defined by a TreeWalker
.
*
Omitting nodes from the logical view of a subtree can result in a
* structure that is substantially different from the same subtree in the
* complete, unfiltered document. Nodes that are siblings in the
* TreeWalker
view may be children of different, widely
* separated nodes in the original view. For instance, consider a
* NodeFilter
that skips all nodes except for Text nodes and
* the root node of a document. In the logical view that results, all text
* nodes will be siblings and appear as direct children of the root node, no
* matter how deeply nested the structure of the original document.
*
See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
* @since DOM Level 2
*/
public interface TreeWalker {
/**
* The root
node of the TreeWalker
, as specified
* when it was created.
*/
public Node getRoot();
/**
* This attribute determines which node types are presented via the
* TreeWalker
. The available set of constants is defined in
* the NodeFilter
interface. Nodes not accepted by
* whatToShow
will be skipped, but their children may still
* be considered. Note that this skip takes precedence over the filter,
* if any.
*/
public int getWhatToShow();
/**
* The filter used to screen nodes.
*/
public NodeFilter getFilter();
/**
* The value of this flag determines whether the children of entity
* reference nodes are visible to the TreeWalker
. If false,
* these children and their descendants will be rejected. Note that
* this rejection takes precedence over whatToShow
and the
* filter, if any.
*
To produce a view of the document that has entity references
* expanded and does not expose the entity reference node itself, use
* the whatToShow
flags to hide the entity reference node
* and set expandEntityReferences
to true when creating the
* TreeWalker
. To produce a view of the document that has
* entity reference nodes but no entity expansion, use the
* whatToShow
flags to show the entity reference node and
* set expandEntityReferences
to false.
*/
public boolean getExpandEntityReferences();
/**
* The node at which the TreeWalker
is currently positioned.
*
Alterations to the DOM tree may cause the current node to no longer
* be accepted by the TreeWalker
's associated filter.
* currentNode
may also be explicitly set to any node,
* whether or not it is within the subtree specified by the
* root
node or would be accepted by the filter and
* whatToShow
flags. Further traversal occurs relative to
* currentNode
even if it is not part of the current view,
* by applying the filters in the requested direction; if no traversal
* is possible, currentNode
is not changed.
*/
public Node getCurrentNode();
/**
* The node at which the TreeWalker
is currently positioned.
*
Alterations to the DOM tree may cause the current node to no longer
* be accepted by the TreeWalker
's associated filter.
* currentNode
may also be explicitly set to any node,
* whether or not it is within the subtree specified by the
* root
node or would be accepted by the filter and
* whatToShow
flags. Further traversal occurs relative to
* currentNode
even if it is not part of the current view,
* by applying the filters in the requested direction; if no traversal
* is possible, currentNode
is not changed.
* @exception DOMException
* NOT_SUPPORTED_ERR: Raised if an attempt is made to set
* currentNode
to null
.
*/
public void setCurrentNode(Node currentNode)
throws DOMException;
/**
* Moves to and returns the closest visible ancestor node of the current
* node. If the search for parentNode
attempts to step
* upward from the TreeWalker
's root
node, or
* if it fails to find a visible ancestor node, this method retains the
* current position and returns null
.
* @return The new parent node, or null
if the current node
* has no parent in the TreeWalker
's logical view.
*/
public Node parentNode();
/**
* Moves the TreeWalker
to the first visible child of the
* current node, and returns the new node. If the current node has no
* visible children, returns null
, and retains the current
* node.
* @return The new node, or null
if the current node has no
* visible children in the TreeWalker
's logical view.
*/
public Node firstChild();
/**
* Moves the TreeWalker
to the last visible child of the
* current node, and returns the new node. If the current node has no
* visible children, returns null
, and retains the current
* node.
* @return The new node, or null
if the current node has no
* children in the TreeWalker
's logical view.
*/
public Node lastChild();
/**
* Moves the TreeWalker
to the previous sibling of the
* current node, and returns the new node. If the current node has no
* visible previous sibling, returns null
, and retains the
* current node.
* @return The new node, or null
if the current node has no
* previous sibling. in the TreeWalker
's logical view.
*/
public Node previousSibling();
/**
* Moves the TreeWalker
to the next sibling of the current
* node, and returns the new node. If the current node has no visible
* next sibling, returns null
, and retains the current node.
* @return The new node, or null
if the current node has no
* next sibling. in the TreeWalker
's logical view.
*/
public Node nextSibling();
/**
* Moves the TreeWalker
to the previous visible node in
* document order relative to the current node, and returns the new
* node. If the current node has no previous node, or if the search for
* previousNode
attempts to step upward from the
* TreeWalker
's root
node, returns
* null
, and retains the current node.
* @return The new node, or null
if the current node has no
* previous node in the TreeWalker
's logical view.
*/
public Node previousNode();
/**
* Moves the TreeWalker
to the next visible node in document
* order relative to the current node, and returns the new node. If the
* current node has no next node, or if the search for nextNode attempts
* to step upward from the TreeWalker
's root
* node, returns null
, and retains the current node.
* @return The new node, or null
if the current node has no
* next node in the TreeWalker
's logical view.
*/
public Node nextNode();
}
org/w3c/dom/views/AbstractView.java 100644 0 0 2013 11146172406 14643 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.views;
/**
* A base interface that all views shall derive from.
*
See also the Document Object Model (DOM) Level 2 Views Specification.
* @since DOM Level 2
*/
public interface AbstractView {
/**
* The source DocumentView
of which this is an
* AbstractView
.
*/
public DocumentView getDocument();
}
org/w3c/dom/views/DocumentView.java 100644 0 0 2316 11146172406 14664 0 ustar 0 0 /*
* Copyright (c) 2000 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.views;
/**
* The DocumentView
interface is implemented by
* Document
objects in DOM implementations supporting DOM
* Views. It provides an attribute to retrieve the default view of a
* document.
*
See also the Document Object Model (DOM) Level 2 Views Specification.
* @since DOM Level 2
*/
public interface DocumentView {
/**
* The default AbstractView
for this Document
,
* or null
if none available.
*/
public AbstractView getDefaultView();
}
org/w3c/dom/xpath/XPathEvaluator.java 100644 0 0 16621 11146172405 15174 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* The evaluation of XPath expressions is provided by
* XPathEvaluator
. In a DOM implementation which supports the
* XPath 3.0 feature, as described above, the XPathEvaluator
* interface will be implemented on the same object which implements the
* Document
interface permitting it to be obtained by the usual
* binding-specific method such as casting or by using the DOM Level 3
* getInterface method. In this case the implementation obtained from the
* Document supports the XPath DOM module and is compatible with the XPath
* 1.0 specification.
*
Evaluation of expressions with specialized extension functions or
* variables may not work in all implementations and is, therefore, not
* portable. XPathEvaluator
implementations may be available
* from other sources that could provide specific support for specialized
* extension functions or variables as would be defined by other
* specifications.
*
See also the Document Object Model (DOM) Level 3 XPath Specification.
*/
public interface XPathEvaluator {
/**
* Creates a parsed XPath expression with resolved namespaces. This is
* useful when an expression will be reused in an application since it
* makes it possible to compile the expression string into a more
* efficient internal form and preresolve all namespace prefixes which
* occur within the expression.
* @param expression The XPath expression string to be parsed.
* @param resolver The resolver
permits translation of all
* prefixes, including the xml
namespace prefix, within
* the XPath expression into appropriate namespace URIs. If this is
* specified as null
, any namespace prefix within the
* expression will result in DOMException
being thrown
* with the code NAMESPACE_ERR
.
* @return The compiled form of the XPath expression.
* @exception XPathException
* INVALID_EXPRESSION_ERR: Raised if the expression is not legal
* according to the rules of the XPathEvaluator
.
* @exception DOMException
* NAMESPACE_ERR: Raised if the expression contains namespace prefixes
* which cannot be resolved by the specified
* XPathNSResolver
.
*/
public XPathExpression createExpression(String expression,
XPathNSResolver resolver)
throws XPathException, DOMException;
/**
* Adapts any DOM node to resolve namespaces so that an XPath expression
* can be easily evaluated relative to the context of the node where it
* appeared within the document. This adapter works like the DOM Level 3
* method lookupNamespaceURI
on nodes in resolving the
* namespaceURI from a given prefix using the current information
* available in the node's hierarchy at the time lookupNamespaceURI is
* called. also correctly resolving the implicit xml prefix.
* @param nodeResolver The node to be used as a context for namespace
* resolution.
* @return XPathNSResolver
which resolves namespaces with
* respect to the definitions in scope for a specified node.
*/
public XPathNSResolver createNSResolver(Node nodeResolver);
/**
* Evaluates an XPath expression string and returns a result of the
* specified type if possible.
* @param expression The XPath expression string to be parsed and
* evaluated.
* @param contextNode The context
is context node for the
* evaluation of this XPath expression. If the XPathEvaluator was
* obtained by casting the Document
then this must be
* owned by the same document and must be a Document
,
* Element
, Attribute
, Text
,
* CDATASection
, Comment
,
* ProcessingInstruction
, or XPathNamespace
* node. If the context node is a Text
or a
* CDATASection
, then the context is interpreted as the
* whole logical text node as seen by XPath, unless the node is empty
* in which case it may not serve as the XPath context.
* @param resolver The resolver
permits translation of all
* prefixes, including the xml
namespace prefix, within
* the XPath expression into appropriate namespace URIs. If this is
* specified as null
, any namespace prefix within the
* expression will result in DOMException
being thrown
* with the code NAMESPACE_ERR
.
* @param type If a specific type
is specified, then the
* result will be returned as the corresponding type.For XPath 1.0
* results, this must be one of the codes of the
* XPathResult
interface.
* @param result The result
specifies a specific result
* object which may be reused and returned by this method. If this is
* specified as null
or the implementation does not reuse
* the specified result, a new result object will be constructed and
* returned.For XPath 1.0 results, this object will be of type
* XPathResult
.
* @return The result of the evaluation of the XPath expression.For XPath
* 1.0 results, this object will be of type XPathResult
.
* @exception XPathException
* INVALID_EXPRESSION_ERR: Raised if the expression is not legal
* according to the rules of the XPathEvaluator
i
*
TYPE_ERR: Raised if the result cannot be converted to return the
* specified type.
* @exception DOMException
* NAMESPACE_ERR: Raised if the expression contains namespace prefixes
* which cannot be resolved by the specified
* XPathNSResolver
.
*
WRONG_DOCUMENT_ERR: The Node is from a document that is not
* supported by this XPathEvaluator
.
*
NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath
* context node or the request type is not permitted by this
* XPathEvaluator
.
*/
public Object evaluate(String expression,
Node contextNode,
XPathNSResolver resolver,
short type,
Object result)
throws XPathException, DOMException;
}
org/w3c/dom/xpath/XPathException.java 100644 0 0 3006 11146172405 15141 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.xpath;
/**
* A new exception has been created for exceptions specific to these XPath
* interfaces.
*
See also the Document Object Model (DOM) Level 3 XPath Specification.
*/
public class XPathException extends RuntimeException {
public XPathException(short code, String message) {
super(message);
this.code = code;
}
public short code;
// XPathExceptionCode
/**
* If the expression has a syntax error or otherwise is not a legal
* expression according to the rules of the specific
* XPathEvaluator
or contains specialized extension
* functions or variables not supported by this implementation.
*/
public static final short INVALID_EXPRESSION_ERR = 51;
/**
* If the expression cannot be converted to return the specified type.
*/
public static final short TYPE_ERR = 52;
}
org/w3c/dom/xpath/XPathExpression.java 100644 0 0 6477 11146172405 15361 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* The XPathExpression
interface represents a parsed and resolved
* XPath expression.
*
See also the Document Object Model (DOM) Level 3 XPath Specification.
*/
public interface XPathExpression {
/**
* Evaluates this XPath expression and returns a result.
* @param contextNode The context
is context node for the
* evaluation of this XPath expression.If the XPathEvaluator was
* obtained by casting the Document
then this must be
* owned by the same document and must be a Document
,
* Element
, Attribute
, Text
,
* CDATASection
, Comment
,
* ProcessingInstruction
, or XPathNamespace
* node.If the context node is a Text
or a
* CDATASection
, then the context is interpreted as the
* whole logical text node as seen by XPath, unless the node is empty
* in which case it may not serve as the XPath context.
* @param type If a specific type
is specified, then the
* result will be coerced to return the specified type relying on
* XPath conversions and fail if the desired coercion is not possible.
* This must be one of the type codes of XPathResult
.
* @param result The result
specifies a specific result
* object which may be reused and returned by this method. If this is
* specified as null
or the implementation does not reuse
* the specified result, a new result object will be constructed and
* returned.For XPath 1.0 results, this object will be of type
* XPathResult
.
* @return The result of the evaluation of the XPath expression.For XPath
* 1.0 results, this object will be of type XPathResult
.
* @exception XPathException
* TYPE_ERR: Raised if the result cannot be converted to return the
* specified type.
* @exception DOMException
* WRONG_DOCUMENT_ERR: The Node is from a document that is not supported
* by the XPathEvaluator that created this XPathExpression
* .
*
NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath
* context node or the request type is not permitted by this
* XPathExpression
.
*/
public Object evaluate(Node contextNode,
short type,
Object result)
throws XPathException, DOMException;
}
org/w3c/dom/xpath/XPathNSResolver.java 100644 0 0 3002 11146172405 15241 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.xpath;
/**
* The XPathNSResolver
interface permit prefix
* strings in the expression to be properly bound to
* namespaceURI
strings. XPathEvaluator
can
* construct an implementation of XPathNSResolver
from a node,
* or the interface may be implemented by any application.
*
See also the Document Object Model (DOM) Level 3 XPath Specification.
*/
public interface XPathNSResolver {
/**
* Look up the namespace URI associated to the given namespace prefix. The
* XPath evaluator must never call this with a null
or
* empty argument, because the result of doing this is undefined.
* @param prefix The prefix to look for.
* @return Returns the associated namespace URI or null
if
* none is found.
*/
public String lookupNamespaceURI(String prefix);
}
org/w3c/dom/xpath/XPathNamespace.java 100644 0 0 6447 11146172405 15113 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.xpath;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* The XPathNamespace
interface is returned by
* XPathResult
interfaces to represent the XPath namespace node
* type that DOM lacks. There is no public constructor for this node type.
* Attempts to place it into a hierarchy or a NamedNodeMap result in a
* DOMException
with the code HIERARCHY_REQUEST_ERR
* . This node is read only, so methods or setting of attributes that would
* mutate the node result in a DOMException with the code
* NO_MODIFICATION_ALLOWED_ERR
.
*
The core specification describes attributes of the Node
* interface that are different for different node types but does not
* describe XPATH_NAMESPACE_NODE
, so here is a description of
* those attributes for this node type. All attributes of Node
* not described in this section have a null
or
* false
value.
*
ownerDocument
matches the ownerDocument
of the
* ownerElement
even if the element is later adopted.
*
nodeName
is always the string "#namespace
".
*
prefix
is the prefix of the namespace represented by the
* node.
*
localName
is the same as prefix
.
*
nodeType
is equal to XPATH_NAMESPACE_NODE
.
*
namespaceURI
is the namespace URI of the namespace
* represented by the node.
*
nodeValue
is the same as namespaceURI
.
*
adoptNode
, cloneNode
, and
* importNode
fail on this node type by raising a
* DOMException
with the code NOT_SUPPORTED_ERR
.
*
Note: In future versions of the XPath specification, the * definition of a namespace node may be changed incomatibly, in which case * incompatible changes to field values may be required to implement * versions beyond XPath 1.0. *
See also the Document Object Model (DOM) Level 3 XPath Specification.
*/
public interface XPathNamespace extends Node {
// XPathNodeType
/**
* The node is a Namespace
.
*/
public static final short XPATH_NAMESPACE_NODE = 13;
/**
* The Element
on which the namespace was in scope when it
* was requested. This does not change on a returned namespace node even
* if the document changes such that the namespace goes out of scope on
* that element and this node is no longer found there by XPath.
*/
public Element getOwnerElement();
}
org/w3c/dom/xpath/XPathResult.java 100644 0 0 25027 11146172405 14510 0 ustar 0 0 /*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] 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.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.xpath;
import org.w3c.dom.Node;
import org.w3c.dom.DOMException;
/**
* The XPathResult
interface represents the result of the
* evaluation of an XPath 1.0 expression within the context of a particular
* node. Since evaluation of an XPath expression can result in various
* result types, this object makes it possible to discover and manipulate
* the type and value of the result.
*
See also the Document Object Model (DOM) Level 3 XPath Specification.
*/
public interface XPathResult {
// XPathResultType
/**
* This code does not represent a specific type. An evaluation of an XPath
* expression will never produce this type. If this type is requested,
* then the evaluation returns whatever type naturally results from
* evaluation of the expression.
*
If the natural result is a node set when ANY_TYPE
was
* requested, then UNORDERED_NODE_ITERATOR_TYPE
is always
* the resulting type. Any other representation of a node set must be
* explicitly requested.
*/
public static final short ANY_TYPE = 0;
/**
* The result is a number as defined by [XPath 1.0].
* Document modification does not invalidate the number, but may mean
* that reevaluation would not yield the same number.
*/
public static final short NUMBER_TYPE = 1;
/**
* The result is a string as defined by [XPath 1.0].
* Document modification does not invalidate the string, but may mean
* that the string no longer corresponds to the current document.
*/
public static final short STRING_TYPE = 2;
/**
* The result is a boolean as defined by [XPath 1.0].
* Document modification does not invalidate the boolean, but may mean
* that reevaluation would not yield the same boolean.
*/
public static final short BOOLEAN_TYPE = 3;
/**
* The result is a node set as defined by [XPath 1.0] that
* will be accessed iteratively, which may not produce nodes in a
* particular order. Document modification invalidates the iteration.
*
This is the default type returned if the result is a node set and
* ANY_TYPE
is requested.
*/
public static final short UNORDERED_NODE_ITERATOR_TYPE = 4;
/**
* The result is a node set as defined by [XPath 1.0] that
* will be accessed iteratively, which will produce document-ordered
* nodes. Document modification invalidates the iteration.
*/
public static final short ORDERED_NODE_ITERATOR_TYPE = 5;
/**
* The result is a node set as defined by [XPath 1.0] that
* will be accessed as a snapshot list of nodes that may not be in a
* particular order. Document modification does not invalidate the
* snapshot but may mean that reevaluation would not yield the same
* snapshot and nodes in the snapshot may have been altered, moved, or
* removed from the document.
*/
public static final short UNORDERED_NODE_SNAPSHOT_TYPE = 6;
/**
* The result is a node set as defined by [XPath 1.0] that
* will be accessed as a snapshot list of nodes that will be in original
* document order. Document modification does not invalidate the
* snapshot but may mean that reevaluation would not yield the same
* snapshot and nodes in the snapshot may have been altered, moved, or
* removed from the document.
*/
public static final short ORDERED_NODE_SNAPSHOT_TYPE = 7;
/**
* The result is a node set as defined by [XPath 1.0] and
* will be accessed as a single node, which may be null
if
* the node set is empty. Document modification does not invalidate the
* node, but may mean that the result node no longer corresponds to the
* current document. This is a convenience that permits optimization
* since the implementation can stop once any node in the resulting set
* has been found.
*
If there is more than one node in the actual result, the single
* node returned might not be the first in document order.
*/
public static final short ANY_UNORDERED_NODE_TYPE = 8;
/**
* The result is a node set as defined by [XPath 1.0] and
* will be accessed as a single node, which may be null
if
* the node set is empty. Document modification does not invalidate the
* node, but may mean that the result node no longer corresponds to the
* current document. This is a convenience that permits optimization
* since the implementation can stop once the first node in document
* order of the resulting set has been found.
*
If there are more than one node in the actual result, the single
* node returned will be the first in document order.
*/
public static final short FIRST_ORDERED_NODE_TYPE = 9;
/**
* A code representing the type of this result, as defined by the type
* constants.
*/
public short getResultType();
/**
* The value of this number result. If the native double type of the DOM
* binding does not directly support the exact IEEE 754 result of the
* XPath expression, then it is up to the definition of the binding to
* specify how the XPath number is converted to the native binding
* number.
* @exception XPathException
* TYPE_ERR: raised if resultType
is not
* NUMBER_TYPE
.
*/
public double getNumberValue()
throws XPathException;
/**
* The value of this string result.
* @exception XPathException
* TYPE_ERR: raised if resultType
is not
* STRING_TYPE
.
*/
public String getStringValue()
throws XPathException;
/**
* The value of this boolean result.
* @exception XPathException
* TYPE_ERR: raised if resultType
is not
* BOOLEAN_TYPE
.
*/
public boolean getBooleanValue()
throws XPathException;
/**
* The value of this single node result, which may be null
.
* @exception XPathException
* TYPE_ERR: raised if resultType
is not
* ANY_UNORDERED_NODE_TYPE
or
* FIRST_ORDERED_NODE_TYPE
.
*/
public Node getSingleNodeValue()
throws XPathException;
/**
* Signifies that the iterator has become invalid. True if
* resultType
is UNORDERED_NODE_ITERATOR_TYPE
* or ORDERED_NODE_ITERATOR_TYPE
and the document has been
* modified since this result was returned.
*/
public boolean getInvalidIteratorState();
/**
* The number of nodes in the result snapshot. Valid values for
* snapshotItem indices are 0
to
* snapshotLength-1
inclusive.
* @exception XPathException
* TYPE_ERR: raised if resultType
is not
* UNORDERED_NODE_SNAPSHOT_TYPE
or
* ORDERED_NODE_SNAPSHOT_TYPE
.
*/
public int getSnapshotLength()
throws XPathException;
/**
* Iterates and returns the next node from the node set or
* null
if there are no more nodes.
* @return Returns the next node.
* @exception XPathException
* TYPE_ERR: raised if resultType
is not
* UNORDERED_NODE_ITERATOR_TYPE
or
* ORDERED_NODE_ITERATOR_TYPE
.
* @exception DOMException
* INVALID_STATE_ERR: The document has been mutated since the result was
* returned.
*/
public Node iterateNext()
throws XPathException, DOMException;
/**
* Returns the index
th item in the snapshot collection. If
* index
is greater than or equal to the number of nodes in
* the list, this method returns null
. Unlike the iterator
* result, the snapshot does not become invalid, but may not correspond
* to the current document if it is mutated.
* @param index Index into the snapshot collection.
* @return The node at the index
th position in the
* NodeList
, or null
if that is not a valid
* index.
* @exception XPathException
* TYPE_ERR: raised if resultType
is not
* UNORDERED_NODE_SNAPSHOT_TYPE
or
* ORDERED_NODE_SNAPSHOT_TYPE
.
*/
public Node snapshotItem(int index)
throws XPathException;
}
org/xml/sax/AttributeList.java 100644 0 0 15356 11146172375 14072 0 ustar 0 0 // SAX Attribute List Interface.
// http://www.saxproject.org
// No warranty; no copyright -- use this as you will.
// $Id: AttributeList.java 226184 2005-04-08 10:53:24Z neeraj $
package org.xml.sax;
/**
* Interface for an element's attribute specifications.
*
*
* This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This is the original SAX1 interface for reporting an element's * attributes. Unlike the new {@link org.xml.sax.Attributes Attributes} * interface, it does not support Namespace-related information.
* *When an attribute list is supplied as part of a * {@link org.xml.sax.DocumentHandler#startElement startElement} * event, the list will return valid results only during the * scope of the event; once the event handler returns control * to the parser, the attribute list is invalid. To save a * persistent copy of the attribute list, use the SAX1 * {@link org.xml.sax.helpers.AttributeListImpl AttributeListImpl} * helper class.
* *An attribute list includes only attributes that have been * specified or defaulted: #IMPLIED attributes will not be included.
* *There are two ways for the SAX application to obtain information * from the AttributeList. First, it can iterate through the entire * list:
* ** public void startElement (String name, AttributeList atts) { * for (int i = 0; i < atts.getLength(); i++) { * String name = atts.getName(i); * String type = atts.getType(i); * String value = atts.getValue(i); * [...] * } * } ** *
(Note that the result of getLength() will be zero if there * are no attributes.) * *
As an alternative, the application can request the value or * type of specific attributes:
* ** public void startElement (String name, AttributeList atts) { * String identifier = atts.getValue("id"); * String label = atts.getValue("label"); * [...] * } ** * @deprecated This interface has been replaced by the SAX2 * {@link org.xml.sax.Attributes Attributes} * interface, which includes Namespace support. * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.DocumentHandler#startElement startElement * @see org.xml.sax.helpers.AttributeListImpl AttributeListImpl */ public interface AttributeList { //////////////////////////////////////////////////////////////////// // Iteration methods. //////////////////////////////////////////////////////////////////// /** * Return the number of attributes in this list. * *
The SAX parser may provide attributes in any * arbitrary order, regardless of the order in which they were * declared or specified. The number of attributes may be * zero.
* * @return The number of attributes in the list. */ public abstract int getLength (); /** * Return the name of an attribute in this list (by position). * *The names must be unique: the SAX parser shall not include the * same attribute twice. Attributes without values (those declared * #IMPLIED without a value specified in the start tag) will be * omitted from the list.
* *If the attribute name has a namespace prefix, the prefix * will still be attached.
* * @param i The index of the attribute in the list (starting at 0). * @return The name of the indexed attribute, or null * if the index is out of range. * @see #getLength */ public abstract String getName (int i); /** * Return the type of an attribute in the list (by position). * *The attribute type is one of the strings "CDATA", "ID", * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", * or "NOTATION" (always in upper case).
* *If the parser has not read a declaration for the attribute, * or if the parser does not report attribute types, then it must * return the value "CDATA" as stated in the XML 1.0 Recommentation * (clause 3.3.3, "Attribute-Value Normalization").
* *For an enumerated attribute that is not a notation, the * parser will report the type as "NMTOKEN".
* * @param i The index of the attribute in the list (starting at 0). * @return The attribute type as a string, or * null if the index is out of range. * @see #getLength * @see #getType(java.lang.String) */ public abstract String getType (int i); /** * Return the value of an attribute in the list (by position). * *If the attribute value is a list of tokens (IDREFS, * ENTITIES, or NMTOKENS), the tokens will be concatenated * into a single string separated by whitespace.
* * @param i The index of the attribute in the list (starting at 0). * @return The attribute value as a string, or * null if the index is out of range. * @see #getLength * @see #getValue(java.lang.String) */ public abstract String getValue (int i); //////////////////////////////////////////////////////////////////// // Lookup methods. //////////////////////////////////////////////////////////////////// /** * Return the type of an attribute in the list (by name). * *The return value is the same as the return value for * getType(int).
* *If the attribute name has a namespace prefix in the document, * the application must include the prefix here.
* * @param name The name of the attribute. * @return The attribute type as a string, or null if no * such attribute exists. * @see #getType(int) */ public abstract String getType (String name); /** * Return the value of an attribute in the list (by name). * *The return value is the same as the return value for * getValue(int).
* *If the attribute name has a namespace prefix in the document, * the application must include the prefix here.
* * @param name the name of the attribute to return * @return The attribute value as a string, or null if * no such attribute exists. * @see #getValue(int) */ public abstract String getValue (String name); } // end of AttributeList.java org/xml/sax/Attributes.java 100644 0 0 21430 11146172375 13407 0 ustar 0 0 // Attributes.java - attribute list with Namespace support // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the public domain. // $Id: Attributes.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Interface for a list of XML attributes. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This interface allows access to a list of attributes in * three different ways:
* *The list will not contain attributes that were declared
* #IMPLIED but not specified in the start tag. It will also not
* contain attributes used as Namespace declarations (xmlns*) unless
* the http://xml.org/sax/features/namespace-prefixes
* feature is set to true (it is false by
* default).
* Because SAX2 conforms to the original "Namespaces in XML"
* recommendation, it normally does not
* give namespace declaration attributes a namespace URI.
*
Some SAX2 parsers may support using an optional feature flag
* (http://xml.org/sax/features/xmlns-uris
) to request
* that those attributes be given URIs, conforming to a later
* backwards-incompatible revision of that recommendation. (The
* attribute's "local name" will be the prefix, or "xmlns" when
* defining a default element namespace.) For portability, handler
* code should always resolve that conflict, rather than requiring
* parsers that can change the setting of that feature flag.
If the namespace-prefixes feature (see above) is
* false, access by qualified name may not be available; if
* the http://xml.org/sax/features/namespaces
feature is
* false, access by Namespace-qualified names may not be
* available.
This interface replaces the now-deprecated SAX1 {@link * org.xml.sax.AttributeList AttributeList} interface, which does not * contain Namespace support. In addition to Namespace support, it * adds the getIndex methods (below).
* *The order of attributes in the list is unspecified, and will * vary from implementation to implementation.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.helpers.AttributesImpl * @see org.xml.sax.ext.DeclHandler#attributeDecl */ public interface Attributes { //////////////////////////////////////////////////////////////////// // Indexed access. //////////////////////////////////////////////////////////////////// /** * Return the number of attributes in the list. * *Once you know the number of attributes, you can iterate * through the list.
* * @return The number of attributes in the list. * @see #getURI(int) * @see #getLocalName(int) * @see #getQName(int) * @see #getType(int) * @see #getValue(int) */ public abstract int getLength (); /** * Look up an attribute's Namespace URI by index. * * @param index The attribute index (zero-based). * @return The Namespace URI, or the empty string if none * is available, or null if the index is out of * range. * @see #getLength */ public abstract String getURI (int index); /** * Look up an attribute's local name by index. * * @param index The attribute index (zero-based). * @return The local name, or the empty string if Namespace * processing is not being performed, or null * if the index is out of range. * @see #getLength */ public abstract String getLocalName (int index); /** * Look up an attribute's XML qualified (prefixed) name by index. * * @param index The attribute index (zero-based). * @return The XML qualified name, or the empty string * if none is available, or null if the index * is out of range. * @see #getLength */ public abstract String getQName (int index); /** * Look up an attribute's type by index. * *The attribute type is one of the strings "CDATA", "ID", * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", * or "NOTATION" (always in upper case).
* *If the parser has not read a declaration for the attribute, * or if the parser does not report attribute types, then it must * return the value "CDATA" as stated in the XML 1.0 Recommendation * (clause 3.3.3, "Attribute-Value Normalization").
* *For an enumerated attribute that is not a notation, the * parser will report the type as "NMTOKEN".
* * @param index The attribute index (zero-based). * @return The attribute's type as a string, or null if the * index is out of range. * @see #getLength */ public abstract String getType (int index); /** * Look up an attribute's value by index. * *If the attribute value is a list of tokens (IDREFS, * ENTITIES, or NMTOKENS), the tokens will be concatenated * into a single string with each token separated by a * single space.
* * @param index The attribute index (zero-based). * @return The attribute's value as a string, or null if the * index is out of range. * @see #getLength */ public abstract String getValue (int index); //////////////////////////////////////////////////////////////////// // Name-based query. //////////////////////////////////////////////////////////////////// /** * Look up the index of an attribute by Namespace name. * * @param uri The Namespace URI, or the empty string if * the name has no Namespace URI. * @param localName The attribute's local name. * @return The index of the attribute, or -1 if it does not * appear in the list. */ public int getIndex (String uri, String localName); /** * Look up the index of an attribute by XML qualified (prefixed) name. * * @param qName The qualified (prefixed) name. * @return The index of the attribute, or -1 if it does not * appear in the list. */ public int getIndex (String qName); /** * Look up an attribute's type by Namespace name. * *See {@link #getType(int) getType(int)} for a description * of the possible types.
* * @param uri The Namespace URI, or the empty String if the * name has no Namespace URI. * @param localName The local name of the attribute. * @return The attribute type as a string, or null if the * attribute is not in the list or if Namespace * processing is not being performed. */ public abstract String getType (String uri, String localName); /** * Look up an attribute's type by XML qualified (prefixed) name. * *See {@link #getType(int) getType(int)} for a description * of the possible types.
* * @param qName The XML qualified name. * @return The attribute type as a string, or null if the * attribute is not in the list or if qualified names * are not available. */ public abstract String getType (String qName); /** * Look up an attribute's value by Namespace name. * *See {@link #getValue(int) getValue(int)} for a description * of the possible values.
* * @param uri The Namespace URI, or the empty String if the * name has no Namespace URI. * @param localName The local name of the attribute. * @return The attribute value as a string, or null if the * attribute is not in the list. */ public abstract String getValue (String uri, String localName); /** * Look up an attribute's value by XML qualified (prefixed) name. * *See {@link #getValue(int) getValue(int)} for a description * of the possible values.
* * @param qName The XML qualified name. * @return The attribute value as a string, or null if the * attribute is not in the list or if qualified names * are not available. */ public abstract String getValue (String qName); } // end of Attributes.java org/xml/sax/ContentHandler.java 100644 0 0 43460 11146172375 14200 0 ustar 0 0 // ContentHandler.java - handle main document content. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the public domain. // $Id: ContentHandler.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Receive notification of the logical content of a document. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This is the main interface that most SAX applications * implement: if the application needs to be informed of basic parsing * events, it implements this interface and registers an instance with * the SAX parser using the {@link org.xml.sax.XMLReader#setContentHandler * setContentHandler} method. The parser uses the instance to report * basic document-related events like the start and end of elements * and character data.
* *The order of events in this interface is very important, and * mirrors the order of information in the document itself. For * example, all of an element's content (character data, processing * instructions, and/or subelements) will appear, in order, between * the startElement event and the corresponding endElement event.
* *This interface is similar to the now-deprecated SAX 1.0 * DocumentHandler interface, but it adds support for Namespaces * and for reporting skipped entities (in non-validating XML * processors).
* *Implementors should note that there is also a
* ContentHandler
class in the java.net
* package; that means that it's probably a bad idea to do
import java.net.*; * import org.xml.sax.*; ** *
In fact, "import ...*" is usually a sign of sloppy programming * anyway, so the user should consider this a feature rather than a * bug.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1+ (sax2r3pre1) * @see org.xml.sax.XMLReader * @see org.xml.sax.DTDHandler * @see org.xml.sax.ErrorHandler */ public interface ContentHandler { /** * Receive an object for locating the origin of SAX document events. * *SAX parsers are strongly encouraged (though not absolutely * required) to supply a locator: if it does so, it must supply * the locator to the application by invoking this method before * invoking any of the other methods in the ContentHandler * interface.
* *The locator allows the application to determine the end * position of any document-related event, even if the parser is * not reporting an error. Typically, the application will * use this information for reporting its own errors (such as * character content that does not match an application's * business rules). The information returned by the locator * is probably not sufficient for use with a search engine.
* *Note that the locator will return correct information only * during the invocation SAX event callbacks after * {@link #startDocument startDocument} returns and before * {@link #endDocument endDocument} is called. The * application should not attempt to use it at any other time.
* * @param locator an object that can return the location of * any SAX document event * @see org.xml.sax.Locator */ public void setDocumentLocator (Locator locator); /** * Receive notification of the beginning of a document. * *The SAX parser will invoke this method only once, before any * other event callbacks (except for {@link #setDocumentLocator * setDocumentLocator}).
* * @throws org.xml.sax.SAXException any SAX exception, possibly * wrapping another exception * @see #endDocument */ public void startDocument () throws SAXException; /** * Receive notification of the end of a document. * *There is an apparent contradiction between the * documentation for this method and the documentation for {@link * org.xml.sax.ErrorHandler#fatalError}. Until this ambiguity is * resolved in a future major release, clients should make no * assumptions about whether endDocument() will or will not be * invoked when the parser has reported a fatalError() or thrown * an exception.
* *The SAX parser will invoke this method only once, and it will * be the last method invoked during the parse. The parser shall * not invoke this method until it has either abandoned parsing * (because of an unrecoverable error) or reached the end of * input.
* * @throws org.xml.sax.SAXException any SAX exception, possibly * wrapping another exception * @see #startDocument */ public void endDocument() throws SAXException; /** * Begin the scope of a prefix-URI Namespace mapping. * *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).
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.
* *Note that start/endPrefixMapping events are not * guaranteed to be properly nested relative to each other: * all startPrefixMapping events will occur immediately before the * corresponding {@link #startElement startElement} event, * and all {@link #endPrefixMapping endPrefixMapping} * events will occur immediately after the corresponding * {@link #endElement endElement} event, * but their order is not otherwise * guaranteed.
* *There should never be start/endPrefixMapping events for the * "xml" prefix, since it is predeclared and immutable.
* * @param prefix the Namespace prefix being declared. * An empty string is used for the default element namespace, * which has no prefix. * @param uri the Namespace URI the prefix is mapped to * @throws org.xml.sax.SAXException the client may throw * an exception during processing * @see #endPrefixMapping * @see #startElement */ public void startPrefixMapping (String prefix, String uri) throws SAXException; /** * End the scope of a prefix-URI mapping. * *See {@link #startPrefixMapping startPrefixMapping} for * details. These events will always occur immediately after the * corresponding {@link #endElement endElement} event, but the order of * {@link #endPrefixMapping endPrefixMapping} events is not otherwise * guaranteed.
* * @param prefix the prefix that was being mapped. * This is the empty string when a default mapping scope ends. * @throws org.xml.sax.SAXException the client may throw * an exception during processing * @see #startPrefixMapping * @see #endElement */ public void endPrefixMapping (String prefix) throws SAXException; /** * Receive notification of the beginning of an element. * *The Parser will invoke this method at the beginning of every * element in the XML document; there will be a corresponding * {@link #endElement endElement} event for every startElement event * (even when the element is empty). All of the element's content will be * reported, in order, before the corresponding endElement * event.
* *This event allows up to three name components for each * element:
* *Any or all of these may be provided, depending on the * values of the http://xml.org/sax/features/namespaces * and the http://xml.org/sax/features/namespace-prefixes * properties:
* *Note that the attribute list provided will contain only
* attributes with explicit values (specified or defaulted):
* #IMPLIED attributes will be omitted. The attribute list
* will contain attributes used for Namespace declarations
* (xmlns* attributes) only if the
* http://xml.org/sax/features/namespace-prefixes
* property is true (it is false by default, and support for a
* true value is optional).
Like {@link #characters characters()}, attribute values may have
* characters that need more than one char
value.
The SAX parser will invoke this method at the end of every * element in the XML document; there will be a corresponding * {@link #startElement startElement} event for every endElement * event (even when the element is empty).
* *For information on the names, see startElement.
* * @param uri the Namespace URI, or the empty string if the * element has no Namespace URI or if Namespace * processing is not being performed * @param localName the local name (without prefix), or the * empty string if Namespace processing is not being * performed * @param qName the qualified XML name (with prefix), or the * empty string if qualified names are not available * @throws org.xml.sax.SAXException any SAX exception, possibly * wrapping another exception */ public void endElement (String uri, String localName, String qName) throws SAXException; /** * Receive notification of character data. * *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.
* *The application must not attempt to read from the array * outside of the specified range.
* *Individual characters may consist of more than one Java
* char
value. There are two important cases where this
* happens, because characters can't be represented in just sixteen bits.
* In one case, characters are represented in a Surrogate Pair,
* using two special Unicode values. Such characters are in the so-called
* "Astral Planes", with a code point above U+FFFF. A second case involves
* composite characters, such as a base character combining with one or
* more accent characters.
Your code should not assume that algorithms using
* char
-at-a-time idioms will be working in character
* units; in some cases they will split characters. This is relevant
* wherever XML permits arbitrary characters, such as attribute values,
* processing instruction data, and comments as well as in data reported
* from this method. It's also generally relevant whenever Java code
* manipulates internationalized text; the issue isn't unique to XML.
Note that some parsers will report whitespace in element * content using the {@link #ignorableWhitespace ignorableWhitespace} * method rather than this one (validating parsers must * do so).
* * @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 * @throws org.xml.sax.SAXException any SAX exception, possibly * wrapping another exception * @see #ignorableWhitespace * @see org.xml.sax.Locator */ public void characters (char ch[], int start, int length) throws SAXException; /** * Receive notification of ignorable whitespace in element content. * *Validating Parsers must use this method to report each chunk * of whitespace in element content (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.
* *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.
* *The application must not attempt to read from the array * outside of the specified range.
* * @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 * @throws org.xml.sax.SAXException any SAX exception, possibly * wrapping another exception * @see #characters */ public void ignorableWhitespace (char ch[], int start, int length) throws SAXException; /** * Receive notification of a processing instruction. * *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.
* *A SAX parser must 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.
* *Like {@link #characters characters()}, processing instruction
* data may have characters that need more than one char
* value.
The Parser will invoke this method each time the entity is
* 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.
* This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
If a SAX application needs information about notations and * unparsed entities, then the application implements this * interface and registers an instance with the SAX parser using * the parser's setDTDHandler method. The parser uses the * instance to report notation and unparsed entity declarations to * the application.
* *Note that this interface includes only those DTD events that * the XML recommendation requires processors to report: * notation and unparsed entity declarations.
* *The SAX parser may report these events in any order, regardless * of the order in which the notations and unparsed entities were * declared; however, all DTD events must be reported after the * document handler's startDocument event, and before the first * startElement event. * (If the {@link org.xml.sax.ext.LexicalHandler LexicalHandler} is * used, these events must also be reported before the endDTD event.) *
* *It is up to the application to store the information for * future use (perhaps in a hash table or object tree). * If the application encounters attributes of type "NOTATION", * "ENTITY", or "ENTITIES", it can use the information that it * obtained through this interface to find the entity and/or * notation corresponding with the attribute value.
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.XMLReader#setDTDHandler */ public interface DTDHandler { /** * Receive notification of a notation declaration event. * *It is up to the application to record the notation for later * reference, if necessary; * notations may appear as attribute values and in unparsed entity * declarations, and are sometime used with processing instruction * target names.
* *At least one of publicId and systemId must be non-null. * If a system identifier is present, and it is a URL, the SAX * parser must resolve it fully before passing it to the * application through this event.
* *There is no guarantee that the notation declaration will be * reported before any unparsed entities that use it.
* * @param name The notation name. * @param publicId The notation's public identifier, or null if * none was given. * @param systemId The notation's system identifier, or null if * none was given. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see #unparsedEntityDecl * @see org.xml.sax.Attributes */ public abstract void notationDecl (String name, String publicId, String systemId) throws SAXException; /** * Receive notification of an unparsed entity declaration event. * *Note that the notation name corresponds to a notation * reported by the {@link #notationDecl notationDecl} event. * It is up to the application to record the entity for later * reference, if necessary; * unparsed entities may appear as attribute values. *
* *If the system identifier is a URL, the parser must resolve it * fully before passing it to the application.
* * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @param name The unparsed entity's name. * @param publicId The entity's public identifier, or null if none * was given. * @param systemId The entity's system identifier. * @param notationName The name of the associated notation. * @see #notationDecl * @see org.xml.sax.Attributes */ public abstract void unparsedEntityDecl (String name, String publicId, String systemId, String notationName) throws SAXException; } // end of DTDHandler.java org/xml/sax/DocumentHandler.java 100644 0 0 22624 11146172375 14343 0 ustar 0 0 // SAX document handler. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: DocumentHandler.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Receive notification of general document events. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This was the main event-handling interface for SAX1; in * SAX2, it has been replaced by {@link org.xml.sax.ContentHandler * ContentHandler}, which provides Namespace support and reporting * of skipped entities. This interface is included in SAX2 only * to support legacy SAX1 applications.
* *The order of events in this interface is very important, and * mirrors the order of information in the document itself. For * example, all of an element's content (character data, processing * instructions, and/or subelements) will appear, in order, between * the startElement event and the corresponding endElement event.
* *Application writers who do not want to implement the entire * interface can derive a class from HandlerBase, which implements * the default functionality; parser writers can instantiate * HandlerBase to obtain a default handler. The application can find * the location of any document event using the Locator interface * supplied by the Parser through the setDocumentLocator method.
* * @deprecated This interface has been replaced by the SAX2 * {@link org.xml.sax.ContentHandler ContentHandler} * interface, which includes Namespace support. * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.Parser#setDocumentHandler * @see org.xml.sax.Locator * @see org.xml.sax.HandlerBase */ public interface DocumentHandler { /** * Receive an object for locating the origin of SAX document events. * *SAX parsers are strongly encouraged (though not absolutely * required) to supply a locator: if it does so, it must supply * the locator to the application by invoking this method before * invoking any of the other methods in the DocumentHandler * interface.
* *The locator allows the application to determine the end * position of any document-related event, even if the parser is * not reporting an error. Typically, the application will * use this information for reporting its own errors (such as * character content that does not match an application's * business rules). The information returned by the locator * is probably not sufficient for use with a search engine.
* *Note that the locator will return correct information only * during the invocation of the events in this interface. The * application should not attempt to use it at any other time.
* * @param locator An object that can return the location of * any SAX document event. * @see org.xml.sax.Locator */ public abstract void setDocumentLocator (Locator locator); /** * Receive notification of the beginning of a document. * *The SAX parser will invoke this method only once, before any * other methods in this interface or in DTDHandler (except for * setDocumentLocator).
* * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void startDocument () throws SAXException; /** * Receive notification of the end of a document. * *The SAX parser will invoke this method only once, and it will * be the last method invoked during the parse. The parser shall * not invoke this method until it has either abandoned parsing * (because of an unrecoverable error) or reached the end of * input.
* * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void endDocument () throws SAXException; /** * Receive notification of the beginning of an element. * *The Parser will invoke this method at the beginning of every * element in the XML document; there will be a corresponding * endElement() event for every startElement() event (even when the * element is empty). All of the element's content will be * reported, in order, before the corresponding endElement() * event.
* *If the element name has a namespace prefix, the prefix will * still be attached. Note that the attribute list provided will * contain only attributes with explicit values (specified or * defaulted): #IMPLIED attributes will be omitted.
* * @param name The element type name. * @param atts The attributes attached to the element, if any. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see #endElement * @see org.xml.sax.AttributeList */ public abstract void startElement (String name, AttributeList atts) throws SAXException; /** * Receive notification of the end of an element. * *The SAX parser will invoke this method at the end of every * element in the XML document; there will be a corresponding * startElement() event for every endElement() event (even when the * element is empty).
* *If the element name has a namespace prefix, the prefix will * still be attached to the name.
* * @param name The element type name * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void endElement (String name) throws SAXException; /** * Receive notification of character data. * *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.
* *The application must not attempt to read from the array * outside of the specified range.
* *Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so).
* * @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. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see #ignorableWhitespace * @see org.xml.sax.Locator */ public abstract void characters (char ch[], int start, int length) throws SAXException; /** * Receive notification of ignorable whitespace in element content. * *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.
* *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.
* *The application must not attempt to read from the array * outside of the specified range.
* * @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. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see #characters */ public abstract void ignorableWhitespace (char ch[], int start, int length) throws SAXException; /** * Receive notification of a processing instruction. * *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.
* *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.
* * @param target The processing instruction target. * @param data The processing instruction data, or null if * none was supplied. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. */ public abstract void processingInstruction (String target, String data) throws SAXException; } // end of DocumentHandler.java org/xml/sax/EntityResolver.java 100644 0 0 11473 11146172375 14265 0 ustar 0 0 // SAX entity resolver. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: EntityResolver.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; import java.io.IOException; /** * Basic interface for resolving entities. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
If a SAX application needs to implement customized handling * for external entities, it must implement this interface and * register an instance with the SAX driver using the * {@link org.xml.sax.XMLReader#setEntityResolver setEntityResolver} * method.
* *The XML reader will then allow the application to intercept any * external entities (including the external DTD subset and external * parameter entities, if any) before including them.
* *Many SAX applications will not need to implement this interface, * but it will be especially useful for applications that build * XML documents from databases or other specialised input sources, * or for applications that use URI types other than URLs.
* *The following resolver would provide the application * with a special character stream for the entity with the system * identifier "http://www.myhost.com/today":
* ** import org.xml.sax.EntityResolver; * import org.xml.sax.InputSource; * * public class MyResolver implements EntityResolver { * public InputSource resolveEntity (String publicId, String systemId) * { * if (systemId.equals("http://www.myhost.com/today")) { * // return a special input source * MyReader reader = new MyReader(); * return new InputSource(reader); * } else { * // use the default behaviour * return null; * } * } * } ** *
The application can also use this interface to redirect system * identifiers to local URIs or to look up replacements in a catalog * (possibly by using the public identifier).
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.XMLReader#setEntityResolver * @see org.xml.sax.InputSource */ public interface EntityResolver { /** * Allow the application to resolve external entities. * *The parser will call this method before opening any external * entity except the top-level document entity. Such entities include * the external DTD subset and external parameter entities referenced * within the DTD (in either case, only if the parser reads external * parameter entities), and external general entities referenced * within the document element (if the parser reads external general * entities). The application may request that the parser locate * the entity itself, that it use an alternative URI, or that it * use data provided by the application (as a character or byte * input stream).
* *Application writers can use this method to redirect external * system identifiers to secure and/or local URIs, to look up * public identifiers in a catalogue, or to read an entity from a * database or other input source (including, for example, a dialog * box). Neither XML nor SAX specifies a preferred policy for using * public or system IDs to resolve resources. However, SAX specifies * how to interpret any InputSource returned by this method, and that * if none is returned, then the system ID will be dereferenced as * a URL.
* *If the system identifier is a URL, the SAX parser must * resolve it fully before reporting it to the application.
* * @param publicId The public identifier of the external entity * being referenced, or null if none was supplied. * @param systemId The system identifier of the external entity * being referenced. * @return An InputSource object describing the new input source, * or null to request that the parser open a regular * URI connection to the system identifier. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @exception java.io.IOException A Java-specific IO exception, * possibly the result of creating a new InputStream * or Reader for the InputSource. * @see org.xml.sax.InputSource */ public abstract InputSource resolveEntity (String publicId, String systemId) throws SAXException, IOException; } // end of EntityResolver.java org/xml/sax/ErrorHandler.java 100644 0 0 13442 11146172375 13654 0 ustar 0 0 // SAX error handler. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: ErrorHandler.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Basic interface for SAX error handlers. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
If a SAX application needs to implement customized error * handling, it must implement this interface and then register an * instance with the XML reader using the * {@link org.xml.sax.XMLReader#setErrorHandler setErrorHandler} * method. The parser will then report all errors and warnings * through this interface.
* *WARNING: If an application does not * register an ErrorHandler, XML parsing errors will go unreported, * except that SAXParseExceptions will be thrown for fatal errors. * In order to detect validity errors, an ErrorHandler that does something * with {@link #error error()} calls must be registered.
* *For XML processing errors, a SAX driver must use this interface * in preference to throwing an exception: it is up to the application * to decide whether to throw an exception for different types of * errors and warnings. Note, however, that there is no requirement that * the parser continue to report additional errors after a call to * {@link #fatalError fatalError}. In other words, a SAX driver class * may throw an exception after reporting any fatalError. * Also parsers may throw appropriate exceptions for non-XML errors. * For example, {@link XMLReader#parse XMLReader.parse()} would throw * an IOException for errors accessing entities or the document.
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1+ (sax2r3pre1) * @see org.xml.sax.XMLReader#setErrorHandler * @see org.xml.sax.SAXParseException */ public interface ErrorHandler { /** * Receive notification of a warning. * *SAX parsers will use this method to report conditions that * are not errors or fatal errors as defined by the XML * recommendation. The default behaviour is to take no * action.
* *The SAX parser must continue to provide normal parsing events * after invoking this method: it should still be possible for the * application to process the document through to the end.
* *Filters may use this method to report other, non-XML warnings * as well.
* * @param exception The warning information encapsulated in a * SAX parse exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.SAXParseException */ public abstract void warning (SAXParseException exception) throws SAXException; /** * Receive notification of a recoverable error. * *This corresponds to the definition of "error" in section 1.2 * of the W3C XML 1.0 Recommendation. For example, a validating * parser would use this callback to report the violation of a * validity constraint. The default behaviour is to take no * action.
* *The SAX parser must continue to provide normal parsing * events after invoking this method: it should still be possible * for the application to process the document through to the end. * If the application cannot do so, then the parser should report * a fatal error even if the XML recommendation does not require * it to do so.
* *Filters may use this method to report other, non-XML errors * as well.
* * @param exception The error information encapsulated in a * SAX parse exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.SAXParseException */ public abstract void error (SAXParseException exception) throws SAXException; /** * Receive notification of a non-recoverable error. * *There is an apparent contradiction between the * documentation for this method and the documentation for {@link * org.xml.sax.ContentHandler#endDocument}. Until this ambiguity * is resolved in a future major release, clients should make no * assumptions about whether endDocument() will or will not be * invoked when the parser has reported a fatalError() or thrown * an exception.
* *This corresponds to the definition of "fatal error" in * section 1.2 of the W3C XML 1.0 Recommendation. For example, a * parser would use this callback to report the violation of a * well-formedness constraint.
* *The application must assume that the document is unusable * after the parser has invoked this method, and should continue * (if at all) only for the sake of collecting additional error * messages: in fact, SAX parsers are free to stop reporting any * other events once this method has been invoked.
* * @param exception The error information encapsulated in a * SAX parse exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.SAXParseException */ public abstract void fatalError (SAXParseException exception) throws SAXException; } // end of ErrorHandler.java org/xml/sax/HandlerBase.java 100644 0 0 31441 11146172375 13434 0 ustar 0 0 // SAX default handler base class. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: HandlerBase.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Default base class for handlers. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class implements the default behaviour for four SAX1 * interfaces: EntityResolver, DTDHandler, DocumentHandler, * and ErrorHandler. It is now obsolete, but is included in SAX2 to * support legacy SAX1 applications. SAX2 applications should use * the {@link org.xml.sax.helpers.DefaultHandler DefaultHandler} * class instead.
* *Application writers can extend this class when they need to * implement only part of an interface; parser writers can * instantiate this class to provide default handlers when the * application has not supplied its own.
* *Note that the use of this class is optional.
* * @deprecated This class works with the deprecated * {@link org.xml.sax.DocumentHandler DocumentHandler} * interface. It has been replaced by the SAX2 * {@link org.xml.sax.helpers.DefaultHandler DefaultHandler} * class. * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.EntityResolver * @see org.xml.sax.DTDHandler * @see org.xml.sax.DocumentHandler * @see org.xml.sax.ErrorHandler */ public class HandlerBase implements EntityResolver, DTDHandler, DocumentHandler, ErrorHandler { //////////////////////////////////////////////////////////////////// // Default implementation of the EntityResolver interface. //////////////////////////////////////////////////////////////////// /** * Resolve an external entity. * *Always return null, so that the parser will use the system * identifier provided in the XML document. This method implements * the SAX default behaviour: application writers can override it * in a subclass to do special translations such as catalog lookups * or URI redirection.
* * @param publicId The public identifer, or null if none is * available. * @param systemId The system identifier provided in the XML * document. * @return The new input source, or null to require the * default behaviour. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.EntityResolver#resolveEntity */ public InputSource resolveEntity (String publicId, String systemId) throws SAXException { return null; } //////////////////////////////////////////////////////////////////// // Default implementation of DTDHandler interface. //////////////////////////////////////////////////////////////////// /** * Receive notification of a notation declaration. * *By default, do nothing. Application writers may override this * method in a subclass if they wish to keep track of the notations * declared in a document.
* * @param name The notation name. * @param publicId The notation public identifier, or null if not * available. * @param systemId The notation system identifier. * @see org.xml.sax.DTDHandler#notationDecl */ public void notationDecl (String name, String publicId, String systemId) { // no op } /** * Receive notification of an unparsed entity declaration. * *By default, do nothing. Application writers may override this * method in a subclass to keep track of the unparsed entities * declared in a document.
* * @param name The entity name. * @param publicId The entity public identifier, or null if not * available. * @param systemId The entity system identifier. * @param notationName The name of the associated notation. * @see org.xml.sax.DTDHandler#unparsedEntityDecl */ public void unparsedEntityDecl (String name, String publicId, String systemId, String notationName) { // no op } //////////////////////////////////////////////////////////////////// // Default implementation of DocumentHandler interface. //////////////////////////////////////////////////////////////////// /** * Receive a Locator object for document events. * *By default, do nothing. Application writers may override this * method in a subclass if they wish to store the locator for use * with other document events.
* * @param locator A locator for all SAX document events. * @see org.xml.sax.DocumentHandler#setDocumentLocator * @see org.xml.sax.Locator */ public void setDocumentLocator (Locator locator) { // no op } /** * Receive notification of the beginning of the document. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the beginning * of a document (such as allocating the root node of a tree or * creating an output file).
* * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DocumentHandler#startDocument */ public void startDocument () throws SAXException { // no op } /** * Receive notification of the end of the document. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the beginning * of a document (such as finalising a tree or closing an output * file).
* * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DocumentHandler#endDocument */ public void endDocument () throws SAXException { // no op } /** * Receive notification of the start of an element. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each element (such as allocating a new tree node or writing * output to a file).
* * @param name The element type name. * @param attributes The specified or defaulted attributes. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DocumentHandler#startElement */ public void startElement (String name, AttributeList attributes) throws SAXException { // no op } /** * Receive notification of the end of an element. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each element (such as finalising a tree node or writing * output to a file).
* * @param name the element name * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DocumentHandler#endElement */ public void endElement (String name) throws SAXException { // no op } /** * Receive notification of character data inside an element. * *By default, do nothing. Application writers may override this * method to take specific actions for each chunk of character data * (such as adding the data to a node or buffer, or printing it to * a file).
* * @param ch The characters. * @param start The start position in the character array. * @param length The number of characters to use from the * character array. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DocumentHandler#characters */ public void characters (char ch[], int start, int length) throws SAXException { // no op } /** * Receive notification of ignorable whitespace in element content. * *By default, do nothing. Application writers may override this * method to take specific actions for each chunk of ignorable * whitespace (such as adding data to a node or buffer, or printing * it to a file).
* * @param ch The whitespace characters. * @param start The start position in the character array. * @param length The number of characters to use from the * character array. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DocumentHandler#ignorableWhitespace */ public void ignorableWhitespace (char ch[], int start, int length) throws SAXException { // no op } /** * Receive notification of a processing instruction. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions for each * processing instruction, such as setting status variables or * invoking other methods.
* * @param target The processing instruction target. * @param data The processing instruction data, or null if * none is supplied. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DocumentHandler#processingInstruction */ public void processingInstruction (String target, String data) throws SAXException { // no op } //////////////////////////////////////////////////////////////////// // Default implementation of the ErrorHandler interface. //////////////////////////////////////////////////////////////////// /** * Receive notification of a parser warning. * *The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each warning, such as inserting the message in a log file or * printing it to the console.
* * @param e The warning information encoded as an exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ErrorHandler#warning * @see org.xml.sax.SAXParseException */ public void warning (SAXParseException e) throws SAXException { // no op } /** * Receive notification of a recoverable parser error. * *The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each error, such as inserting the message in a log file or * printing it to the console.
* * @param e The warning information encoded as an exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ErrorHandler#warning * @see org.xml.sax.SAXParseException */ public void error (SAXParseException e) throws SAXException { // no op } /** * Report a fatal XML parsing error. * *The default implementation throws a SAXParseException. * Application writers may override this method in a subclass if * they need to take specific actions for each fatal error (such as * collecting all of the errors into a single report): in any case, * the application must stop all regular processing when this * method is invoked, since the document is no longer reliable, and * the parser may no longer report parsing events.
* * @param e The error information encoded as an exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ErrorHandler#fatalError * @see org.xml.sax.SAXParseException */ public void fatalError (SAXParseException e) throws SAXException { throw e; } } // end of HandlerBase.java org/xml/sax/InputSource.java 100644 0 0 24356 11146172375 13553 0 ustar 0 0 // SAX input source. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: InputSource.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; import java.io.Reader; import java.io.InputStream; /** * A single input source for an XML entity. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class allows a SAX application to encapsulate information * about an input source in a single object, which may include * a public identifier, a system identifier, a byte stream (possibly * with a specified encoding), and/or a character stream.
* *There are two places that the application can deliver an * input source to the parser: as the argument to the Parser.parse * method, or as the return value of the EntityResolver.resolveEntity * method.
* *The SAX parser will use the InputSource object to determine how * to read XML input. If there is a character stream available, the * parser will read that stream directly, disregarding any text * encoding declaration found in that stream. * If there is no character stream, but there is * a byte stream, the parser will use that byte stream, using the * encoding specified in the InputSource or else (if no encoding is * specified) autodetecting the character encoding using an algorithm * such as the one in the XML specification. If neither a character * stream nor a * byte stream is available, the parser will attempt to open a URI * connection to the resource identified by the system * identifier.
* *An InputSource object belongs to the application: the SAX parser * shall never modify it in any way (it may modify a copy if * necessary). However, standard processing of both byte and * character streams is to close them on as part of end-of-parse cleanup, * so applications should not attempt to re-use such streams after they * have been handed to a parser.
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource) * @see org.xml.sax.EntityResolver#resolveEntity * @see java.io.InputStream * @see java.io.Reader */ public class InputSource { /** * Zero-argument default constructor. * * @see #setPublicId * @see #setSystemId * @see #setByteStream * @see #setCharacterStream * @see #setEncoding */ public InputSource () { } /** * Create a new input source with a system identifier. * *Applications may use setPublicId to include a * public identifier as well, or setEncoding to specify * the character encoding, if known.
* *If the system identifier is a URL, it must be fully * resolved (it may not be a relative URL).
* * @param systemId The system identifier (URI). * @see #setPublicId * @see #setSystemId * @see #setByteStream * @see #setEncoding * @see #setCharacterStream */ public InputSource (String systemId) { setSystemId(systemId); } /** * Create a new input source with a byte stream. * *Application writers should use setSystemId() to provide a base * for resolving relative URIs, may use setPublicId to include a * public identifier, and may use setEncoding to specify the object's * character encoding.
* * @param byteStream The raw byte stream containing the document. * @see #setPublicId * @see #setSystemId * @see #setEncoding * @see #setByteStream * @see #setCharacterStream */ public InputSource (InputStream byteStream) { setByteStream(byteStream); } /** * Create a new input source with a character stream. * *Application writers should use setSystemId() to provide a base * for resolving relative URIs, and may use setPublicId to include a * public identifier.
* *The character stream shall not include a byte order mark.
* * @see #setPublicId * @see #setSystemId * @see #setByteStream * @see #setCharacterStream */ public InputSource (Reader characterStream) { setCharacterStream(characterStream); } /** * Set the public identifier for this input source. * *The public identifier is always optional: if the application * writer includes one, it will be provided as part of the * location information.
* * @param publicId The public identifier as a string. * @see #getPublicId * @see org.xml.sax.Locator#getPublicId * @see org.xml.sax.SAXParseException#getPublicId */ public void setPublicId (String publicId) { this.publicId = publicId; } /** * Get the public identifier for this input source. * * @return The public identifier, or null if none was supplied. * @see #setPublicId */ public String getPublicId () { return publicId; } /** * Set the system identifier for this input source. * *The system identifier is optional if there is a byte stream * or a character stream, but it is still useful to provide one, * since the application can use it to resolve relative URIs * and can include it in error messages and warnings (the parser * will attempt to open a connection to the URI only if * there is no byte stream or character stream specified).
* *If the application knows the character encoding of the * object pointed to by the system identifier, it can register * the encoding using the setEncoding method.
* *If the system identifier is a URL, it must be fully * resolved (it may not be a relative URL).
* * @param systemId The system identifier as a string. * @see #setEncoding * @see #getSystemId * @see org.xml.sax.Locator#getSystemId * @see org.xml.sax.SAXParseException#getSystemId */ public void setSystemId (String systemId) { this.systemId = systemId; } /** * Get the system identifier for this input source. * *The getEncoding method will return the character encoding * of the object pointed to, or null if unknown.
* *If the system ID is a URL, it will be fully resolved.
* * @return The system identifier, or null if none was supplied. * @see #setSystemId * @see #getEncoding */ public String getSystemId () { return systemId; } /** * Set the byte stream for this input source. * *The SAX parser will ignore this if there is also a character * stream specified, but it will use a byte stream in preference * to opening a URI connection itself.
* *If the application knows the character encoding of the * byte stream, it should set it with the setEncoding method.
* * @param byteStream A byte stream containing an XML document or * other entity. * @see #setEncoding * @see #getByteStream * @see #getEncoding * @see java.io.InputStream */ public void setByteStream (InputStream byteStream) { this.byteStream = byteStream; } /** * Get the byte stream for this input source. * *The getEncoding method will return the character * encoding for this byte stream, or null if unknown.
* * @return The byte stream, or null if none was supplied. * @see #getEncoding * @see #setByteStream */ public InputStream getByteStream () { return byteStream; } /** * Set the character encoding, if known. * *The encoding must be a string acceptable for an * XML encoding declaration (see section 4.3.3 of the XML 1.0 * recommendation).
* *This method has no effect when the application provides a * character stream.
* * @param encoding A string describing the character encoding. * @see #setSystemId * @see #setByteStream * @see #getEncoding */ public void setEncoding (String encoding) { this.encoding = encoding; } /** * Get the character encoding for a byte stream or URI. * This value will be ignored when the application provides a * character stream. * * @return The encoding, or null if none was supplied. * @see #setByteStream * @see #getSystemId * @see #getByteStream */ public String getEncoding () { return encoding; } /** * Set the character stream for this input source. * *If there is a character stream specified, the SAX parser * will ignore any byte stream and will not attempt to open * a URI connection to the system identifier.
* * @param characterStream The character stream containing the * XML document or other entity. * @see #getCharacterStream * @see java.io.Reader */ public void setCharacterStream (Reader characterStream) { this.characterStream = characterStream; } /** * Get the character stream for this input source. * * @return The character stream, or null if none was supplied. * @see #setCharacterStream */ public Reader getCharacterStream () { return characterStream; } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// private String publicId; private String systemId; private InputStream byteStream; private String encoding; private Reader characterStream; } // end of InputSource.java org/xml/sax/Locator.java 100644 0 0 12726 11146172375 12674 0 ustar 0 0 // SAX locator interface for document events. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: Locator.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Interface for associating a SAX event with a document location. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
If a SAX parser provides location information to the SAX * application, it does so by implementing this interface and then * passing an instance to the application using the content * handler's {@link org.xml.sax.ContentHandler#setDocumentLocator * setDocumentLocator} method. The application can use the * object to obtain the location of any other SAX event * in the XML source document.
* *Note that the results returned by the object will be valid only * during the scope of each callback method: the application * will receive unpredictable results if it attempts to use the * locator at any other time, or after parsing completes.
* *SAX parsers are not required to supply a locator, but they are * very strongly encouraged to do so. If the parser supplies a * locator, it must do so before reporting any other document events. * If no locator has been set by the time the application receives * the {@link org.xml.sax.ContentHandler#startDocument startDocument} * event, the application should assume that a locator is not * available.
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.ContentHandler#setDocumentLocator */ public interface Locator { /** * Return the public identifier for the current document event. * *The return value is the public identifier of the document * entity or of the external parsed entity in which the markup * triggering the event appears.
* * @return A string containing the public identifier, or * null if none is available. * @see #getSystemId */ public abstract String getPublicId (); /** * Return the system identifier for the current document event. * *The return value is the system identifier of the document * entity or of the external parsed entity in which the markup * triggering the event appears.
* *If the system identifier is a URL, the parser must resolve it * fully before passing it to the application. For example, a file * name must always be provided as a file:... URL, and other * kinds of relative URI are also resolved against their bases.
* * @return A string containing the system identifier, or null * if none is available. * @see #getPublicId */ public abstract String getSystemId (); /** * Return the line number where the current document event ends. * Lines are delimited by line ends, which are defined in * the XML specification. * *Warning: The return value from the method * is intended only as an approximation for the sake of diagnostics; * it is not intended to provide sufficient information * to edit the character content of the original XML document. * In some cases, these "line" numbers match what would be displayed * as columns, and in others they may not match the source text * due to internal entity expansion.
* *The return value is an approximation of the line number * in the document entity or external parsed entity where the * markup triggering the event appears.
* *If possible, the SAX driver should provide the line position * of the first character after the text associated with the document * event. The first line is line 1.
* * @return The line number, or -1 if none is available. * @see #getColumnNumber */ public abstract int getLineNumber (); /** * Return the column number where the current document event ends. * This is one-based number of Javachar
values since
* the last line end.
*
* Warning: The return value from the method * is intended only as an approximation for the sake of diagnostics; * it is not intended to provide sufficient information * to edit the character content of the original XML document. * For example, when lines contain combining character sequences, wide * characters, surrogate pairs, or bi-directional text, the value may * not correspond to the column in a text editor's display.
* *The return value is an approximation of the column number * in the document entity or external parsed entity where the * markup triggering the event appears.
* *If possible, the SAX driver should provide the line position * of the first character after the text associated with the document * event. The first column in each line is column 1.
* * @return The column number, or -1 if none is available. * @see #getLineNumber */ public abstract int getColumnNumber (); } // end of Locator.java org/xml/sax/Parser.java 100644 0 0 17306 11146172375 12524 0 ustar 0 0 // SAX parser interface. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: Parser.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; import java.io.IOException; import java.util.Locale; /** * Basic interface for SAX (Simple API for XML) parsers. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This was the main event supplier interface for SAX1; it has * been replaced in SAX2 by {@link org.xml.sax.XMLReader XMLReader}, * which includes Namespace support and sophisticated configurability * and extensibility.
* *All SAX1 parsers must implement this basic interface: it allows * applications to register handlers for different types of events * and to initiate a parse from a URI, or a character stream.
* *All SAX1 parsers must also implement a zero-argument constructor * (though other constructors are also allowed).
* *SAX1 parsers are reusable but not re-entrant: the application * may reuse a parser object (possibly with a different input source) * once the first parse has completed successfully, but it may not * invoke the parse() methods recursively within a parse.
* * @deprecated This interface has been replaced by the SAX2 * {@link org.xml.sax.XMLReader XMLReader} * interface, which includes Namespace support. * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.EntityResolver * @see org.xml.sax.DTDHandler * @see org.xml.sax.DocumentHandler * @see org.xml.sax.ErrorHandler * @see org.xml.sax.HandlerBase * @see org.xml.sax.InputSource */ public interface Parser { /** * Allow an application to request a locale for errors and warnings. * *SAX parsers are not required to provide localisation for errors * and warnings; if they cannot support the requested locale, * however, they must throw a SAX exception. Applications may * not request a locale change in the middle of a parse.
* * @param locale A Java Locale object. * @exception org.xml.sax.SAXException Throws an exception * (using the previous or default locale) if the * requested locale is not supported. * @see org.xml.sax.SAXException * @see org.xml.sax.SAXParseException */ public abstract void setLocale (Locale locale) throws SAXException; /** * Allow an application to register a custom entity resolver. * *If the application does not register an entity resolver, the * SAX parser will resolve system identifiers and open connections * to entities itself (this is the default behaviour implemented in * HandlerBase).
* *Applications may register a new or different entity resolver * in the middle of a parse, and the SAX parser must begin using * the new resolver immediately.
* * @param resolver The object for resolving entities. * @see EntityResolver * @see HandlerBase */ public abstract void setEntityResolver (EntityResolver resolver); /** * Allow an application to register a DTD event handler. * *If the application does not register a DTD handler, all DTD * events reported by the SAX parser will be silently * ignored (this is the default behaviour implemented by * HandlerBase).
* *Applications may register a new or different * handler in the middle of a parse, and the SAX parser must * begin using the new handler immediately.
* * @param handler The DTD handler. * @see DTDHandler * @see HandlerBase */ public abstract void setDTDHandler (DTDHandler handler); /** * Allow an application to register a document event handler. * *If the application does not register a document handler, all * document events reported by the SAX parser will be silently * ignored (this is the default behaviour implemented by * HandlerBase).
* *Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately.
* * @param handler The document handler. * @see DocumentHandler * @see HandlerBase */ public abstract void setDocumentHandler (DocumentHandler handler); /** * Allow an application to register an error event handler. * *If the application does not register an error event handler, * all error events reported by the SAX parser will be silently * ignored, except for fatalError, which will throw a SAXException * (this is the default behaviour implemented by HandlerBase).
* *Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately.
* * @param handler The error handler. * @see ErrorHandler * @see SAXException * @see HandlerBase */ public abstract void setErrorHandler (ErrorHandler handler); /** * Parse an XML document. * *The application can use this method to instruct the SAX parser * to begin parsing an XML document from any valid input * source (a character stream, a byte stream, or a URI).
* *Applications may not invoke this method while a parse is in * progress (they should create a new Parser instead for each * additional XML document). Once a parse is complete, an * application may reuse the same Parser object, possibly with a * different input source.
* * @param source The input source for the top-level of the * XML document. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. * @see org.xml.sax.InputSource * @see #parse(java.lang.String) * @see #setEntityResolver * @see #setDTDHandler * @see #setDocumentHandler * @see #setErrorHandler */ public abstract void parse (InputSource source) throws SAXException, IOException; /** * Parse an XML document from a system identifier (URI). * *This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact * equivalent of the following:
* ** parse(new InputSource(systemId)); ** *
If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser.
* * @param systemId The system identifier (URI). * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. * @see #parse(org.xml.sax.InputSource) */ public abstract void parse (String systemId) throws SAXException, IOException; } // end of Parser.java org/xml/sax/SAXException.java 100644 0 0 10132 11146172375 13570 0 ustar 0 0 // SAX exception class. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: SAXException.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Encapsulate a general SAX error or warning. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class can contain basic error or warning information from * either the XML parser or the application: a parser writer or * application writer can subclass it to provide additional * functionality. SAX handlers may throw this exception or * any exception subclassed from it.
* *If the application needs to pass through other types of * exceptions, it must wrap those exceptions in a SAXException * or an exception derived from a SAXException.
* *If the parser or application needs to include information about a * specific location in an XML document, it should use the * {@link org.xml.sax.SAXParseException SAXParseException} subclass.
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.SAXParseException */ public class SAXException extends Exception { /** * Create a new SAXException. */ public SAXException () { super(); this.exception = null; } /** * Create a new SAXException. * * @param message The error or warning message. */ public SAXException (String message) { super(message); this.exception = null; } /** * Create a new SAXException wrapping an existing exception. * *The existing exception will be embedded in the new * one, and its message will become the default message for * the SAXException.
* * @param e The exception to be wrapped in a SAXException. */ public SAXException (Exception e) { super(); this.exception = e; } /** * Create a new SAXException from an existing exception. * *The existing exception will be embedded in the new * one, but the new exception will have its own message.
* * @param message The detail message. * @param e The exception to be wrapped in a SAXException. */ public SAXException (String message, Exception e) { super(message); this.exception = e; } /** * Return a detail message for this exception. * *If there is an embedded exception, and if the SAXException * has no detail message of its own, this method will return * the detail message from the embedded exception.
* * @return The error or warning message. */ public String getMessage () { String message = super.getMessage(); if (message == null && exception != null) { return exception.getMessage(); } else { return message; } } /** * Return the embedded exception, if any. * * @return The embedded exception, or null if there is none. */ public Exception getException () { return exception; } /** * Override toString to pick up any embedded exception. * * @return A string representation of this exception. */ public String toString () { if (exception != null) { return exception.toString(); } else { return super.toString(); } } ////////////////////////////////////////////////////////////////////// // Internal state. ////////////////////////////////////////////////////////////////////// /** * @serial The embedded exception if tunnelling, or null. */ private Exception exception; // Added serialVersionUID to preserve binary compatibility static final long serialVersionUID = 583241635256073760L; } // end of SAXException.java org/xml/sax/SAXNotRecognizedException.java 100644 0 0 3013 11146172375 16243 0 ustar 0 0 // SAXNotRecognizedException.java - unrecognized feature or value. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the Public Domain. // $Id: SAXNotRecognizedException.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Exception class for an unrecognized identifier. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
An XMLReader will throw this exception when it finds an * unrecognized feature or property identifier; SAX applications and * extensions may use this class for other, similar purposes.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.SAXNotSupportedException */ public class SAXNotRecognizedException extends SAXException { /** * Default constructor. */ public SAXNotRecognizedException () { super(); } /** * Construct a new exception with the given message. * * @param message The text message of the exception. */ public SAXNotRecognizedException (String message) { super(message); } // Added serialVersionUID to preserve binary compatibility static final long serialVersionUID = 5440506620509557213L; } // end of SAXNotRecognizedException.java org/xml/sax/SAXNotSupportedException.java 100644 0 0 3134 11146172375 16143 0 ustar 0 0 // SAXNotSupportedException.java - unsupported feature or value. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the Public Domain. // $Id: SAXNotSupportedException.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Exception class for an unsupported operation. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
An XMLReader will throw this exception when it recognizes a * feature or property identifier, but cannot perform the requested * operation (setting a state or value). Other SAX2 applications and * extensions may use this class for similar purposes.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.SAXNotRecognizedException */ public class SAXNotSupportedException extends SAXException { /** * Construct a new exception with no message. */ public SAXNotSupportedException () { super(); } /** * Construct a new exception with the given message. * * @param message The text message of the exception. */ public SAXNotSupportedException (String message) { super(message); } // Added serialVersionUID to preserve binary compatibility static final long serialVersionUID = -1422818934641823846L; } // end of SAXNotSupportedException.java org/xml/sax/SAXParseException.java 100644 0 0 21740 11146172375 14572 0 ustar 0 0 // SAX exception class. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: SAXParseException.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Encapsulate an XML parse error or warning. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This exception may include information for locating the error * in the original XML document, as if it came from a {@link Locator} * object. Note that although the application * will receive a SAXParseException as the argument to the handlers * in the {@link org.xml.sax.ErrorHandler ErrorHandler} interface, * the application is not actually required to throw the exception; * instead, it can simply read the information in it and take a * different action.
* *Since this exception is a subclass of {@link org.xml.sax.SAXException * SAXException}, it inherits the ability to wrap another exception.
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.SAXException * @see org.xml.sax.Locator * @see org.xml.sax.ErrorHandler */ public class SAXParseException extends SAXException { ////////////////////////////////////////////////////////////////////// // Constructors. ////////////////////////////////////////////////////////////////////// /** * Create a new SAXParseException from a message and a Locator. * *This constructor is especially useful when an application is * creating its own exception from within a {@link org.xml.sax.ContentHandler * ContentHandler} callback.
* * @param message The error or warning message. * @param locator The locator object for the error or warning (may be * null). * @see org.xml.sax.Locator */ public SAXParseException (String message, Locator locator) { super(message); if (locator != null) { init(locator.getPublicId(), locator.getSystemId(), locator.getLineNumber(), locator.getColumnNumber()); } else { init(null, null, -1, -1); } } /** * Wrap an existing exception in a SAXParseException. * *This constructor is especially useful when an application is * creating its own exception from within a {@link org.xml.sax.ContentHandler * ContentHandler} callback, and needs to wrap an existing exception that is not a * subclass of {@link org.xml.sax.SAXException SAXException}.
* * @param message The error or warning message, or null to * use the message from the embedded exception. * @param locator The locator object for the error or warning (may be * null). * @param e Any exception. * @see org.xml.sax.Locator */ public SAXParseException (String message, Locator locator, Exception e) { super(message, e); if (locator != null) { init(locator.getPublicId(), locator.getSystemId(), locator.getLineNumber(), locator.getColumnNumber()); } else { init(null, null, -1, -1); } } /** * Create a new SAXParseException. * *This constructor is most useful for parser writers.
* *All parameters except the message are as if * they were provided by a {@link Locator}. For example, if the * system identifier is a URL (including relative filename), the * caller must resolve it fully before creating the exception.
* * * @param message The error or warning message. * @param publicId The public identifier of the entity that generated * the error or warning. * @param systemId The system identifier of the entity that generated * the error or warning. * @param lineNumber The line number of the end of the text that * caused the error or warning. * @param columnNumber The column number of the end of the text that * cause the error or warning. */ public SAXParseException (String message, String publicId, String systemId, int lineNumber, int columnNumber) { super(message); init(publicId, systemId, lineNumber, columnNumber); } /** * Create a new SAXParseException with an embedded exception. * *This constructor is most useful for parser writers who * need to wrap an exception that is not a subclass of * {@link org.xml.sax.SAXException SAXException}.
* *All parameters except the message and exception are as if * they were provided by a {@link Locator}. For example, if the * system identifier is a URL (including relative filename), the * caller must resolve it fully before creating the exception.
* * @param message The error or warning message, or null to use * the message from the embedded exception. * @param publicId The public identifier of the entity that generated * the error or warning. * @param systemId The system identifier of the entity that generated * the error or warning. * @param lineNumber The line number of the end of the text that * caused the error or warning. * @param columnNumber The column number of the end of the text that * cause the error or warning. * @param e Another exception to embed in this one. */ public SAXParseException (String message, String publicId, String systemId, int lineNumber, int columnNumber, Exception e) { super(message, e); init(publicId, systemId, lineNumber, columnNumber); } /** * Internal initialization method. * * @param publicId The public identifier of the entity which generated the exception, * or null. * @param systemId The system identifier of the entity which generated the exception, * or null. * @param lineNumber The line number of the error, or -1. * @param columnNumber The column number of the error, or -1. */ private void init (String publicId, String systemId, int lineNumber, int columnNumber) { this.publicId = publicId; this.systemId = systemId; this.lineNumber = lineNumber; this.columnNumber = columnNumber; } /** * Get the public identifier of the entity where the exception occurred. * * @return A string containing the public identifier, or null * if none is available. * @see org.xml.sax.Locator#getPublicId */ public String getPublicId () { return this.publicId; } /** * Get the system identifier of the entity where the exception occurred. * *If the system identifier is a URL, it will have been resolved * fully.
* * @return A string containing the system identifier, or null * if none is available. * @see org.xml.sax.Locator#getSystemId */ public String getSystemId () { return this.systemId; } /** * The line number of the end of the text where the exception occurred. * *The first line is line 1.
* * @return An integer representing the line number, or -1 * if none is available. * @see org.xml.sax.Locator#getLineNumber */ public int getLineNumber () { return this.lineNumber; } /** * The column number of the end of the text where the exception occurred. * *The first column in a line is position 1.
* * @return An integer representing the column number, or -1 * if none is available. * @see org.xml.sax.Locator#getColumnNumber */ public int getColumnNumber () { return this.columnNumber; } ////////////////////////////////////////////////////////////////////// // Internal state. ////////////////////////////////////////////////////////////////////// /** * @serial The public identifier, or null. * @see #getPublicId */ private String publicId; /** * @serial The system identifier, or null. * @see #getSystemId */ private String systemId; /** * @serial The line number, or -1. * @see #getLineNumber */ private int lineNumber; /** * @serial The column number, or -1. * @see #getColumnNumber */ private int columnNumber; // Added serialVersionUID to preserve binary compatibility static final long serialVersionUID = -5651165872476709336L; } // end of SAXParseException.java org/xml/sax/XMLFilter.java 100644 0 0 4152 11146172375 13051 0 ustar 0 0 // XMLFilter.java - filter SAX2 events. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the Public Domain. // $Id: XMLFilter.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; /** * Interface for an XML filter. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
An XML filter is like an XML reader, except that it obtains its * events from another XML reader rather than a primary source like * an XML document or database. Filters can modify a stream of * events as they pass on to the final application.
* *The XMLFilterImpl helper class provides a convenient base * for creating SAX2 filters, by passing on all {@link org.xml.sax.EntityResolver * EntityResolver}, {@link org.xml.sax.DTDHandler DTDHandler}, * {@link org.xml.sax.ContentHandler ContentHandler} and {@link org.xml.sax.ErrorHandler * ErrorHandler} events automatically.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.helpers.XMLFilterImpl */ public interface XMLFilter extends XMLReader { /** * Set the parent reader. * *This method allows the application to link the filter to * a parent reader (which may be another filter). The argument * may not be null.
* * @param parent The parent reader. */ public abstract void setParent (XMLReader parent); /** * Get the parent reader. * *This method allows the application to query the parent * reader (which may be another filter). It is generally a * bad idea to perform any operations on the parent reader * directly: they should all pass through this filter.
* * @return The parent filter, or null if none has been set. */ public abstract XMLReader getParent (); } // end of XMLFilter.java org/xml/sax/XMLReader.java 100644 0 0 36022 11146172375 13047 0 ustar 0 0 // XMLReader.java - read an XML document. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the Public Domain. // $Id: XMLReader.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax; import java.io.IOException; /** * Interface for reading an XML document using callbacks. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
Note: despite its name, this interface does * not extend the standard Java {@link java.io.Reader Reader} * interface, because reading XML is a fundamentally different activity * than reading character data.
* *XMLReader is the interface that an XML parser's SAX2 driver must * implement. This interface allows an application to set and * query features and properties in the parser, to register * event handlers for document processing, and to initiate * a document parse.
* *All SAX interfaces are assumed to be synchronous: the * {@link #parse parse} methods must not return until parsing * is complete, and readers must wait for an event-handler callback * to return before reporting the next event.
* *This interface replaces the (now deprecated) SAX 1.0 {@link * org.xml.sax.Parser Parser} interface. The XMLReader interface * contains two important enhancements over the old Parser * interface (as well as some minor ones):
* *There are adapters available to convert a SAX1 Parser to * a SAX2 XMLReader and vice-versa.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1+ (sax2r3pre1) * @see org.xml.sax.XMLFilter * @see org.xml.sax.helpers.ParserAdapter * @see org.xml.sax.helpers.XMLReaderAdapter */ public interface XMLReader { //////////////////////////////////////////////////////////////////// // Configuration. //////////////////////////////////////////////////////////////////// /** * Look up the value of a feature flag. * *The feature name is any fully-qualified URI. It is * possible for an XMLReader to recognize a feature name but * temporarily be unable to return its value. * Some feature values may be available only in specific * contexts, such as before, during, or after a parse. * Also, some feature values may not be programmatically accessible. * (In the case of an adapter for SAX1 {@link Parser}, there is no * implementation-independent way to expose whether the underlying * parser is performing validation, expanding external entities, * and so forth.)
* *All XMLReaders are required to recognize the * http://xml.org/sax/features/namespaces and the * http://xml.org/sax/features/namespace-prefixes feature names.
* *Typical usage is something like this:
* ** XMLReader r = new MySAXDriver(); * * // try to activate validation * try { * r.setFeature("http://xml.org/sax/features/validation", true); * } catch (SAXException e) { * System.err.println("Cannot activate validation."); * } * * // register event handlers * r.setContentHandler(new MyContentHandler()); * r.setErrorHandler(new MyErrorHandler()); * * // parse the first document * try { * r.parse("http://www.foo.com/mydoc.xml"); * } catch (IOException e) { * System.err.println("I/O exception reading XML document"); * } catch (SAXException e) { * System.err.println("XML exception reading document."); * } ** *
Implementors are free (and encouraged) to invent their own features, * using names built on their own URIs.
* * @param name The feature name, which is a fully-qualified URI. * @return The current value of the feature (true or false). * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * XMLReader recognizes the feature name but * cannot determine its value at this time. * @see #setFeature */ public boolean getFeature (String name) throws SAXNotRecognizedException, SAXNotSupportedException; /** * Set the value of a feature flag. * *The feature name is any fully-qualified URI. It is * possible for an XMLReader to expose a feature value but * to be unable to change the current value. * Some feature values may be immutable or mutable only * in specific contexts, such as before, during, or after * a parse.
* *All XMLReaders are required to support setting * http://xml.org/sax/features/namespaces to true and * http://xml.org/sax/features/namespace-prefixes to false.
* * @param name The feature name, which is a fully-qualified URI. * @param value The requested value of the feature (true or false). * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * XMLReader recognizes the feature name but * cannot set the requested value. * @see #getFeature */ public void setFeature (String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException; /** * Look up the value of a property. * *The property name is any fully-qualified URI. It is * possible for an XMLReader to recognize a property name but * temporarily be unable to return its value. * Some property values may be available only in specific * contexts, such as before, during, or after a parse.
* *XMLReaders are not required to recognize any specific * property names, though an initial core set is documented for * SAX2.
* *Implementors are free (and encouraged) to invent their own properties, * using names built on their own URIs.
* * @param name The property name, which is a fully-qualified URI. * @return The current value of the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * XMLReader recognizes the property name but * cannot determine its value at this time. * @see #setProperty */ public Object getProperty (String name) throws SAXNotRecognizedException, SAXNotSupportedException; /** * Set the value of a property. * *The property name is any fully-qualified URI. It is * possible for an XMLReader to recognize a property name but * to be unable to change the current value. * Some property values may be immutable or mutable only * in specific contexts, such as before, during, or after * a parse.
* *XMLReaders are not required to recognize setting * any specific property names, though a core set is defined by * SAX2.
* *This method is also the standard mechanism for setting * extended handlers.
* * @param name The property name, which is a fully-qualified URI. * @param value The requested value for the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception org.xml.sax.SAXNotSupportedException When the * XMLReader recognizes the property name but * cannot set the requested value. */ public void setProperty (String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException; //////////////////////////////////////////////////////////////////// // Event handlers. //////////////////////////////////////////////////////////////////// /** * Allow an application to register an entity resolver. * *If the application does not register an entity resolver, * the XMLReader will perform its own default resolution.
* *Applications may register a new or different resolver in the * middle of a parse, and the SAX parser must begin using the new * resolver immediately.
* * @param resolver The entity resolver. * @see #getEntityResolver */ public void setEntityResolver (EntityResolver resolver); /** * Return the current entity resolver. * * @return The current entity resolver, or null if none * has been registered. * @see #setEntityResolver */ public EntityResolver getEntityResolver (); /** * Allow an application to register a DTD event handler. * *If the application does not register a DTD handler, all DTD * events reported by the SAX parser will be silently ignored.
* *Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately.
* * @param handler The DTD handler. * @see #getDTDHandler */ public void setDTDHandler (DTDHandler handler); /** * Return the current DTD handler. * * @return The current DTD handler, or null if none * has been registered. * @see #setDTDHandler */ public DTDHandler getDTDHandler (); /** * Allow an application to register a content event handler. * *If the application does not register a content handler, all * content events reported by the SAX parser will be silently * ignored.
* *Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately.
* * @param handler The content handler. * @see #getContentHandler */ public void setContentHandler (ContentHandler handler); /** * Return the current content handler. * * @return The current content handler, or null if none * has been registered. * @see #setContentHandler */ public ContentHandler getContentHandler (); /** * Allow an application to register an error event handler. * *If the application does not register an error handler, all * error events reported by the SAX parser will be silently * ignored; however, normal processing may not continue. It is * highly recommended that all SAX applications implement an * error handler to avoid unexpected bugs.
* *Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately.
* * @param handler The error handler. * @see #getErrorHandler */ public void setErrorHandler (ErrorHandler handler); /** * Return the current error handler. * * @return The current error handler, or null if none * has been registered. * @see #setErrorHandler */ public ErrorHandler getErrorHandler (); //////////////////////////////////////////////////////////////////// // Parsing. //////////////////////////////////////////////////////////////////// /** * Parse an XML document. * *The application can use this method to instruct the XML * reader to begin parsing an XML document from any valid input * source (a character stream, a byte stream, or a URI).
* *Applications may not invoke this method while a parse is in * progress (they should create a new XMLReader instead for each * nested XML document). Once a parse is complete, an * application may reuse the same XMLReader object, possibly with a * different input source. * Configuration of the XMLReader object (such as handler bindings and * values established for feature flags and properties) is unchanged * by completion of a parse, unless the definition of that aspect of * the configuration explicitly specifies other behavior. * (For example, feature flags or properties exposing * characteristics of the document being parsed.) *
* *During the parse, the XMLReader will provide information * about the XML document through the registered event * handlers.
* *This method is synchronous: it will not return until parsing * has ended. If a client application wants to terminate * parsing early, it should throw an exception.
* * @param input The input source for the top-level of the * XML document. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. * @see org.xml.sax.InputSource * @see #parse(java.lang.String) * @see #setEntityResolver * @see #setDTDHandler * @see #setContentHandler * @see #setErrorHandler */ public void parse (InputSource input) throws IOException, SAXException; /** * Parse an XML document from a system identifier (URI). * *This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact * equivalent of the following:
* ** parse(new InputSource(systemId)); ** *
If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser.
* * @param systemId The system identifier (URI). * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. * @see #parse(org.xml.sax.InputSource) */ public void parse (String systemId) throws IOException, SAXException; } org/xml/sax/ext/Attributes2.java 100644 0 0 12443 11146172374 14274 0 ustar 0 0 // Attributes2.java - extended Attributes // http://www.saxproject.org // Public Domain: no warranty. // $Id: Attributes2.java 226184 2005-04-08 10:53:24Z neeraj $ 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 http://xml.org/sax/features/use-attributes2 * feature flag will have the value true. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. ** *
XMLReader implementations are not required to support this * information, and it is not part of core-only SAX2 distributions.
* *Note that if an attribute was defaulted (!isSpecified()) * it will of necessity also have been declared (isDeclared()) * in the DTD. * Similarly if an attribute's type is anything except CDATA, then it * must have been declared. *
* * @since SAX 2.0 (extensions 1.1 alpha) * @author David Brownell * @version TBS */ 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). * *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 * qName. * * @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. * *
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 * qName. * * @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); } org/xml/sax/ext/Attributes2Impl.java 100644 0 0 22163 11146172374 15116 0 ustar 0 0 // Attributes2Impl.java - extended AttributesImpl // http://www.saxproject.org // Public Domain: no warranty. // $Id: Attributes2Impl.java 226184 2005-04-08 10:53:24Z neeraj $ 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. * *
* This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. ** *
This is not part of core-only SAX2 distributions.
* *The specified 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 declared flag for each attribute will * always be false, except for defaulted attributes (specified * 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 declared flag to match. *
* * @since SAX 2.0 (extensions 1.1 alpha) * @author David Brownell * @version TBS */ public class Attributes2Impl extends AttributesImpl implements Attributes2 { private boolean declared []; private boolean specified []; /** * Construct a new, empty Attributes2Impl object. */ public Attributes2Impl () { } /** * Copy an existing Attributes or Attributes2 object. * If the object implements Attributes2, values of the * specified and declared 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 declared). * *This constructor is especially useful inside a * {@link org.xml.sax.ContentHandler#startElement startElement} event.
* * @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}. * *Unless the attribute type 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 (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; } } org/xml/sax/ext/DeclHandler.java 100644 0 0 13251 11146172374 14227 0 ustar 0 0 // DeclHandler.java - Optional handler for DTD declaration events. // http://www.saxproject.org // Public Domain: no warranty. // $Id: DeclHandler.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.ext; import org.xml.sax.SAXException; /** * SAX2 extension handler for DTD declaration events. * *
* This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
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.
* *Note that data-related DTD declarations (unparsed entities and * notations) are already reported through the {@link * org.xml.sax.DTDHandler DTDHandler} interface.
* *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.
* *To set the DeclHandler for an XML reader, use the
* {@link org.xml.sax.XMLReader#setProperty setProperty} method
* with the property name
* http://xml.org/sax/properties/declaration-handler
* 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.
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.
* * @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. * *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.
* *The value will be the value as reported to applications, * appropriately normalized and with entity and character * references expanded.
* * @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. * *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.
* * @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. * *Only the effective (first) declaration for each entity * will be reported.
* *If the system identifier is a URL, the parser must resolve it * fully before passing it to the application.
* * @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 org/xml/sax/ext/DefaultHandler2.java 100644 0 0 7534 11146172374 15015 0 ustar 0 0 // DefaultHandler2.java - extended DefaultHandler // http://www.saxproject.org // Public Domain: no warranty. // $Id: DefaultHandler2.java 226184 2005-04-08 10:53:24Z neeraj $ 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. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. ** *
Note: this class might yet learn that the * ContentHandler.setDocumentLocator() call might be passed a * {@link Locator2} object, and that the * ContentHandler.startElement() call might be passed a * {@link Attributes2} object. * * @since SAX 2.0 (extensions 1.1 alpha) * @author David Brownell * @version TBS */ 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 name and baseURI, and * with the systemId 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); } } org/xml/sax/ext/EntityResolver2.java 100644 0 0 22676 11146172374 15155 0 ustar 0 0 // EntityResolver2.java - Extended SAX entity resolver. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: EntityResolver2.java 226184 2005-04-08 10:53:24Z neeraj $ 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 instead of the older (SAX 1.0) * {@link EntityResolver#resolveEntity EntityResolver.resolveEntity()} method. * *
* This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. ** *
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 * http://xml.org/sax/features/use-entity-resolver2 feature flag * set to true (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. *
* *That supports three categories of application that modify entity * resolution. Old Style applications won't know about this interface; * they will provide an EntityResolver. * Transitional Mode provide an EntityResolver2 and automatically * get the benefit of its methods in any systems (parsers or other tools) * supporting it, due to polymorphism. * Both Old Style and Transitional Mode applications will * work with any SAX2 parser. * New style 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. *
* * @see org.xml.sax.XMLReader#setEntityResolver * * @since SAX 2.0 (extensions 1.1 alpha) * @author David Brownell * @version TBD */ 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. * *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:
* ** ... 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", ...); ** *
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.
* *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.
* *Warning: 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. *
* * @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 OASIS XML Catalogs specification. * *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.
* *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.
* * @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; } org/xml/sax/ext/LexicalHandler.java 100644 0 0 20046 11146172374 14741 0 ustar 0 0 // LexicalHandler.java - optional handler for lexical parse events. // http://www.saxproject.org // Public Domain: no warranty. // $Id: LexicalHandler.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.ext; import org.xml.sax.SAXException; /** * SAX2 extension handler for lexical events. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
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.
* *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.
* *To set the LexicalHandler for an XML reader, use the
* {@link org.xml.sax.XMLReader#setProperty setProperty} method
* with the property name
* http://xml.org/sax/properties/lexical-handler
* 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.
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.
* *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.
* *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.
* * @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. * *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.
* * @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. * *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
* http://xml.org/sax/features/lexical-handler/parameter-entities
* feature to query or control the reporting of parameter entities.
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]".
* *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.
* *Note that skipped entities will be reported through the * {@link org.xml.sax.ContentHandler#skippedEntity skippedEntity} * event, which is part of the ContentHandler interface.
* *Because of the streaming event model that SAX uses, some * entity boundaries cannot be reported under any * circumstances:
* *These will be silently expanded, with no indication of where * the original entity boundaries were.
* *Note also that the boundaries of character references (which * are not really entities anyway) are not reported.
* *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. * *
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.
* * @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. * *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).
* * @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 org/xml/sax/ext/Locator2.java 100644 0 0 6022 11146172374 13525 0 ustar 0 0 // Locator2.java - extended Locator // http://www.saxproject.org // Public Domain: no warranty. // $Id: Locator2.java 226236 2005-06-17 03:10:33Z mrglavas $ 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 * http://xml.org/sax/features/use-locator2 feature * flag will have the value true. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. ** *
XMLReader implementations are not required to support this * information, and it is not part of core-only SAX2 distributions.
* * @since SAX 2.0 (extensions 1.1 alpha) * @author David Brownell * @version TBS */ 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 * <?xml version='...' ...?> 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 <?xml ...encoding='...'?> 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. * *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. * *
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. * *
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 (); } org/xml/sax/ext/Locator2Impl.java 100644 0 0 5373 11146172374 14357 0 ustar 0 0 // Locator2Impl.java - extended LocatorImpl // http://www.saxproject.org // Public Domain: no warranty. // $Id: Locator2Impl.java 226184 2005-04-08 10:53:24Z neeraj $ 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. * *
* This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. ** *
This is not part of core-only SAX2 distributions.
* * @since SAX 2.0.2 * @author David Brownell * @version TBS */ 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 * encoding and versionstrings are copied, * otherwise they set to null. * * @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; } } org/xml/sax/ext/package.html 100644 0 0 3214 11146172374 13456 0 ustar 0 0This package contains interfaces to SAX2 facilities that conformant SAX drivers won't necessarily support.
See http://www.saxproject.org for more information about SAX.
This package is independent of the SAX2 core, though the functionality exposed generally needs to be implemented within a parser core. That independence has several consequences:
org.xml.sax.helpers.DefaultHandler
or
org.xml.sax.helpers.XMLFilterImpl
classes.
You can subclass these if you need such behavior, or
use the helper classes found here.This package, SAX2-ext, is a standardized extension to SAX2. It is designed both to allow SAX parsers to pass certain types of information to applications, and to serve as a simple model for other SAX2 parser extension packages. Not all such extension packages should need to be recognized directly by parsers, however. As an example, most validation systems can be cleanly layered on top of parsers supporting the standardized SAX2 interfaces.
org/xml/sax/helpers/AttributeListImpl.java 100644 0 0 21664 11146172375 16355 0 ustar 0 0 // SAX default implementation for AttributeList. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: AttributeListImpl.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import org.xml.sax.AttributeList; import java.util.Vector; /** * Default implementation for AttributeList. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
AttributeList implements the deprecated SAX1 {@link * org.xml.sax.AttributeList AttributeList} interface, and has been * replaced by the new SAX2 {@link org.xml.sax.helpers.AttributesImpl * AttributesImpl} interface.
* *This class provides a convenience implementation of the SAX * {@link org.xml.sax.AttributeList AttributeList} interface. This * implementation is useful both for SAX parser writers, who can use * it to provide attributes to the application, and for SAX application * writers, who can use it to create a persistent copy of an element's * attribute specifications:
* ** private AttributeList myatts; * * public void startElement (String name, AttributeList atts) * { * // create a persistent copy of the attribute list * // for use outside this method * myatts = new AttributeListImpl(atts); * [...] * } ** *
Please note that SAX parsers are not required to use this * class to provide an implementation of AttributeList; it is * supplied only as an optional convenience. In particular, * parser writers are encouraged to invent more efficient * implementations.
* * @deprecated This class implements a deprecated interface, * {@link org.xml.sax.AttributeList AttributeList}; * that interface has been replaced by * {@link org.xml.sax.Attributes Attributes}, * which is implemented in the * {@link org.xml.sax.helpers.AttributesImpl * AttributesImpl} helper class. * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.AttributeList * @see org.xml.sax.DocumentHandler#startElement */ public class AttributeListImpl implements AttributeList { /** * Create an empty attribute list. * *This constructor is most useful for parser writers, who * will use it to create a single, reusable attribute list that * can be reset with the clear method between elements.
* * @see #addAttribute * @see #clear */ public AttributeListImpl () { } /** * Construct a persistent copy of an existing attribute list. * *This constructor is most useful for application writers, * who will use it to create a persistent copy of an existing * attribute list.
* * @param atts The attribute list to copy * @see org.xml.sax.DocumentHandler#startElement */ public AttributeListImpl (AttributeList atts) { setAttributeList(atts); } //////////////////////////////////////////////////////////////////// // Methods specific to this class. //////////////////////////////////////////////////////////////////// /** * Set the attribute list, discarding previous contents. * *This method allows an application writer to reuse an * attribute list easily.
* * @param atts The attribute list to copy. */ public void setAttributeList (AttributeList atts) { int count = atts.getLength(); clear(); for (int i = 0; i < count; i++) { addAttribute(atts.getName(i), atts.getType(i), atts.getValue(i)); } } /** * Add an attribute to an attribute list. * *This method is provided for SAX parser writers, to allow them * to build up an attribute list incrementally before delivering * it to the application.
* * @param name The attribute name. * @param type The attribute type ("NMTOKEN" for an enumeration). * @param value The attribute value (must not be null). * @see #removeAttribute * @see org.xml.sax.DocumentHandler#startElement */ public void addAttribute (String name, String type, String value) { names.addElement(name); types.addElement(type); values.addElement(value); } /** * Remove an attribute from the list. * *SAX application writers can use this method to filter an * attribute out of an AttributeList. Note that invoking this * method will change the length of the attribute list and * some of the attribute's indices.
* *If the requested attribute is not in the list, this is * a no-op.
* * @param name The attribute name. * @see #addAttribute */ public void removeAttribute (String name) { int i = names.indexOf(name); if (i >= 0) { names.removeElementAt(i); types.removeElementAt(i); values.removeElementAt(i); } } /** * Clear the attribute list. * *SAX parser writers can use this method to reset the attribute * list between DocumentHandler.startElement events. Normally, * it will make sense to reuse the same AttributeListImpl object * rather than allocating a new one each time.
* * @see org.xml.sax.DocumentHandler#startElement */ public void clear () { names.removeAllElements(); types.removeAllElements(); values.removeAllElements(); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.AttributeList //////////////////////////////////////////////////////////////////// /** * Return the number of attributes in the list. * * @return The number of attributes in the list. * @see org.xml.sax.AttributeList#getLength */ public int getLength () { return names.size(); } /** * Get the name of an attribute (by position). * * @param i The position of the attribute in the list. * @return The attribute name as a string, or null if there * is no attribute at that position. * @see org.xml.sax.AttributeList#getName(int) */ public String getName (int i) { if (i < 0) { return null; } try { return (String)names.elementAt(i); } catch (ArrayIndexOutOfBoundsException e) { return null; } } /** * Get the type of an attribute (by position). * * @param i The position of the attribute in the list. * @return The attribute type as a string ("NMTOKEN" for an * enumeration, and "CDATA" if no declaration was * read), or null if there is no attribute at * that position. * @see org.xml.sax.AttributeList#getType(int) */ public String getType (int i) { if (i < 0) { return null; } try { return (String)types.elementAt(i); } catch (ArrayIndexOutOfBoundsException e) { return null; } } /** * Get the value of an attribute (by position). * * @param i The position of the attribute in the list. * @return The attribute value as a string, or null if * there is no attribute at that position. * @see org.xml.sax.AttributeList#getValue(int) */ public String getValue (int i) { if (i < 0) { return null; } try { return (String)values.elementAt(i); } catch (ArrayIndexOutOfBoundsException e) { return null; } } /** * Get the type of an attribute (by name). * * @param name The attribute name. * @return The attribute type as a string ("NMTOKEN" for an * enumeration, and "CDATA" if no declaration was * read). * @see org.xml.sax.AttributeList#getType(java.lang.String) */ public String getType (String name) { return getType(names.indexOf(name)); } /** * Get the value of an attribute (by name). * * @param name The attribute name. * @see org.xml.sax.AttributeList#getValue(java.lang.String) */ public String getValue (String name) { return getValue(names.indexOf(name)); } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// Vector names = new Vector(); Vector types = new Vector(); Vector values = new Vector(); } // end of AttributeListImpl.java org/xml/sax/helpers/AttributesImpl.java 100644 0 0 42264 11146172375 15703 0 ustar 0 0 // AttributesImpl.java - default implementation of Attributes. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the public domain. // $Id: AttributesImpl.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import org.xml.sax.Attributes; /** * Default implementation of the Attributes interface. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class provides a default implementation of the SAX2 * {@link org.xml.sax.Attributes Attributes} interface, with the * addition of manipulators so that the list can be modified or * reused.
* *There are two typical uses of this class:
* *This class replaces the now-deprecated SAX1 {@link * org.xml.sax.helpers.AttributeListImpl AttributeListImpl} * class; in addition to supporting the updated Attributes * interface rather than the deprecated {@link org.xml.sax.AttributeList * AttributeList} interface, it also includes a much more efficient * implementation using a single array rather than a set of Vectors.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) */ public class AttributesImpl implements Attributes { //////////////////////////////////////////////////////////////////// // Constructors. //////////////////////////////////////////////////////////////////// /** * Construct a new, empty AttributesImpl object. */ public AttributesImpl () { length = 0; data = null; } /** * Copy an existing Attributes object. * *This constructor is especially useful inside a * {@link org.xml.sax.ContentHandler#startElement startElement} event.
* * @param atts The existing Attributes object. */ public AttributesImpl (Attributes atts) { setAttributes(atts); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.Attributes. //////////////////////////////////////////////////////////////////// /** * Return the number of attributes in the list. * * @return The number of attributes in the list. * @see org.xml.sax.Attributes#getLength */ public int getLength () { return length; } /** * Return an attribute's Namespace URI. * * @param index The attribute's index (zero-based). * @return The Namespace URI, the empty string if none is * available, or null if the index is out of range. * @see org.xml.sax.Attributes#getURI */ public String getURI (int index) { if (index >= 0 && index < length) { return data[index*5]; } else { return null; } } /** * Return an attribute's local name. * * @param index The attribute's index (zero-based). * @return The attribute's local name, the empty string if * none is available, or null if the index if out of range. * @see org.xml.sax.Attributes#getLocalName */ public String getLocalName (int index) { if (index >= 0 && index < length) { return data[index*5+1]; } else { return null; } } /** * Return an attribute's qualified (prefixed) name. * * @param index The attribute's index (zero-based). * @return The attribute's qualified name, the empty string if * none is available, or null if the index is out of bounds. * @see org.xml.sax.Attributes#getQName */ public String getQName (int index) { if (index >= 0 && index < length) { return data[index*5+2]; } else { return null; } } /** * Return an attribute's type by index. * * @param index The attribute's index (zero-based). * @return The attribute's type, "CDATA" if the type is unknown, or null * if the index is out of bounds. * @see org.xml.sax.Attributes#getType(int) */ public String getType (int index) { if (index >= 0 && index < length) { return data[index*5+3]; } else { return null; } } /** * Return an attribute's value by index. * * @param index The attribute's index (zero-based). * @return The attribute's value or null if the index is out of bounds. * @see org.xml.sax.Attributes#getValue(int) */ public String getValue (int index) { if (index >= 0 && index < length) { return data[index*5+4]; } else { return null; } } /** * Look up an attribute's index by Namespace name. * *In many cases, it will be more efficient to look up the name once and * use the index query methods rather than using the name query methods * repeatedly.
* * @param uri The attribute's Namespace URI, or the empty * string if none is available. * @param localName The attribute's local name. * @return The attribute's index, or -1 if none matches. * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String) */ public int getIndex (String uri, String localName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i].equals(uri) && data[i+1].equals(localName)) { return i / 5; } } return -1; } /** * Look up an attribute's index by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's index, or -1 if none matches. * @see org.xml.sax.Attributes#getIndex(java.lang.String) */ public int getIndex (String qName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i+2].equals(qName)) { return i / 5; } } return -1; } /** * Look up an attribute's type by Namespace-qualified name. * * @param uri The Namespace URI, or the empty string for a name * with no explicit Namespace URI. * @param localName The local name. * @return The attribute's type, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getType(java.lang.String,java.lang.String) */ public String getType (String uri, String localName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i].equals(uri) && data[i+1].equals(localName)) { return data[i+3]; } } return null; } /** * Look up an attribute's type by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's type, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getType(java.lang.String) */ public String getType (String qName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i+2].equals(qName)) { return data[i+3]; } } return null; } /** * Look up an attribute's value by Namespace-qualified name. * * @param uri The Namespace URI, or the empty string for a name * with no explicit Namespace URI. * @param localName The local name. * @return The attribute's value, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getValue(java.lang.String,java.lang.String) */ public String getValue (String uri, String localName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i].equals(uri) && data[i+1].equals(localName)) { return data[i+4]; } } return null; } /** * Look up an attribute's value by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's value, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getValue(java.lang.String) */ public String getValue (String qName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i+2].equals(qName)) { return data[i+4]; } } return null; } //////////////////////////////////////////////////////////////////// // Manipulators. //////////////////////////////////////////////////////////////////// /** * Clear the attribute list for reuse. * *Note that little memory is freed by this call: * the current array is kept so it can be * reused.
*/ public void clear () { if (data != null) { for (int i = 0; i < (length * 5); i++) data [i] = null; } length = 0; } /** * Copy an entire Attributes object. * *It may be more efficient to reuse an existing object * rather than constantly allocating new ones.
* * @param atts The attributes to copy. */ public void setAttributes (Attributes atts) { clear(); length = atts.getLength(); if (length > 0) { data = new String[length*5]; for (int i = 0; i < length; i++) { data[i*5] = atts.getURI(i); data[i*5+1] = atts.getLocalName(i); data[i*5+2] = atts.getQName(i); data[i*5+3] = atts.getType(i); data[i*5+4] = atts.getValue(i); } } } /** * Add an attribute to the end of the list. * *For the sake of speed, this method does no checking * to see if the attribute is already in the list: that is * the responsibility of the application.
* * @param uri The Namespace URI, or the empty string if * none is available or Namespace processing is not * being performed. * @param localName The local name, or the empty string if * Namespace processing is not being performed. * @param qName The qualified (prefixed) name, or the empty string * if qualified names are not available. * @param type The attribute type as a string. * @param value The attribute value. */ public void addAttribute (String uri, String localName, String qName, String type, String value) { ensureCapacity(length+1); data[length*5] = uri; data[length*5+1] = localName; data[length*5+2] = qName; data[length*5+3] = type; data[length*5+4] = value; length++; } /** * Set an attribute in the list. * *For the sake of speed, this method does no checking * for name conflicts or well-formedness: such checks are the * responsibility of the application.
* * @param index The index of the attribute (zero-based). * @param uri The Namespace URI, or the empty string if * none is available or Namespace processing is not * being performed. * @param localName The local name, or the empty string if * Namespace processing is not being performed. * @param qName The qualified name, or the empty string * if qualified names are not available. * @param type The attribute type as a string. * @param value The attribute value. * @exception java.lang.ArrayIndexOutOfBoundsException When the * supplied index does not point to an attribute * in the list. */ public void setAttribute (int index, String uri, String localName, String qName, String type, String value) { if (index >= 0 && index < length) { data[index*5] = uri; data[index*5+1] = localName; data[index*5+2] = qName; data[index*5+3] = type; data[index*5+4] = value; } else { badIndex(index); } } /** * Remove an attribute from the list. * * @param index The index of the attribute (zero-based). * @exception java.lang.ArrayIndexOutOfBoundsException When the * supplied index does not point to an attribute * in the list. */ public void removeAttribute (int index) { if (index >= 0 && index < length) { if (index < length - 1) { System.arraycopy(data, (index+1)*5, data, index*5, (length-index-1)*5); } index = (length - 1) * 5; data [index++] = null; data [index++] = null; data [index++] = null; data [index++] = null; data [index] = null; length--; } else { badIndex(index); } } /** * Set the Namespace URI of a specific attribute. * * @param index The index of the attribute (zero-based). * @param uri The attribute's Namespace URI, or the empty * string for none. * @exception java.lang.ArrayIndexOutOfBoundsException When the * supplied index does not point to an attribute * in the list. */ public void setURI (int index, String uri) { if (index >= 0 && index < length) { data[index*5] = uri; } else { badIndex(index); } } /** * Set the local name of a specific attribute. * * @param index The index of the attribute (zero-based). * @param localName The attribute's local name, or the empty * string for none. * @exception java.lang.ArrayIndexOutOfBoundsException When the * supplied index does not point to an attribute * in the list. */ public void setLocalName (int index, String localName) { if (index >= 0 && index < length) { data[index*5+1] = localName; } else { badIndex(index); } } /** * Set the qualified name of a specific attribute. * * @param index The index of the attribute (zero-based). * @param qName The attribute's qualified name, or the empty * string for none. * @exception java.lang.ArrayIndexOutOfBoundsException When the * supplied index does not point to an attribute * in the list. */ public void setQName (int index, String qName) { if (index >= 0 && index < length) { data[index*5+2] = qName; } else { badIndex(index); } } /** * Set the type of a specific attribute. * * @param index The index of the attribute (zero-based). * @param type The attribute's type. * @exception java.lang.ArrayIndexOutOfBoundsException When the * supplied index does not point to an attribute * in the list. */ public void setType (int index, String type) { if (index >= 0 && index < length) { data[index*5+3] = type; } else { badIndex(index); } } /** * Set the value of a specific attribute. * * @param index The index of the attribute (zero-based). * @param value The attribute's value. * @exception java.lang.ArrayIndexOutOfBoundsException When the * supplied index does not point to an attribute * in the list. */ public void setValue (int index, String value) { if (index >= 0 && index < length) { data[index*5+4] = value; } else { badIndex(index); } } //////////////////////////////////////////////////////////////////// // Internal methods. //////////////////////////////////////////////////////////////////// /** * Ensure the internal array's capacity. * * @param n The minimum number of attributes that the array must * be able to hold. */ private void ensureCapacity (int n) { if (n <= 0) { return; } int max; if (data == null || data.length == 0) { max = 25; } else if (data.length >= n * 5) { return; } else { max = data.length; } while (max < n * 5) { max *= 2; } String newData[] = new String[max]; if (length > 0) { System.arraycopy(data, 0, newData, 0, length*5); } data = newData; } /** * Report a bad array index in a manipulator. * * @param index The index to report. * @exception java.lang.ArrayIndexOutOfBoundsException Always. */ private void badIndex (int index) throws ArrayIndexOutOfBoundsException { String msg = "Attempt to modify attribute at illegal index: " + index; throw new ArrayIndexOutOfBoundsException(msg); } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// int length; String data []; } // end of AttributesImpl.java org/xml/sax/helpers/DefaultHandler.java 100644 0 0 40627 11146172375 15616 0 ustar 0 0 // DefaultHandler.java - default implementation of the core handlers. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the public domain. // $Id: DefaultHandler.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import java.io.IOException; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.Attributes; import org.xml.sax.EntityResolver; import org.xml.sax.DTDHandler; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; /** * Default base class for SAX2 event handlers. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class is available as a convenience base class for SAX2 * applications: it provides default implementations for all of the * callbacks in the four core SAX2 handler classes:
* *Application writers can extend this class when they need to * implement only part of an interface; parser writers can * instantiate this class to provide default handlers when the * application has not supplied its own.
* *This class replaces the deprecated SAX1 * {@link org.xml.sax.HandlerBase HandlerBase} class.
* * @since SAX 2.0 * @author David Megginson, * @version 2.0.1 (sax2r2) * @see org.xml.sax.EntityResolver * @see org.xml.sax.DTDHandler * @see org.xml.sax.ContentHandler * @see org.xml.sax.ErrorHandler */ public class DefaultHandler implements EntityResolver, DTDHandler, ContentHandler, ErrorHandler { //////////////////////////////////////////////////////////////////// // Default implementation of the EntityResolver interface. //////////////////////////////////////////////////////////////////// /** * Resolve an external entity. * *Always return null, so that the parser will use the system * identifier provided in the XML document. This method implements * the SAX default behaviour: application writers can override it * in a subclass to do special translations such as catalog lookups * or URI redirection.
* * @param publicId The public identifer, or null if none is * available. * @param systemId The system identifier provided in the XML * document. * @return The new input source, or null to require the * default behaviour. * @exception java.io.IOException If there is an error setting * up the new input source. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.EntityResolver#resolveEntity */ public InputSource resolveEntity (String publicId, String systemId) throws IOException, SAXException { return null; } //////////////////////////////////////////////////////////////////// // Default implementation of DTDHandler interface. //////////////////////////////////////////////////////////////////// /** * Receive notification of a notation declaration. * *By default, do nothing. Application writers may override this * method in a subclass if they wish to keep track of the notations * declared in a document.
* * @param name The notation name. * @param publicId The notation public identifier, or null if not * available. * @param systemId The notation system identifier. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DTDHandler#notationDecl */ public void notationDecl (String name, String publicId, String systemId) throws SAXException { // no op } /** * Receive notification of an unparsed entity declaration. * *By default, do nothing. Application writers may override this * method in a subclass to keep track of the unparsed entities * declared in a document.
* * @param name The entity name. * @param publicId The entity public identifier, or null if not * available. * @param systemId The entity system identifier. * @param notationName The name of the associated notation. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.DTDHandler#unparsedEntityDecl */ public void unparsedEntityDecl (String name, String publicId, String systemId, String notationName) throws SAXException { // no op } //////////////////////////////////////////////////////////////////// // Default implementation of ContentHandler interface. //////////////////////////////////////////////////////////////////// /** * Receive a Locator object for document events. * *By default, do nothing. Application writers may override this * method in a subclass if they wish to store the locator for use * with other document events.
* * @param locator A locator for all SAX document events. * @see org.xml.sax.ContentHandler#setDocumentLocator * @see org.xml.sax.Locator */ public void setDocumentLocator (Locator locator) { // no op } /** * Receive notification of the beginning of the document. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the beginning * of a document (such as allocating the root node of a tree or * creating an output file).
* * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#startDocument */ public void startDocument () throws SAXException { // no op } /** * Receive notification of the end of the document. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end * of a document (such as finalising a tree or closing an output * file).
* * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#endDocument */ public void endDocument () throws SAXException { // no op } /** * Receive notification of the start of a Namespace mapping. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each Namespace prefix scope (such as storing the prefix mapping).
* * @param prefix The Namespace prefix being declared. * @param uri The Namespace URI mapped to the prefix. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#startPrefixMapping */ public void startPrefixMapping (String prefix, String uri) throws SAXException { // no op } /** * Receive notification of the end of a Namespace mapping. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each prefix mapping.
* * @param prefix The Namespace prefix being declared. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#endPrefixMapping */ public void endPrefixMapping (String prefix) throws SAXException { // no op } /** * Receive notification of the start of an element. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each element (such as allocating a new tree node or writing * output to a file).
* * @param uri The Namespace URI, or the empty string if the * element has no Namespace URI or if Namespace * processing is not being performed. * @param localName The local name (without prefix), or the * empty string if Namespace processing is not being * performed. * @param qName The qualified name (with prefix), or the * empty string if qualified names are not available. * @param attributes The attributes attached to the element. If * there are no attributes, it shall be an empty * Attributes object. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#startElement */ public void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException { // no op } /** * Receive notification of the end of an element. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each element (such as finalising a tree node or writing * output to a file).
* * @param uri The Namespace URI, or the empty string if the * element has no Namespace URI or if Namespace * processing is not being performed. * @param localName The local name (without prefix), or the * empty string if Namespace processing is not being * performed. * @param qName The qualified name (with prefix), or the * empty string if qualified names are not available. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#endElement */ public void endElement (String uri, String localName, String qName) throws SAXException { // no op } /** * Receive notification of character data inside an element. * *By default, do nothing. Application writers may override this * method to take specific actions for each chunk of character data * (such as adding the data to a node or buffer, or printing it to * a file).
* * @param ch The characters. * @param start The start position in the character array. * @param length The number of characters to use from the * character array. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#characters */ public void characters (char ch[], int start, int length) throws SAXException { // no op } /** * Receive notification of ignorable whitespace in element content. * *By default, do nothing. Application writers may override this * method to take specific actions for each chunk of ignorable * whitespace (such as adding data to a node or buffer, or printing * it to a file).
* * @param ch The whitespace characters. * @param start The start position in the character array. * @param length The number of characters to use from the * character array. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#ignorableWhitespace */ public void ignorableWhitespace (char ch[], int start, int length) throws SAXException { // no op } /** * Receive notification of a processing instruction. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions for each * processing instruction, such as setting status variables or * invoking other methods.
* * @param target The processing instruction target. * @param data The processing instruction data, or null if * none is supplied. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#processingInstruction */ public void processingInstruction (String target, String data) throws SAXException { // no op } /** * Receive notification of a skipped entity. * *By default, do nothing. Application writers may override this * method in a subclass to take specific actions for each * processing instruction, such as setting status variables or * invoking other methods.
* * @param name The name of the skipped entity. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ContentHandler#processingInstruction */ public void skippedEntity (String name) throws SAXException { // no op } //////////////////////////////////////////////////////////////////// // Default implementation of the ErrorHandler interface. //////////////////////////////////////////////////////////////////// /** * Receive notification of a parser warning. * *The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each warning, such as inserting the message in a log file or * printing it to the console.
* * @param e The warning information encoded as an exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ErrorHandler#warning * @see org.xml.sax.SAXParseException */ public void warning (SAXParseException e) throws SAXException { // no op } /** * Receive notification of a recoverable parser error. * *The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each error, such as inserting the message in a log file or * printing it to the console.
* * @param e The warning information encoded as an exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ErrorHandler#warning * @see org.xml.sax.SAXParseException */ public void error (SAXParseException e) throws SAXException { // no op } /** * Report a fatal XML parsing error. * *The default implementation throws a SAXParseException. * Application writers may override this method in a subclass if * they need to take specific actions for each fatal error (such as * collecting all of the errors into a single report): in any case, * the application must stop all regular processing when this * method is invoked, since the document is no longer reliable, and * the parser may no longer report parsing events.
* * @param e The error information encoded as an exception. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @see org.xml.sax.ErrorHandler#fatalError * @see org.xml.sax.SAXParseException */ public void fatalError (SAXParseException e) throws SAXException { throw e; } } // end of DefaultHandler.java org/xml/sax/helpers/LocatorImpl.java 100644 0 0 12750 11146172375 15155 0 ustar 0 0 // SAX default implementation for Locator. // http://www.saxproject.org // No warranty; no copyright -- use this as you will. // $Id: LocatorImpl.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import org.xml.sax.Locator; /** * Provide an optional convenience implementation of Locator. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class is available mainly for application writers, who * can use it to make a persistent snapshot of a locator at any * point during a document parse:
* ** Locator locator; * Locator startloc; * * public void setLocator (Locator locator) * { * // note the locator * this.locator = locator; * } * * public void startDocument () * { * // save the location of the start of the document * // for future use. * Locator startloc = new LocatorImpl(locator); * } ** *
Normally, parser writers will not use this class, since it * is more efficient to provide location information only when * requested, rather than constantly updating a Locator object.
* * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.Locator Locator */ public class LocatorImpl implements Locator { /** * Zero-argument constructor. * *This will not normally be useful, since the main purpose * of this class is to make a snapshot of an existing Locator.
*/ public LocatorImpl () { } /** * Copy constructor. * *Create a persistent copy of the current state of a locator. * When the original locator changes, this copy will still keep * the original values (and it can be used outside the scope of * DocumentHandler methods).
* * @param locator The locator to copy. */ public LocatorImpl (Locator locator) { setPublicId(locator.getPublicId()); setSystemId(locator.getSystemId()); setLineNumber(locator.getLineNumber()); setColumnNumber(locator.getColumnNumber()); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.Locator //////////////////////////////////////////////////////////////////// /** * Return the saved public identifier. * * @return The public identifier as a string, or null if none * is available. * @see org.xml.sax.Locator#getPublicId * @see #setPublicId */ public String getPublicId () { return publicId; } /** * Return the saved system identifier. * * @return The system identifier as a string, or null if none * is available. * @see org.xml.sax.Locator#getSystemId * @see #setSystemId */ public String getSystemId () { return systemId; } /** * Return the saved line number (1-based). * * @return The line number as an integer, or -1 if none is available. * @see org.xml.sax.Locator#getLineNumber * @see #setLineNumber */ public int getLineNumber () { return lineNumber; } /** * Return the saved column number (1-based). * * @return The column number as an integer, or -1 if none is available. * @see org.xml.sax.Locator#getColumnNumber * @see #setColumnNumber */ public int getColumnNumber () { return columnNumber; } //////////////////////////////////////////////////////////////////// // Setters for the properties (not in org.xml.sax.Locator) //////////////////////////////////////////////////////////////////// /** * Set the public identifier for this locator. * * @param publicId The new public identifier, or null * if none is available. * @see #getPublicId */ public void setPublicId (String publicId) { this.publicId = publicId; } /** * Set the system identifier for this locator. * * @param systemId The new system identifier, or null * if none is available. * @see #getSystemId */ public void setSystemId (String systemId) { this.systemId = systemId; } /** * Set the line number for this locator (1-based). * * @param lineNumber The line number, or -1 if none is available. * @see #getLineNumber */ public void setLineNumber (int lineNumber) { this.lineNumber = lineNumber; } /** * Set the column number for this locator (1-based). * * @param columnNumber The column number, or -1 if none is available. * @see #getColumnNumber */ public void setColumnNumber (int columnNumber) { this.columnNumber = columnNumber; } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// private String publicId; private String systemId; private int lineNumber; private int columnNumber; } // end of LocatorImpl.java org/xml/sax/helpers/NamespaceSupport.java 100644 0 0 62255 11146172375 16226 0 ustar 0 0 // NamespaceSupport.java - generic Namespace support for SAX. // http://www.saxproject.org // Written by David Megginson // This class is in the Public Domain. NO WARRANTY! // $Id: NamespaceSupport.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import java.util.EmptyStackException; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; /** * Encapsulate Namespace logic for use by applications using SAX, * or internally by SAX drivers. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class encapsulates the logic of Namespace processing: it * tracks the declarations currently in force for each context and * automatically processes qualified XML names into their Namespace * parts; it can also be used in reverse for generating XML qnames * from Namespaces.
* *Namespace support objects are reusable, but the reset method * must be invoked between each session.
* *Here is a simple session:
* ** String parts[] = new String[3]; * NamespaceSupport support = new NamespaceSupport(); * * support.pushContext(); * support.declarePrefix("", "http://www.w3.org/1999/xhtml"); * support.declarePrefix("dc", "http://www.purl.org/dc#"); * * parts = support.processName("p", parts, false); * System.out.println("Namespace URI: " + parts[0]); * System.out.println("Local name: " + parts[1]); * System.out.println("Raw name: " + parts[2]); * * parts = support.processName("dc:title", parts, false); * System.out.println("Namespace URI: " + parts[0]); * System.out.println("Local name: " + parts[1]); * System.out.println("Raw name: " + parts[2]); * * support.popContext(); ** *
Note that this class is optimized for the use case where most * elements do not contain Namespace declarations: if the same * prefix/URI mapping is repeated for each context (for example), this * class will be somewhat less efficient.
* *Although SAX drivers (parsers) may choose to use this class to
* implement namespace handling, they are not required to do so.
* Applications must track namespace information themselves if they
* want to use namespace information.
*
* @since SAX 2.0
* @author David Megginson
* @version 2.0.1 (sax2r2)
*/
public class NamespaceSupport
{
////////////////////////////////////////////////////////////////////
// Constants.
////////////////////////////////////////////////////////////////////
/**
* The XML Namespace URI as a constant.
* The value is http://www.w3.org/XML/1998/namespace
* as defined in the "Namespaces in XML" * recommendation.
*
*
This is the Namespace URI that is automatically mapped * to the "xml" prefix.
*/ public final static String XMLNS = "http://www.w3.org/XML/1998/namespace"; /** * The namespace declaration URI as a constant. * The value ishttp://www.w3.org/xmlns/2000/
, as defined
* in a backwards-incompatible erratum to the "Namespaces in XML"
* recommendation. Because that erratum postdated SAX2, SAX2 defaults
* to the original recommendation, and does not normally use this URI.
*
*
* This is the Namespace URI that is optionally applied to * xmlns and xmlns:* attributes, which are used to * declare namespaces.
* * @since SAX 2.1alpha * @see #setNamespaceDeclUris * @see #isNamespaceDeclUris */ public final static String NSDECL = "http://www.w3.org/xmlns/2000/"; /** * An empty enumeration. */ private final static Enumeration EMPTY_ENUMERATION = new Vector().elements(); //////////////////////////////////////////////////////////////////// // Constructor. //////////////////////////////////////////////////////////////////// /** * Create a new Namespace support object. */ public NamespaceSupport () { reset(); } //////////////////////////////////////////////////////////////////// // Context management. //////////////////////////////////////////////////////////////////// /** * Reset this Namespace support object for reuse. * *It is necessary to invoke this method before reusing the * Namespace support object for a new session. If namespace * declaration URIs are to be supported, that flag must also * be set to a non-default value. *
* * @see #setNamespaceDeclUris */ public void reset () { contexts = new Context[32]; namespaceDeclUris = false; contextPos = 0; contexts[contextPos] = currentContext = new Context(); currentContext.declarePrefix("xml", XMLNS); } /** * Start a new Namespace context. * The new context will automatically inherit * the declarations of its parent context, but it will also keep * track of which declarations were made within this context. * *Event callback code should start a new context once per element. * This means being ready to call this in either of two places. * For elements that don't include namespace declarations, the * ContentHandler.startElement() callback is the right place. * For elements with such a declaration, it'd done in the first * ContentHandler.startPrefixMapping() callback. * A boolean flag can be used to * track whether a context has been started yet. When either of * those methods is called, it checks the flag to see if a new context * needs to be started. If so, it starts the context and sets the * flag. After ContentHandler.startElement() * does that, it always clears the flag. * *
Normally, SAX drivers would push a new context at the beginning * of each XML element. Then they perform a first pass over the * attributes to process all namespace declarations, making * ContentHandler.startPrefixMapping() callbacks. * Then a second pass is made, to determine the namespace-qualified * names for all attributes and for the element name. * Finally all the information for the * ContentHandler.startElement() callback is available, * so it can then be made. * *
The Namespace support object always starts with a base context * already in force: in this context, only the "xml" prefix is * declared.
* * @see org.xml.sax.ContentHandler * @see #popContext */ public void pushContext () { int max = contexts.length; contextPos++; // Extend the array if necessary if (contextPos >= max) { Context newContexts[] = new Context[max*2]; System.arraycopy(contexts, 0, newContexts, 0, max); max *= 2; contexts = newContexts; } // Allocate the context if necessary. currentContext = contexts[contextPos]; if (currentContext == null) { contexts[contextPos] = currentContext = new Context(); } // Set the parent, if any. if (contextPos > 0) { currentContext.setParent(contexts[contextPos - 1]); } } /** * Revert to the previous Namespace context. * *Normally, you should pop the context at the end of each * XML element. After popping the context, all Namespace prefix * mappings that were previously in force are restored.
* *You must not attempt to declare additional Namespace * prefixes after popping a context, unless you push another * context first.
* * @see #pushContext */ public void popContext () { contexts[contextPos].clear(); contextPos--; if (contextPos < 0) { throw new EmptyStackException(); } currentContext = contexts[contextPos]; } //////////////////////////////////////////////////////////////////// // Operations within a context. //////////////////////////////////////////////////////////////////// /** * Declare a Namespace prefix. All prefixes must be declared * before they are referenced. For example, a SAX driver (parser) * would scan an element's attributes * in two passes: first for namespace declarations, * then a second pass using {@link #processName processName()} to * interpret prefixes against (potentially redefined) prefixes. * *This method declares a prefix in the current Namespace * context; the prefix will remain in force until this context * is popped, unless it is shadowed in a descendant context.
* *To declare the default element Namespace, use the empty string as * the prefix.
* *Note that there is an asymmetry in this library: {@link * #getPrefix getPrefix} will not return the "" prefix, * even if you have declared a default element namespace. * To check for a default namespace, * you have to look it up explicitly using {@link #getURI getURI}. * This asymmetry exists to make it easier to look up prefixes * for attribute names, where the default prefix is not allowed.
* * @param prefix The prefix to declare, or the empty string to * indicate the default element namespace. This may never have * the value "xml" or "xmlns". * @param uri The Namespace URI to associate with the prefix. * @return true if the prefix was legal, false otherwise * * @see #processName * @see #getURI * @see #getPrefix */ public boolean declarePrefix (String prefix, String uri) { if (prefix.equals("xml") || prefix.equals("xmlns")) { return false; } else { currentContext.declarePrefix(prefix, uri); return true; } } /** * Process a raw XML qualified name, after all declarations in the * current context have been handled by {@link #declarePrefix * declarePrefix()}. * *This method processes a raw XML qualified name in the * current context by removing the prefix and looking it up among * the prefixes currently declared. The return value will be the * array supplied by the caller, filled in as follows:
* *All of the strings in the array will be internalized. If * the raw name has a prefix that has not been declared, then * the return value will be null.
* *Note that attribute names are processed differently than * element names: an unprefixed element name will receive the * default Namespace (if any), while an unprefixed attribute name * will not.
* * @param qName The XML qualified name to be processed. * @param parts An array supplied by the caller, capable of * holding at least three members. * @param isAttribute A flag indicating whether this is an * attribute name (true) or an element name (false). * @return The supplied array holding three internalized strings * representing the Namespace URI (or empty string), the * local name, and the XML qualified name; or null if there * is an undeclared prefix. * @see #declarePrefix * @see java.lang.String#intern */ public String [] processName (String qName, String parts[], boolean isAttribute) { String myParts[] = currentContext.processName(qName, isAttribute); if (myParts == null) { return null; } else { parts[0] = myParts[0]; parts[1] = myParts[1]; parts[2] = myParts[2]; return parts; } } /** * Look up a prefix and get the currently-mapped Namespace URI. * *This method looks up the prefix in the current context. * Use the empty string ("") for the default Namespace.
* * @param prefix The prefix to look up. * @return The associated Namespace URI, or null if the prefix * is undeclared in this context. * @see #getPrefix * @see #getPrefixes */ public String getURI (String prefix) { return currentContext.getURI(prefix); } /** * Return an enumeration of all prefixes whose declarations are * active in the current context. * This includes declarations from parent contexts that have * not been overridden. * *Note: if there is a default prefix, it will not be * returned in this enumeration; check for the default prefix * using the {@link #getURI getURI} with an argument of "".
* * @return An enumeration of prefixes (never empty). * @see #getDeclaredPrefixes * @see #getURI */ public Enumeration getPrefixes () { return currentContext.getPrefixes(); } /** * Return one of the prefixes mapped to a Namespace URI. * *If more than one prefix is currently mapped to the same * URI, this method will make an arbitrary selection; if you * want all of the prefixes, use the {@link #getPrefixes} * method instead.
* *Note: this will never return the empty (default) prefix; * to check for a default prefix, use the {@link #getURI getURI} * method with an argument of "".
* * @param uri the namespace URI * @return one of the prefixes currently mapped to the URI supplied, * or null if none is mapped or if the URI is assigned to * the default namespace * @see #getPrefixes(java.lang.String) * @see #getURI */ public String getPrefix (String uri) { return currentContext.getPrefix(uri); } /** * Return an enumeration of all prefixes for a given URI whose * declarations are active in the current context. * This includes declarations from parent contexts that have * not been overridden. * *This method returns prefixes mapped to a specific Namespace * URI. The xml: prefix will be included. If you want only one * prefix that's mapped to the Namespace URI, and you don't care * which one you get, use the {@link #getPrefix getPrefix} * method instead.
* *Note: the empty (default) prefix is never included * in this enumeration; to check for the presence of a default * Namespace, use the {@link #getURI getURI} method with an * argument of "".
* * @param uri The Namespace URI. * @return An enumeration of prefixes (never empty). * @see #getPrefix * @see #getDeclaredPrefixes * @see #getURI */ public Enumeration getPrefixes (String uri) { Vector prefixes = new Vector(); Enumeration allPrefixes = getPrefixes(); while (allPrefixes.hasMoreElements()) { String prefix = (String)allPrefixes.nextElement(); if (uri.equals(getURI(prefix))) { prefixes.addElement(prefix); } } return prefixes.elements(); } /** * Return an enumeration of all prefixes declared in this context. * *The empty (default) prefix will be included in this * enumeration; note that this behaviour differs from that of * {@link #getPrefix} and {@link #getPrefixes}.
* * @return An enumeration of all prefixes declared in this * context. * @see #getPrefixes * @see #getURI */ public Enumeration getDeclaredPrefixes () { return currentContext.getDeclaredPrefixes(); } /** * Controls whether namespace declaration attributes are placed * into the {@link #NSDECL NSDECL} namespace * by {@link #processName processName()}. This may only be * changed before any contexts have been pushed. * * @since SAX 2.1alpha * * @exception IllegalStateException when attempting to set this * after any context has been pushed. */ public void setNamespaceDeclUris (boolean value) { if (contextPos != 0) throw new IllegalStateException (); if (value == namespaceDeclUris) return; namespaceDeclUris = value; if (value) currentContext.declarePrefix ("xmlns", NSDECL); else { contexts[contextPos] = currentContext = new Context(); currentContext.declarePrefix("xml", XMLNS); } } /** * Returns true if namespace declaration attributes are placed into * a namespace. This behavior is not the default. * * @since SAX 2.1alpha */ public boolean isNamespaceDeclUris () { return namespaceDeclUris; } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// private Context contexts[]; private Context currentContext; private int contextPos; private boolean namespaceDeclUris; //////////////////////////////////////////////////////////////////// // Internal classes. //////////////////////////////////////////////////////////////////// /** * Internal class for a single Namespace context. * *This module caches and reuses Namespace contexts, * so the number allocated * will be equal to the element depth of the document, not to the total * number of elements (i.e. 5-10 rather than tens of thousands). * Also, data structures used to represent contexts are shared when * possible (child contexts without declarations) to further reduce * the amount of memory that's consumed. *
*/ final class Context { /** * Create the root-level Namespace context. */ Context () { copyTables(); } /** * (Re)set the parent of this Namespace context. * The context must either have been freshly constructed, * or must have been cleared. * * @param context The parent Namespace context object. */ void setParent (Context parent) { this.parent = parent; declarations = null; prefixTable = parent.prefixTable; uriTable = parent.uriTable; elementNameTable = parent.elementNameTable; attributeNameTable = parent.attributeNameTable; defaultNS = parent.defaultNS; declSeen = false; } /** * Makes associated state become collectible, * invalidating this context. * {@link #setParent} must be called before * this context may be used again. */ void clear () { parent = null; prefixTable = null; uriTable = null; elementNameTable = null; attributeNameTable = null; defaultNS = null; } /** * Declare a Namespace prefix for this context. * * @param prefix The prefix to declare. * @param uri The associated Namespace URI. * @see org.xml.sax.helpers.NamespaceSupport#declarePrefix */ void declarePrefix (String prefix, String uri) { // Lazy processing... // if (!declsOK) // throw new IllegalStateException ( // "can't declare any more prefixes in this context"); if (!declSeen) { copyTables(); } if (declarations == null) { declarations = new Vector(); } prefix = prefix.intern(); uri = uri.intern(); if ("".equals(prefix)) { if ("".equals(uri)) { defaultNS = null; } else { defaultNS = uri; } } else { prefixTable.put(prefix, uri); uriTable.put(uri, prefix); // may wipe out another prefix } declarations.addElement(prefix); } /** * Process an XML qualified name in this context. * * @param qName The XML qualified name. * @param isAttribute true if this is an attribute name. * @return An array of three strings containing the * URI part (or empty string), the local part, * and the raw name, all internalized, or null * if there is an undeclared prefix. * @see org.xml.sax.helpers.NamespaceSupport#processName */ String [] processName (String qName, boolean isAttribute) { String name[]; Hashtable table; // Select the appropriate table. if (isAttribute) { table = attributeNameTable; } else { table = elementNameTable; } // Start by looking in the cache, and // return immediately if the name // is already known in this content name = (String[])table.get(qName); if (name != null) { return name; } // We haven't seen this name in this // context before. Maybe in the parent // context, but we can't assume prefix // bindings are the same. name = new String[3]; name[2] = qName.intern(); int index = qName.indexOf(':'); // No prefix. if (index == -1) { if (isAttribute) { if (qName == "xmlns" && namespaceDeclUris) name[0] = NSDECL; else name[0] = ""; } else if (defaultNS == null) { name[0] = ""; } else { name[0] = defaultNS; } name[1] = name[2]; } // Prefix else { String prefix = qName.substring(0, index); String local = qName.substring(index+1); String uri; if ("".equals(prefix)) { uri = defaultNS; } else { uri = (String)prefixTable.get(prefix); } if (uri == null || (!isAttribute && "xmlns".equals (prefix))) { return null; } name[0] = uri; name[1] = local.intern(); } // Save in the cache for future use. // (Could be shared with parent context...) table.put(name[2], name); return name; } /** * Look up the URI associated with a prefix in this context. * * @param prefix The prefix to look up. * @return The associated Namespace URI, or null if none is * declared. * @see org.xml.sax.helpers.NamespaceSupport#getURI */ String getURI (String prefix) { if ("".equals(prefix)) { return defaultNS; } else if (prefixTable == null) { return null; } else { return (String)prefixTable.get(prefix); } } /** * Look up one of the prefixes associated with a URI in this context. * *Since many prefixes may be mapped to the same URI, * the return value may be unreliable.
* * @param uri The URI to look up. * @return The associated prefix, or null if none is declared. * @see org.xml.sax.helpers.NamespaceSupport#getPrefix */ String getPrefix (String uri) { if (uriTable == null) { return null; } else { return (String)uriTable.get(uri); } } /** * Return an enumeration of prefixes declared in this context. * * @return An enumeration of prefixes (possibly empty). * @see org.xml.sax.helpers.NamespaceSupport#getDeclaredPrefixes */ Enumeration getDeclaredPrefixes () { if (declarations == null) { return EMPTY_ENUMERATION; } else { return declarations.elements(); } } /** * Return an enumeration of all prefixes currently in force. * *The default prefix, if in force, is not * returned, and will have to be checked for separately.
* * @return An enumeration of prefixes (never empty). * @see org.xml.sax.helpers.NamespaceSupport#getPrefixes */ Enumeration getPrefixes () { if (prefixTable == null) { return EMPTY_ENUMERATION; } else { return prefixTable.keys(); } } //////////////////////////////////////////////////////////////// // Internal methods. //////////////////////////////////////////////////////////////// /** * Copy on write for the internal tables in this context. * *This class is optimized for the normal case where most * elements do not contain Namespace declarations.
*/ private void copyTables () { if (prefixTable != null) { prefixTable = (Hashtable)prefixTable.clone(); } else { prefixTable = new Hashtable(); } if (uriTable != null) { uriTable = (Hashtable)uriTable.clone(); } else { uriTable = new Hashtable(); } elementNameTable = new Hashtable(); attributeNameTable = new Hashtable(); declSeen = true; } //////////////////////////////////////////////////////////////// // Protected state. //////////////////////////////////////////////////////////////// Hashtable prefixTable; Hashtable uriTable; Hashtable elementNameTable; Hashtable attributeNameTable; String defaultNS = null; //////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////// private Vector declarations = null; private boolean declSeen = false; private Context parent = null; } } // end of NamespaceSupport.java org/xml/sax/helpers/NewInstance.java 100644 0 0 7570 11146172375 15132 0 ustar 0 0 // NewInstance.java - create a new instance of a class by name. // http://www.saxproject.org // Written by Edwin Goei, edwingo@apache.org // and by David Brownell, dbrownell@users.sourceforge.net // NO WARRANTY! This class is in the Public Domain. // $Id: NewInstance.java 670295 2008-06-22 01:46:43Z mrglavas $ package org.xml.sax.helpers; /** * Create a new instance of a class by name. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class contains a static method for creating an instance of a * class from an explicit class name. It tries to use the thread's context * ClassLoader if possible and falls back to using * Class.forName(String). It also takes into account JDK 1.2+'s * AccessController mechanism for performing its actions.
* *This code is designed to compile and run on JDK version 1.1 and later * including versions of Java 2.
* *This is not the NewInstance accompanying SAX 2.0.2; it * represents many fixes to that code. * * @author Edwin Goei, David Brownell * @version 2.0.1 (sax2r2) */ class NewInstance { // constants // governs whether, if we fail in finding a class even // when given a classloader, we'll make a last-ditch attempt // to use the current classloader. private static final boolean DO_FALLBACK = true; /** * Creates a new instance of the specified class name * * Package private so this code is not exposed at the API level. */ static Object newInstance (ClassLoader classLoader, String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException { Class driverClass; if (classLoader == null) { // XXX Use the bootstrap ClassLoader. There is no way to // load a class using the bootstrap ClassLoader that works // in both JDK 1.1 and Java 2. However, this should still // work b/c the following should be true: // // (cl == null) iff current ClassLoader == null // // Thus Class.forName(String) will use the current // ClassLoader which will be the bootstrap ClassLoader. driverClass = Class.forName(className); } else { try { driverClass = classLoader.loadClass(className); } catch (ClassNotFoundException x) { if (DO_FALLBACK) { // Fall back to current classloader classLoader = NewInstance.class.getClassLoader(); if (classLoader != null) { driverClass = classLoader.loadClass(className); } else { driverClass = Class.forName(className); } } else { throw x; } } } Object instance = driverClass.newInstance(); return instance; } /** * Figure out which ClassLoader to use. For JDK 1.2 and later use * the context ClassLoader. */ static ClassLoader getClassLoader () { // Figure out which ClassLoader to use for loading the provider // class. If there is a Context ClassLoader then use it. ClassLoader cl = SecuritySupport.getContextClassLoader(); if (cl == null) { // Assert: we are on JDK 1.1 or we have no Context ClassLoader // so use the current ClassLoader cl = NewInstance.class.getClassLoader(); } return cl; } } org/xml/sax/helpers/ParserAdapter.java 100644 0 0 67723 11146172375 15477 0 ustar 0 0 // ParserAdapter.java - adapt a SAX1 Parser to a SAX2 XMLReader. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the public domain. // $Id: ParserAdapter.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import java.io.IOException; import java.util.Enumeration; import java.util.Vector; import org.xml.sax.Parser; // deprecated import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.AttributeList; // deprecated import org.xml.sax.EntityResolver; import org.xml.sax.DTDHandler; import org.xml.sax.DocumentHandler; // deprecated import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.XMLReader; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; /** * Adapt a SAX1 Parser as a SAX2 XMLReader. * *
* This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class wraps a SAX1 {@link org.xml.sax.Parser Parser} * and makes it act as a SAX2 {@link org.xml.sax.XMLReader XMLReader}, * with feature, property, and Namespace support. Note * that it is not possible to report {@link org.xml.sax.ContentHandler#skippedEntity * skippedEntity} events, since SAX1 does not make that information available.
* *This adapter does not test for duplicate Namespace-qualified * attribute names.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.helpers.XMLReaderAdapter * @see org.xml.sax.XMLReader * @see org.xml.sax.Parser */ public class ParserAdapter implements XMLReader, DocumentHandler { //////////////////////////////////////////////////////////////////// // Constructors. //////////////////////////////////////////////////////////////////// /** * Construct a new parser adapter. * *Use the "org.xml.sax.parser" property to locate the * embedded SAX1 driver.
* * @exception SAXException If the embedded driver * cannot be instantiated or if the * org.xml.sax.parser property is not specified. */ public ParserAdapter () throws SAXException { super(); String driver = System.getProperty("org.xml.sax.parser"); try { setup(ParserFactory.makeParser()); } catch (ClassNotFoundException e1) { throw new SAXException("Cannot find SAX1 driver class " + driver, e1); } catch (IllegalAccessException e2) { throw new SAXException("SAX1 driver class " + driver + " found but cannot be loaded", e2); } catch (InstantiationException e3) { throw new SAXException("SAX1 driver class " + driver + " loaded but cannot be instantiated", e3); } catch (ClassCastException e4) { throw new SAXException("SAX1 driver class " + driver + " does not implement org.xml.sax.Parser"); } catch (NullPointerException e5) { throw new SAXException("System property org.xml.sax.parser not specified"); } } /** * Construct a new parser adapter. * *Note that the embedded parser cannot be changed once the * adapter is created; to embed a different parser, allocate * a new ParserAdapter.
* * @param parser The SAX1 parser to embed. * @exception java.lang.NullPointerException If the parser parameter * is null. */ public ParserAdapter (Parser parser) { super(); setup(parser); } /** * Internal setup method. * * @param parser The embedded parser. * @exception java.lang.NullPointerException If the parser parameter * is null. */ private void setup (Parser parser) { if (parser == null) { throw new NullPointerException("Parser argument must not be null"); } this.parser = parser; atts = new AttributesImpl(); nsSupport = new NamespaceSupport(); attAdapter = new AttributeListAdapter(); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.XMLReader. //////////////////////////////////////////////////////////////////// // // Internal constants for the sake of convenience. // private final static String FEATURES = "http://xml.org/sax/features/"; private final static String NAMESPACES = FEATURES + "namespaces"; private final static String NAMESPACE_PREFIXES = FEATURES + "namespace-prefixes"; private final static String XMLNS_URIs = FEATURES + "xmlns-uris"; /** * Set a feature flag for the parser. * *The only features recognized are namespaces and * namespace-prefixes.
* * @param name The feature name, as a complete URI. * @param value The requested feature value. * @exception SAXNotRecognizedException If the feature * can't be assigned or retrieved. * @exception SAXNotSupportedException If the feature * can't be assigned that value. * @see org.xml.sax.XMLReader#setFeature */ public void setFeature (String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { if (name.equals(NAMESPACES)) { checkNotParsing("feature", name); namespaces = value; if (!namespaces && !prefixes) { prefixes = true; } } else if (name.equals(NAMESPACE_PREFIXES)) { checkNotParsing("feature", name); prefixes = value; if (!prefixes && !namespaces) { namespaces = true; } } else if (name.equals(XMLNS_URIs)) { checkNotParsing("feature", name); uris = value; } else { throw new SAXNotRecognizedException("Feature: " + name); } } /** * Check a parser feature flag. * *The only features recognized are namespaces and * namespace-prefixes.
* * @param name The feature name, as a complete URI. * @return The current feature value. * @exception SAXNotRecognizedException If the feature * value can't be assigned or retrieved. * @exception SAXNotSupportedException If the * feature is not currently readable. * @see org.xml.sax.XMLReader#setFeature */ public boolean getFeature (String name) throws SAXNotRecognizedException, SAXNotSupportedException { if (name.equals(NAMESPACES)) { return namespaces; } else if (name.equals(NAMESPACE_PREFIXES)) { return prefixes; } else if (name.equals(XMLNS_URIs)) { return uris; } else { throw new SAXNotRecognizedException("Feature: " + name); } } /** * Set a parser property. * *No properties are currently recognized.
* * @param name The property name. * @param value The property value. * @exception SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception SAXNotSupportedException If the property * can't be assigned that value. * @see org.xml.sax.XMLReader#setProperty */ public void setProperty (String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { throw new SAXNotRecognizedException("Property: " + name); } /** * Get a parser property. * *No properties are currently recognized.
* * @param name The property name. * @return The property value. * @exception SAXNotRecognizedException If the property * value can't be assigned or retrieved. * @exception SAXNotSupportedException If the property * value is not currently readable. * @see org.xml.sax.XMLReader#getProperty */ public Object getProperty (String name) throws SAXNotRecognizedException, SAXNotSupportedException { throw new SAXNotRecognizedException("Property: " + name); } /** * Set the entity resolver. * * @param resolver The new entity resolver. * @see org.xml.sax.XMLReader#setEntityResolver */ public void setEntityResolver (EntityResolver resolver) { entityResolver = resolver; } /** * Return the current entity resolver. * * @return The current entity resolver, or null if none was supplied. * @see org.xml.sax.XMLReader#getEntityResolver */ public EntityResolver getEntityResolver () { return entityResolver; } /** * Set the DTD handler. * * @param handler the new DTD handler * @see org.xml.sax.XMLReader#setEntityResolver */ public void setDTDHandler (DTDHandler handler) { dtdHandler = handler; } /** * Return the current DTD handler. * * @return the current DTD handler, or null if none was supplied * @see org.xml.sax.XMLReader#getEntityResolver */ public DTDHandler getDTDHandler () { return dtdHandler; } /** * Set the content handler. * * @param handler the new content handler * @see org.xml.sax.XMLReader#setEntityResolver */ public void setContentHandler (ContentHandler handler) { contentHandler = handler; } /** * Return the current content handler. * * @return The current content handler, or null if none was supplied. * @see org.xml.sax.XMLReader#getEntityResolver */ public ContentHandler getContentHandler () { return contentHandler; } /** * Set the error handler. * * @param handler The new error handler. * @see org.xml.sax.XMLReader#setEntityResolver */ public void setErrorHandler (ErrorHandler handler) { errorHandler = handler; } /** * Return the current error handler. * * @return The current error handler, or null if none was supplied. * @see org.xml.sax.XMLReader#getEntityResolver */ public ErrorHandler getErrorHandler () { return errorHandler; } /** * Parse an XML document. * * @param systemId The absolute URL of the document. * @exception java.io.IOException If there is a problem reading * the raw content of the document. * @exception SAXException If there is a problem * processing the document. * @see #parse(org.xml.sax.InputSource) * @see org.xml.sax.Parser#parse(java.lang.String) */ public void parse (String systemId) throws IOException, SAXException { parse(new InputSource(systemId)); } /** * Parse an XML document. * * @param input An input source for the document. * @exception java.io.IOException If there is a problem reading * the raw content of the document. * @exception SAXException If there is a problem * processing the document. * @see #parse(java.lang.String) * @see org.xml.sax.Parser#parse(org.xml.sax.InputSource) */ public void parse (InputSource input) throws IOException, SAXException { if (parsing) { throw new SAXException("Parser is already in use"); } setupParser(); parsing = true; try { parser.parse(input); } finally { parsing = false; } parsing = false; } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.DocumentHandler. //////////////////////////////////////////////////////////////////// /** * Adapter implementation method; do not call. * Adapt a SAX1 document locator event. * * @param locator A document locator. * @see org.xml.sax.ContentHandler#setDocumentLocator */ public void setDocumentLocator (Locator locator) { this.locator = locator; if (contentHandler != null) { contentHandler.setDocumentLocator(locator); } } /** * Adapter implementation method; do not call. * Adapt a SAX1 start document event. * * @exception SAXException The client may raise a * processing exception. * @see org.xml.sax.DocumentHandler#startDocument */ public void startDocument () throws SAXException { if (contentHandler != null) { contentHandler.startDocument(); } } /** * Adapter implementation method; do not call. * Adapt a SAX1 end document event. * * @exception SAXException The client may raise a * processing exception. * @see org.xml.sax.DocumentHandler#endDocument */ public void endDocument () throws SAXException { if (contentHandler != null) { contentHandler.endDocument(); } } /** * Adapter implementation method; do not call. * Adapt a SAX1 startElement event. * *If necessary, perform Namespace processing.
* * @param qName The qualified (prefixed) name. * @param qAtts The XML attribute list (with qnames). * @exception SAXException The client may raise a * processing exception. */ public void startElement (String qName, AttributeList qAtts) throws SAXException { // These are exceptions from the // first pass; they should be // ignored if there's a second pass, // but reported otherwise. Vector exceptions = null; // If we're not doing Namespace // processing, dispatch this quickly. if (!namespaces) { if (contentHandler != null) { attAdapter.setAttributeList(qAtts); contentHandler.startElement("", "", qName.intern(), attAdapter); } return; } // OK, we're doing Namespace processing. nsSupport.pushContext(); int length = qAtts.getLength(); // First pass: handle NS decls for (int i = 0; i < length; i++) { String attQName = qAtts.getName(i); if (!attQName.startsWith("xmlns")) continue; // Could be a declaration... String prefix; int n = attQName.indexOf(':'); // xmlns=... if (n == -1 && attQName.length () == 5) { prefix = ""; } else if (n != 5) { // XML namespaces spec doesn't discuss "xmlnsf:oo" // (and similarly named) attributes ... at most, warn continue; } else // xmlns:foo=... prefix = attQName.substring(n+1); String value = qAtts.getValue(i); if (!nsSupport.declarePrefix(prefix, value)) { reportError("Illegal Namespace prefix: " + prefix); continue; } if (contentHandler != null) contentHandler.startPrefixMapping(prefix, value); } // Second pass: copy all relevant // attributes into the SAX2 AttributeList // using updated prefix bindings atts.clear(); for (int i = 0; i < length; i++) { String attQName = qAtts.getName(i); String type = qAtts.getType(i); String value = qAtts.getValue(i); // Declaration? if (attQName.startsWith("xmlns")) { String prefix; int n = attQName.indexOf(':'); if (n == -1 && attQName.length () == 5) { prefix = ""; } else if (n != 5) { // XML namespaces spec doesn't discuss "xmlnsf:oo" // (and similarly named) attributes ... ignore prefix = null; } else { prefix = attQName.substring(6); } // Yes, decl: report or prune if (prefix != null) { if (prefixes) { if (uris) // note funky case: localname can be null // when declaring the default prefix, and // yet the uri isn't null. atts.addAttribute (nsSupport.XMLNS, prefix, attQName.intern(), type, value); else atts.addAttribute ("", "", attQName.intern(), type, value); } continue; } } // Not a declaration -- report try { String attName[] = processName(attQName, true, true); atts.addAttribute(attName[0], attName[1], attName[2], type, value); } catch (SAXException e) { if (exceptions == null) exceptions = new Vector(); exceptions.addElement(e); atts.addAttribute("", attQName, attQName, type, value); } } // now handle the deferred exception reports if (exceptions != null && errorHandler != null) { for (int i = 0; i < exceptions.size(); i++) errorHandler.error((SAXParseException) (exceptions.elementAt(i))); } // OK, finally report the event. if (contentHandler != null) { String name[] = processName(qName, false, false); contentHandler.startElement(name[0], name[1], name[2], atts); } } /** * Adapter implementation method; do not call. * Adapt a SAX1 end element event. * * @param qName The qualified (prefixed) name. * @exception SAXException The client may raise a * processing exception. * @see org.xml.sax.DocumentHandler#endElement */ public void endElement (String qName) throws SAXException { // If we're not doing Namespace // processing, dispatch this quickly. if (!namespaces) { if (contentHandler != null) { contentHandler.endElement("", "", qName.intern()); } return; } // Split the name. String names[] = processName(qName, false, false); if (contentHandler != null) { contentHandler.endElement(names[0], names[1], names[2]); Enumeration prefixes = nsSupport.getDeclaredPrefixes(); while (prefixes.hasMoreElements()) { String prefix = (String)prefixes.nextElement(); contentHandler.endPrefixMapping(prefix); } } nsSupport.popContext(); } /** * Adapter implementation method; do not call. * Adapt a SAX1 characters event. * * @param ch An array of characters. * @param start The starting position in the array. * @param length The number of characters to use. * @exception SAXException The client may raise a * processing exception. * @see org.xml.sax.DocumentHandler#characters */ public void characters (char ch[], int start, int length) throws SAXException { if (contentHandler != null) { contentHandler.characters(ch, start, length); } } /** * Adapter implementation method; do not call. * Adapt a SAX1 ignorable whitespace event. * * @param ch An array of characters. * @param start The starting position in the array. * @param length The number of characters to use. * @exception SAXException The client may raise a * processing exception. * @see org.xml.sax.DocumentHandler#ignorableWhitespace */ public void ignorableWhitespace (char ch[], int start, int length) throws SAXException { if (contentHandler != null) { contentHandler.ignorableWhitespace(ch, start, length); } } /** * Adapter implementation method; do not call. * Adapt a SAX1 processing instruction event. * * @param target The processing instruction target. * @param data The remainder of the processing instruction * @exception SAXException The client may raise a * processing exception. * @see org.xml.sax.DocumentHandler#processingInstruction */ public void processingInstruction (String target, String data) throws SAXException { if (contentHandler != null) { contentHandler.processingInstruction(target, data); } } //////////////////////////////////////////////////////////////////// // Internal utility methods. //////////////////////////////////////////////////////////////////// /** * Initialize the parser before each run. */ private void setupParser () { // catch an illegal "nonsense" state. if (!prefixes && !namespaces) throw new IllegalStateException (); nsSupport.reset(); if (uris) nsSupport.setNamespaceDeclUris (true); if (entityResolver != null) { parser.setEntityResolver(entityResolver); } if (dtdHandler != null) { parser.setDTDHandler(dtdHandler); } if (errorHandler != null) { parser.setErrorHandler(errorHandler); } parser.setDocumentHandler(this); locator = null; } /** * Process a qualified (prefixed) name. * *If the name has an undeclared prefix, use only the qname * and make an ErrorHandler.error callback in case the app is * interested.
* * @param qName The qualified (prefixed) name. * @param isAttribute true if this is an attribute name. * @return The name split into three parts. * @exception SAXException The client may throw * an exception if there is an error callback. */ private String [] processName (String qName, boolean isAttribute, boolean useException) throws SAXException { String parts[] = nsSupport.processName(qName, nameParts, isAttribute); if (parts == null) { if (useException) throw makeException("Undeclared prefix: " + qName); reportError("Undeclared prefix: " + qName); parts = new String[3]; parts[0] = parts[1] = ""; parts[2] = qName.intern(); } return parts; } /** * Report a non-fatal error. * * @param message The error message. * @exception SAXException The client may throw * an exception. */ void reportError (String message) throws SAXException { if (errorHandler != null) errorHandler.error(makeException(message)); } /** * Construct an exception for the current context. * * @param message The error message. */ private SAXParseException makeException (String message) { if (locator != null) { return new SAXParseException(message, locator); } else { return new SAXParseException(message, null, null, -1, -1); } } /** * Throw an exception if we are parsing. * *Use this method to detect illegal feature or * property changes.
* * @param type The type of thing (feature or property). * @param name The feature or property name. * @exception SAXNotSupportedException If a * document is currently being parsed. */ private void checkNotParsing (String type, String name) throws SAXNotSupportedException { if (parsing) { throw new SAXNotSupportedException("Cannot change " + type + ' ' + name + " while parsing"); } } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// private NamespaceSupport nsSupport; private AttributeListAdapter attAdapter; private boolean parsing = false; private String nameParts[] = new String[3]; private Parser parser = null; private AttributesImpl atts = null; // Features private boolean namespaces = true; private boolean prefixes = false; private boolean uris = false; // Properties // Handlers Locator locator; EntityResolver entityResolver = null; DTDHandler dtdHandler = null; ContentHandler contentHandler = null; ErrorHandler errorHandler = null; //////////////////////////////////////////////////////////////////// // Inner class to wrap an AttributeList when not doing NS proc. //////////////////////////////////////////////////////////////////// /** * Adapt a SAX1 AttributeList as a SAX2 Attributes object. * *This class is in the Public Domain, and comes with NO * WARRANTY of any kind.
* *This wrapper class is used only when Namespace support * is disabled -- it provides pretty much a direct mapping * from SAX1 to SAX2, except that names and types are * interned whenever requested.
*/ final class AttributeListAdapter implements Attributes { /** * Construct a new adapter. */ AttributeListAdapter () { } /** * Set the embedded AttributeList. * *This method must be invoked before any of the others * can be used.
* * @param The SAX1 attribute list (with qnames). */ void setAttributeList (AttributeList qAtts) { this.qAtts = qAtts; } /** * Return the length of the attribute list. * * @return The number of attributes in the list. * @see org.xml.sax.Attributes#getLength */ public int getLength () { return qAtts.getLength(); } /** * Return the Namespace URI of the specified attribute. * * @param The attribute's index. * @return Always the empty string. * @see org.xml.sax.Attributes#getURI */ public String getURI (int i) { return ""; } /** * Return the local name of the specified attribute. * * @param The attribute's index. * @return Always the empty string. * @see org.xml.sax.Attributes#getLocalName */ public String getLocalName (int i) { return ""; } /** * Return the qualified (prefixed) name of the specified attribute. * * @param The attribute's index. * @return The attribute's qualified name, internalized. */ public String getQName (int i) { return qAtts.getName(i).intern(); } /** * Return the type of the specified attribute. * * @param The attribute's index. * @return The attribute's type as an internalized string. */ public String getType (int i) { return qAtts.getType(i).intern(); } /** * Return the value of the specified attribute. * * @param The attribute's index. * @return The attribute's value. */ public String getValue (int i) { return qAtts.getValue(i); } /** * Look up an attribute index by Namespace name. * * @param uri The Namespace URI or the empty string. * @param localName The local name. * @return The attributes index, or -1 if none was found. * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String) */ public int getIndex (String uri, String localName) { return -1; } /** * Look up an attribute index by qualified (prefixed) name. * * @param qName The qualified name. * @return The attributes index, or -1 if none was found. * @see org.xml.sax.Attributes#getIndex(java.lang.String) */ public int getIndex (String qName) { int max = atts.getLength(); for (int i = 0; i < max; i++) { if (qAtts.getName(i).equals(qName)) { return i; } } return -1; } /** * Look up the type of an attribute by Namespace name. * * @param uri The Namespace URI * @param localName The local name. * @return The attribute's type as an internalized string. */ public String getType (String uri, String localName) { return null; } /** * Look up the type of an attribute by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's type as an internalized string. */ public String getType (String qName) { return qAtts.getType(qName).intern(); } /** * Look up the value of an attribute by Namespace name. * * @param uri The Namespace URI * @param localName The local name. * @return The attribute's value. */ public String getValue (String uri, String localName) { return null; } /** * Look up the value of an attribute by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's value. */ public String getValue (String qName) { return qAtts.getValue(qName); } private AttributeList qAtts; } } // end of ParserAdapter.java org/xml/sax/helpers/ParserFactory.java 100644 0 0 10632 11146172375 15511 0 ustar 0 0 //SAX parser factory. //http://www.saxproject.org //No warranty; no copyright -- use this as you will. //$Id: ParserFactory.java 670295 2008-06-22 01:46:43Z mrglavas $ package org.xml.sax.helpers; import org.xml.sax.Parser; /** * Java-specific class for dynamically loading SAX parsers. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
Note: This class is designed to work with the now-deprecated * SAX1 {@link org.xml.sax.Parser Parser} class. SAX2 applications should use * {@link org.xml.sax.helpers.XMLReaderFactory XMLReaderFactory} instead.
* *ParserFactory is not part of the platform-independent definition * of SAX; it is an additional convenience class designed * specifically for Java XML application writers. SAX applications * can use the static methods in this class to allocate a SAX parser * dynamically at run-time based either on the value of the * `org.xml.sax.parser' system property or on a string containing the class * name.
* *Note that the application still requires an XML parser that * implements SAX1.
* * @deprecated This class works with the deprecated * {@link org.xml.sax.Parser Parser} * interface. * @since SAX 1.0 * @author David Megginson * @version 2.0.1 (sax2r2) */ public class ParserFactory { /** * Private null constructor. */ private ParserFactory () { } /** * Create a new SAX parser using the `org.xml.sax.parser' system property. * *The named class must exist and must implement the * {@link org.xml.sax.Parser Parser} interface.
* * @exception java.lang.NullPointerException There is no value * for the `org.xml.sax.parser' system property. * @exception java.lang.ClassNotFoundException The SAX parser * class was not found (check your CLASSPATH). * @exception IllegalAccessException The SAX parser class was * found, but you do not have permission to load * it. * @exception InstantiationException The SAX parser class was * found but could not be instantiated. * @exception java.lang.ClassCastException The SAX parser class * was found and instantiated, but does not implement * org.xml.sax.Parser. * @see #makeParser(java.lang.String) * @see org.xml.sax.Parser */ public static Parser makeParser () throws ClassNotFoundException, IllegalAccessException, InstantiationException, NullPointerException, ClassCastException { String className = SecuritySupport.getSystemProperty("org.xml.sax.parser"); if (className == null) { throw new NullPointerException("No value for sax.parser property"); } else { return makeParser(className); } } /** * Create a new SAX parser object using the class name provided. * *The named class must exist and must implement the * {@link org.xml.sax.Parser Parser} interface.
* * @param className A string containing the name of the * SAX parser class. * @exception java.lang.ClassNotFoundException The SAX parser * class was not found (check your CLASSPATH). * @exception IllegalAccessException The SAX parser class was * found, but you do not have permission to load * it. * @exception InstantiationException The SAX parser class was * found but could not be instantiated. * @exception java.lang.ClassCastException The SAX parser class * was found and instantiated, but does not implement * org.xml.sax.Parser. * @see #makeParser() * @see org.xml.sax.Parser */ public static Parser makeParser (String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException, ClassCastException { return (Parser) NewInstance.newInstance ( NewInstance.getClassLoader (), className); } } org/xml/sax/helpers/SecuritySupport.java 100644 0 0 6230 11146172375 16110 0 ustar 0 0 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.xml.sax.helpers; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; /** * This class is duplicated for each JAXP subpackage so keep it in sync. * It is package private and therefore is not exposed as part of the JAXP * API. * * Security related methods that only work on J2SE 1.2 and newer. */ final class SecuritySupport { private SecuritySupport() {} static ClassLoader getContextClassLoader() { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (SecurityException ex) { } return cl; } }); } static String getSystemProperty(final String propName) { return (String) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty(propName); } }); } static FileInputStream getFileInputStream(final File file) throws FileNotFoundException { try { return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws FileNotFoundException { return new FileInputStream(file); } }); } catch (PrivilegedActionException e) { throw (FileNotFoundException)e.getException(); } } static InputStream getResourceAsStream(final ClassLoader cl, final String name) { return (InputStream) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { InputStream ris; if (cl == null) { ris = ClassLoader.getSystemResourceAsStream(name); } else { ris = cl.getResourceAsStream(name); } return ris; } }); } } org/xml/sax/helpers/XMLFilterImpl.java 100644 0 0 47637 11146172375 15374 0 ustar 0 0 // XMLFilterImpl.java - base SAX2 filter implementation. // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the Public Domain. // $Id: XMLFilterImpl.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import java.io.IOException; import org.xml.sax.XMLReader; import org.xml.sax.XMLFilter; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.Attributes; import org.xml.sax.EntityResolver; import org.xml.sax.DTDHandler; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.SAXNotRecognizedException; /** * Base class for deriving an XML filter. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class is designed to sit between an {@link org.xml.sax.XMLReader * XMLReader} and the client application's event handlers. By default, it * does nothing but pass requests up to the reader and events * on to the handlers unmodified, but subclasses can override * specific methods to modify the event stream or the configuration * requests as they pass through.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.XMLFilter * @see org.xml.sax.XMLReader * @see org.xml.sax.EntityResolver * @see org.xml.sax.DTDHandler * @see org.xml.sax.ContentHandler * @see org.xml.sax.ErrorHandler */ public class XMLFilterImpl implements XMLFilter, EntityResolver, DTDHandler, ContentHandler, ErrorHandler { //////////////////////////////////////////////////////////////////// // Constructors. //////////////////////////////////////////////////////////////////// /** * Construct an empty XML filter, with no parent. * *This filter will have no parent: you must assign a parent * before you start a parse or do any configuration with * setFeature or setProperty, unless you use this as a pure event * consumer rather than as an {@link XMLReader}.
* * @see org.xml.sax.XMLReader#setFeature * @see org.xml.sax.XMLReader#setProperty * @see #setParent */ public XMLFilterImpl () { super(); } /** * Construct an XML filter with the specified parent. * * @see #setParent * @see #getParent */ public XMLFilterImpl (XMLReader parent) { super(); setParent(parent); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.XMLFilter. //////////////////////////////////////////////////////////////////// /** * Set the parent reader. * *This is the {@link org.xml.sax.XMLReader XMLReader} from which * this filter will obtain its events and to which it will pass its * configuration requests. The parent may itself be another filter.
* *If there is no parent reader set, any attempt to parse * or to set or get a feature or property will fail.
* * @param parent The parent XML reader. * @see #getParent */ public void setParent (XMLReader parent) { this.parent = parent; } /** * Get the parent reader. * * @return The parent XML reader, or null if none is set. * @see #setParent */ public XMLReader getParent () { return parent; } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.XMLReader. //////////////////////////////////////////////////////////////////// /** * Set the value of a feature. * *This will always fail if the parent is null.
* * @param name The feature name. * @param value The requested feature value. * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved from the parent. * @exception org.xml.sax.SAXNotSupportedException When the * parent recognizes the feature name but * cannot set the requested value. */ public void setFeature (String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { if (parent != null) { parent.setFeature(name, value); } else { throw new SAXNotRecognizedException("Feature: " + name); } } /** * Look up the value of a feature. * *This will always fail if the parent is null.
* * @param name The feature name. * @return The current value of the feature. * @exception org.xml.sax.SAXNotRecognizedException If the feature * value can't be assigned or retrieved from the parent. * @exception org.xml.sax.SAXNotSupportedException When the * parent recognizes the feature name but * cannot determine its value at this time. */ public boolean getFeature (String name) throws SAXNotRecognizedException, SAXNotSupportedException { if (parent != null) { return parent.getFeature(name); } else { throw new SAXNotRecognizedException("Feature: " + name); } } /** * Set the value of a property. * *This will always fail if the parent is null.
* * @param name The property name. * @param value The requested property value. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved from the parent. * @exception org.xml.sax.SAXNotSupportedException When the * parent recognizes the property name but * cannot set the requested value. */ public void setProperty (String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { if (parent != null) { parent.setProperty(name, value); } else { throw new SAXNotRecognizedException("Property: " + name); } } /** * Look up the value of a property. * * @param name The property name. * @return The current value of the property. * @exception org.xml.sax.SAXNotRecognizedException If the property * value can't be assigned or retrieved from the parent. * @exception org.xml.sax.SAXNotSupportedException When the * parent recognizes the property name but * cannot determine its value at this time. */ public Object getProperty (String name) throws SAXNotRecognizedException, SAXNotSupportedException { if (parent != null) { return parent.getProperty(name); } else { throw new SAXNotRecognizedException("Property: " + name); } } /** * Set the entity resolver. * * @param resolver The new entity resolver. */ public void setEntityResolver (EntityResolver resolver) { entityResolver = resolver; } /** * Get the current entity resolver. * * @return The current entity resolver, or null if none was set. */ public EntityResolver getEntityResolver () { return entityResolver; } /** * Set the DTD event handler. * * @param handler the new DTD handler */ public void setDTDHandler (DTDHandler handler) { dtdHandler = handler; } /** * Get the current DTD event handler. * * @return The current DTD handler, or null if none was set. */ public DTDHandler getDTDHandler () { return dtdHandler; } /** * Set the content event handler. * * @param handler the new content handler */ public void setContentHandler (ContentHandler handler) { contentHandler = handler; } /** * Get the content event handler. * * @return The current content handler, or null if none was set. */ public ContentHandler getContentHandler () { return contentHandler; } /** * Set the error event handler. * * @param handler the new error handler */ public void setErrorHandler (ErrorHandler handler) { errorHandler = handler; } /** * Get the current error event handler. * * @return The current error handler, or null if none was set. */ public ErrorHandler getErrorHandler () { return errorHandler; } /** * Parse a document. * * @param input The input source for the document entity. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. */ public void parse (InputSource input) throws SAXException, IOException { setupParse(); parent.parse(input); } /** * Parse a document. * * @param systemId The system identifier as a fully-qualified URI. * @exception org.xml.sax.SAXException Any SAX exception, possibly * wrapping another exception. * @exception java.io.IOException An IO exception from the parser, * possibly from a byte stream or character stream * supplied by the application. */ public void parse (String systemId) throws SAXException, IOException { parse(new InputSource(systemId)); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.EntityResolver. //////////////////////////////////////////////////////////////////// /** * Filter an external entity resolution. * * @param publicId The entity's public identifier, or null. * @param systemId The entity's system identifier. * @return A new InputSource or null for the default. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. * @exception java.io.IOException The client may throw an * I/O-related exception while obtaining the * new InputSource. */ public InputSource resolveEntity (String publicId, String systemId) throws SAXException, IOException { if (entityResolver != null) { return entityResolver.resolveEntity(publicId, systemId); } else { return null; } } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.DTDHandler. //////////////////////////////////////////////////////////////////// /** * Filter a notation declaration event. * * @param name The notation name. * @param publicId The notation's public identifier, or null. * @param systemId The notation's system identifier, or null. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void notationDecl (String name, String publicId, String systemId) throws SAXException { if (dtdHandler != null) { dtdHandler.notationDecl(name, publicId, systemId); } } /** * Filter an unparsed entity declaration event. * * @param name The entity name. * @param publicId The entity's public identifier, or null. * @param systemId The entity's system identifier, or null. * @param notationName The name of the associated notation. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void unparsedEntityDecl (String name, String publicId, String systemId, String notationName) throws SAXException { if (dtdHandler != null) { dtdHandler.unparsedEntityDecl(name, publicId, systemId, notationName); } } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.ContentHandler. //////////////////////////////////////////////////////////////////// /** * Filter a new document locator event. * * @param locator The document locator. */ public void setDocumentLocator (Locator locator) { this.locator = locator; if (contentHandler != null) { contentHandler.setDocumentLocator(locator); } } /** * Filter a start document event. * * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void startDocument () throws SAXException { if (contentHandler != null) { contentHandler.startDocument(); } } /** * Filter an end document event. * * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void endDocument () throws SAXException { if (contentHandler != null) { contentHandler.endDocument(); } } /** * Filter a start Namespace prefix mapping event. * * @param prefix The Namespace prefix. * @param uri The Namespace URI. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void startPrefixMapping (String prefix, String uri) throws SAXException { if (contentHandler != null) { contentHandler.startPrefixMapping(prefix, uri); } } /** * Filter an end Namespace prefix mapping event. * * @param prefix The Namespace prefix. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void endPrefixMapping (String prefix) throws SAXException { if (contentHandler != null) { contentHandler.endPrefixMapping(prefix); } } /** * Filter a start element event. * * @param uri The element's Namespace URI, or the empty string. * @param localName The element's local name, or the empty string. * @param qName The element's qualified (prefixed) name, or the empty * string. * @param atts The element's attributes. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void startElement (String uri, String localName, String qName, Attributes atts) throws SAXException { if (contentHandler != null) { contentHandler.startElement(uri, localName, qName, atts); } } /** * Filter an end element event. * * @param uri The element's Namespace URI, or the empty string. * @param localName The element's local name, or the empty string. * @param qName The element's qualified (prefixed) name, or the empty * string. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void endElement (String uri, String localName, String qName) throws SAXException { if (contentHandler != null) { contentHandler.endElement(uri, localName, qName); } } /** * Filter a character data event. * * @param ch An array of characters. * @param start The starting position in the array. * @param length The number of characters to use from the array. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void characters (char ch[], int start, int length) throws SAXException { if (contentHandler != null) { contentHandler.characters(ch, start, length); } } /** * Filter an ignorable whitespace event. * * @param ch An array of characters. * @param start The starting position in the array. * @param length The number of characters to use from the array. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void ignorableWhitespace (char ch[], int start, int length) throws SAXException { if (contentHandler != null) { contentHandler.ignorableWhitespace(ch, start, length); } } /** * Filter a processing instruction event. * * @param target The processing instruction target. * @param data The text following the target. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void processingInstruction (String target, String data) throws SAXException { if (contentHandler != null) { contentHandler.processingInstruction(target, data); } } /** * Filter a skipped entity event. * * @param name The name of the skipped entity. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void skippedEntity (String name) throws SAXException { if (contentHandler != null) { contentHandler.skippedEntity(name); } } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.ErrorHandler. //////////////////////////////////////////////////////////////////// /** * Filter a warning event. * * @param e The warning as an exception. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void warning (SAXParseException e) throws SAXException { if (errorHandler != null) { errorHandler.warning(e); } } /** * Filter an error event. * * @param e The error as an exception. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void error (SAXParseException e) throws SAXException { if (errorHandler != null) { errorHandler.error(e); } } /** * Filter a fatal error event. * * @param e The error as an exception. * @exception org.xml.sax.SAXException The client may throw * an exception during processing. */ public void fatalError (SAXParseException e) throws SAXException { if (errorHandler != null) { errorHandler.fatalError(e); } } //////////////////////////////////////////////////////////////////// // Internal methods. //////////////////////////////////////////////////////////////////// /** * Set up before a parse. * *Before every parse, check whether the parent is * non-null, and re-register the filter for all of the * events.
*/ private void setupParse () { if (parent == null) { throw new NullPointerException("No parent for filter"); } parent.setEntityResolver(this); parent.setDTDHandler(this); parent.setContentHandler(this); parent.setErrorHandler(this); } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// private XMLReader parent = null; private Locator locator = null; private EntityResolver entityResolver = null; private DTDHandler dtdHandler = null; private ContentHandler contentHandler = null; private ErrorHandler errorHandler = null; } // end of XMLFilterImpl.java org/xml/sax/helpers/XMLReaderAdapter.java 100644 0 0 34360 11146172375 16015 0 ustar 0 0 // XMLReaderAdapter.java - adapt an SAX2 XMLReader to a SAX1 Parser // http://www.saxproject.org // Written by David Megginson // NO WARRANTY! This class is in the public domain. // $Id: XMLReaderAdapter.java 226184 2005-04-08 10:53:24Z neeraj $ package org.xml.sax.helpers; import java.io.IOException; import java.util.Locale; import org.xml.sax.Parser; // deprecated import org.xml.sax.Locator; import org.xml.sax.InputSource; import org.xml.sax.AttributeList; // deprecated import org.xml.sax.EntityResolver; import org.xml.sax.DTDHandler; import org.xml.sax.DocumentHandler; // deprecated import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.SAXNotSupportedException; /** * Adapt a SAX2 XMLReader as a SAX1 Parser. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class wraps a SAX2 {@link org.xml.sax.XMLReader XMLReader} * and makes it act as a SAX1 {@link org.xml.sax.Parser Parser}. The XMLReader * must support a true value for the * http://xml.org/sax/features/namespace-prefixes property or parsing will fail * with a {@link org.xml.sax.SAXException SAXException}; if the XMLReader * supports a false value for the http://xml.org/sax/features/namespaces * property, that will also be used to improve efficiency.
* * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) * @see org.xml.sax.Parser * @see org.xml.sax.XMLReader */ public class XMLReaderAdapter implements Parser, ContentHandler { //////////////////////////////////////////////////////////////////// // Constructor. //////////////////////////////////////////////////////////////////// /** * Create a new adapter. * *Use the "org.xml.sax.driver" property to locate the SAX2 * driver to embed.
* * @exception org.xml.sax.SAXException If the embedded driver * cannot be instantiated or if the * org.xml.sax.driver property is not specified. */ public XMLReaderAdapter () throws SAXException { setup(XMLReaderFactory.createXMLReader()); } /** * Create a new adapter. * *Create a new adapter, wrapped around a SAX2 XMLReader. * The adapter will make the XMLReader act like a SAX1 * Parser.
* * @param xmlReader The SAX2 XMLReader to wrap. * @exception java.lang.NullPointerException If the argument is null. */ public XMLReaderAdapter (XMLReader xmlReader) { setup(xmlReader); } /** * Internal setup. * * @param xmlReader The embedded XMLReader. */ private void setup (XMLReader xmlReader) { if (xmlReader == null) { throw new NullPointerException("XMLReader must not be null"); } this.xmlReader = xmlReader; qAtts = new AttributesAdapter(); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.Parser. //////////////////////////////////////////////////////////////////// /** * Set the locale for error reporting. * *This is not supported in SAX2, and will always throw * an exception.
* * @param locale the locale for error reporting. * @see org.xml.sax.Parser#setLocale * @exception org.xml.sax.SAXException Thrown unless overridden. */ public void setLocale (Locale locale) throws SAXException { throw new SAXNotSupportedException("setLocale not supported"); } /** * Register the entity resolver. * * @param resolver The new resolver. * @see org.xml.sax.Parser#setEntityResolver */ public void setEntityResolver (EntityResolver resolver) { xmlReader.setEntityResolver(resolver); } /** * Register the DTD event handler. * * @param handler The new DTD event handler. * @see org.xml.sax.Parser#setDTDHandler */ public void setDTDHandler (DTDHandler handler) { xmlReader.setDTDHandler(handler); } /** * Register the SAX1 document event handler. * *Note that the SAX1 document handler has no Namespace * support.
* * @param handler The new SAX1 document event handler. * @see org.xml.sax.Parser#setDocumentHandler */ public void setDocumentHandler (DocumentHandler handler) { documentHandler = handler; } /** * Register the error event handler. * * @param handler The new error event handler. * @see org.xml.sax.Parser#setErrorHandler */ public void setErrorHandler (ErrorHandler handler) { xmlReader.setErrorHandler(handler); } /** * Parse the document. * *This method will throw an exception if the embedded * XMLReader does not support the * http://xml.org/sax/features/namespace-prefixes property.
* * @param systemId The absolute URL of the document. * @exception java.io.IOException If there is a problem reading * the raw content of the document. * @exception org.xml.sax.SAXException If there is a problem * processing the document. * @see #parse(org.xml.sax.InputSource) * @see org.xml.sax.Parser#parse(java.lang.String) */ public void parse (String systemId) throws IOException, SAXException { parse(new InputSource(systemId)); } /** * Parse the document. * *This method will throw an exception if the embedded * XMLReader does not support the * http://xml.org/sax/features/namespace-prefixes property.
* * @param input An input source for the document. * @exception java.io.IOException If there is a problem reading * the raw content of the document. * @exception org.xml.sax.SAXException If there is a problem * processing the document. * @see #parse(java.lang.String) * @see org.xml.sax.Parser#parse(org.xml.sax.InputSource) */ public void parse (InputSource input) throws IOException, SAXException { setupXMLReader(); xmlReader.parse(input); } /** * Set up the XML reader. */ private void setupXMLReader () throws SAXException { xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); try { xmlReader.setFeature("http://xml.org/sax/features/namespaces", false); } catch (SAXException e) { // NO OP: it's just extra information, and we can ignore it } xmlReader.setContentHandler(this); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.ContentHandler. //////////////////////////////////////////////////////////////////// /** * Set a document locator. * * @param locator The document locator. * @see org.xml.sax.ContentHandler#setDocumentLocator */ public void setDocumentLocator (Locator locator) { if (documentHandler != null) documentHandler.setDocumentLocator(locator); } /** * Start document event. * * @exception org.xml.sax.SAXException The client may raise a * processing exception. * @see org.xml.sax.ContentHandler#startDocument */ public void startDocument () throws SAXException { if (documentHandler != null) documentHandler.startDocument(); } /** * End document event. * * @exception org.xml.sax.SAXException The client may raise a * processing exception. * @see org.xml.sax.ContentHandler#endDocument */ public void endDocument () throws SAXException { if (documentHandler != null) documentHandler.endDocument(); } /** * Adapt a SAX2 start prefix mapping event. * * @param prefix The prefix being mapped. * @param uri The Namespace URI being mapped to. * @see org.xml.sax.ContentHandler#startPrefixMapping */ public void startPrefixMapping (String prefix, String uri) { } /** * Adapt a SAX2 end prefix mapping event. * * @param prefix The prefix being mapped. * @see org.xml.sax.ContentHandler#endPrefixMapping */ public void endPrefixMapping (String prefix) { } /** * Adapt a SAX2 start element event. * * @param uri The Namespace URI. * @param localName The Namespace local name. * @param qName The qualified (prefixed) name. * @param atts The SAX2 attributes. * @exception org.xml.sax.SAXException The client may raise a * processing exception. * @see org.xml.sax.ContentHandler#endDocument */ public void startElement (String uri, String localName, String qName, Attributes atts) throws SAXException { if (documentHandler != null) { qAtts.setAttributes(atts); documentHandler.startElement(qName, qAtts); } } /** * Adapt a SAX2 end element event. * * @param uri The Namespace URI. * @param localName The Namespace local name. * @param qName The qualified (prefixed) name. * @exception org.xml.sax.SAXException The client may raise a * processing exception. * @see org.xml.sax.ContentHandler#endElement */ public void endElement (String uri, String localName, String qName) throws SAXException { if (documentHandler != null) documentHandler.endElement(qName); } /** * Adapt a SAX2 characters event. * * @param ch An array of characters. * @param start The starting position in the array. * @param length The number of characters to use. * @exception org.xml.sax.SAXException The client may raise a * processing exception. * @see org.xml.sax.ContentHandler#characters */ public void characters (char ch[], int start, int length) throws SAXException { if (documentHandler != null) documentHandler.characters(ch, start, length); } /** * Adapt a SAX2 ignorable whitespace event. * * @param ch An array of characters. * @param start The starting position in the array. * @param length The number of characters to use. * @exception org.xml.sax.SAXException The client may raise a * processing exception. * @see org.xml.sax.ContentHandler#ignorableWhitespace */ public void ignorableWhitespace (char ch[], int start, int length) throws SAXException { if (documentHandler != null) documentHandler.ignorableWhitespace(ch, start, length); } /** * Adapt a SAX2 processing instruction event. * * @param target The processing instruction target. * @param data The remainder of the processing instruction * @exception org.xml.sax.SAXException The client may raise a * processing exception. * @see org.xml.sax.ContentHandler#processingInstruction */ public void processingInstruction (String target, String data) throws SAXException { if (documentHandler != null) documentHandler.processingInstruction(target, data); } /** * Adapt a SAX2 skipped entity event. * * @param name The name of the skipped entity. * @see org.xml.sax.ContentHandler#skippedEntity * @exception org.xml.sax.SAXException Throwable by subclasses. */ public void skippedEntity (String name) throws SAXException { } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// XMLReader xmlReader; DocumentHandler documentHandler; AttributesAdapter qAtts; //////////////////////////////////////////////////////////////////// // Internal class. //////////////////////////////////////////////////////////////////// /** * Internal class to wrap a SAX2 Attributes object for SAX1. */ final class AttributesAdapter implements AttributeList { AttributesAdapter () { } /** * Set the embedded Attributes object. * * @param The embedded SAX2 Attributes. */ void setAttributes (Attributes attributes) { this.attributes = attributes; } /** * Return the number of attributes. * * @return The length of the attribute list. * @see org.xml.sax.AttributeList#getLength */ public int getLength () { return attributes.getLength(); } /** * Return the qualified (prefixed) name of an attribute by position. * * @return The qualified name. * @see org.xml.sax.AttributeList#getName */ public String getName (int i) { return attributes.getQName(i); } /** * Return the type of an attribute by position. * * @return The type. * @see org.xml.sax.AttributeList#getType(int) */ public String getType (int i) { return attributes.getType(i); } /** * Return the value of an attribute by position. * * @return The value. * @see org.xml.sax.AttributeList#getValue(int) */ public String getValue (int i) { return attributes.getValue(i); } /** * Return the type of an attribute by qualified (prefixed) name. * * @return The type. * @see org.xml.sax.AttributeList#getType(java.lang.String) */ public String getType (String qName) { return attributes.getType(qName); } /** * Return the value of an attribute by qualified (prefixed) name. * * @return The value. * @see org.xml.sax.AttributeList#getValue(java.lang.String) */ public String getValue (String qName) { return attributes.getValue(qName); } private Attributes attributes; } } // end of XMLReaderAdapter.java org/xml/sax/helpers/XMLReaderFactory.java 100644 0 0 24315 11146172375 16043 0 ustar 0 0 // XMLReaderFactory.java - factory for creating a new reader. // http://www.saxproject.org // Written by David Megginson // and by David Brownell // NO WARRANTY! This class is in the Public Domain. // $Id: XMLReaderFactory.java 670295 2008-06-22 01:46:43Z mrglavas $ package org.xml.sax.helpers; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.xml.sax.XMLReader; import org.xml.sax.SAXException; /** * Factory for creating an XML reader. * ** This module, both source code and documentation, is in the * Public Domain, and comes with NO WARRANTY. * See http://www.saxproject.org * for further information. ** *
This class contains static methods for creating an XML reader * from an explicit class name, or based on runtime defaults:
* ** try { * XMLReader myReader = XMLReaderFactory.createXMLReader(); * } catch (SAXException e) { * System.err.println(e.getMessage()); * } ** *
Note to Distributions bundled with parsers:
* You should modify the implementation of the no-arguments
* createXMLReader to handle cases where the external
* configuration mechanisms aren't set up. That method should do its
* best to return a parser when one is in the class path, even when
* nothing bound its class name to org.xml.sax.driver
so
* those configuration mechanisms would see it.
This constructor prevents the class from being instantiated.
*/ private XMLReaderFactory () { } private static final String property = "org.xml.sax.driver"; /** * Default columns per line. */ private static final int DEFAULT_LINE_LENGTH = 80; /** * Attempt to create an XMLReader from system defaults. * In environments which can support it, the name of the XMLReader * class is determined by trying each these options in order, and * using the first one which succeeds:org.xml.sax.driver
* has a value, that is used as an XMLReader class name. org.xml.sax.parser
system
* property will often be usable.) In environments such as small embedded systems, which can not * support that flexibility, other mechanisms to determine the default * may be used.
* *Note that many Java environments allow system properties to be * initialized on a command line. This means that in most cases * setting a good value for that property ensures that calls to this * method will succeed, except when security policies intervene. * This will also maximize application portability to older SAX * environments, with less robust implementations of this method. *
* * @return A new XMLReader. * @exception org.xml.sax.SAXException If no default XMLReader class * can be identified and instantiated. * @see #createXMLReader(java.lang.String) */ public static XMLReader createXMLReader () throws SAXException { String className = null; ClassLoader loader = NewInstance.getClassLoader (); // 1. try the JVM-instance-wide system property try { className = SecuritySupport.getSystemProperty (property); } catch (Exception e) { /* normally fails for applets */ } // 2. if that fails, try META-INF/services/ if (className == null || className.length() == 0) { String service = "META-INF/services/" + property; InputStream is = null; className = null; // First try the Context ClassLoader ClassLoader cl = SecuritySupport.getContextClassLoader(); if (cl != null) { is = SecuritySupport.getResourceAsStream(cl, service); // If no provider found then try the current ClassLoader if (is == null) { cl = XMLReaderFactory.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, service); } } else { // No Context ClassLoader or JDK 1.1 so try the current // ClassLoader cl = XMLReaderFactory.class.getClassLoader(); is = SecuritySupport.getResourceAsStream(cl, service); } if (is != null) { // Read the service provider name in UTF-8 as specified in // the jar spec. Unfortunately this fails in Microsoft // VJ++, which does not implement the UTF-8 // encoding. Theoretically, we should simply let it fail in // that case, since the JVM is obviously broken if it // doesn't support such a basic standard. But since there // are still some users attempting to use VJ++ for // development, we have dropped in a fallback which makes a // second attempt using the platform's default encoding. In // VJ++ this is apparently ASCII, which is a subset of // UTF-8... and since the strings we'll be reading here are // also primarily limited to the 7-bit ASCII range (at // least, in English versions), this should work well // enough to keep us on the air until we're ready to // officially decommit from VJ++. [Edited comment from // jkesselm] BufferedReader rd; try { rd = new BufferedReader(new InputStreamReader(is, "UTF-8"), DEFAULT_LINE_LENGTH); } catch (java.io.UnsupportedEncodingException e) { rd = new BufferedReader(new InputStreamReader(is), DEFAULT_LINE_LENGTH); } try { // XXX Does not handle all possible input as specified by the // Jar Service Provider specification className = rd.readLine(); } catch (Exception x) { // No provider found } finally { try { // try to close the reader. rd.close(); } // Ignore the exception. catch (IOException exc) {} } } } // 3. Distro-specific fallback if (className == null) { // BEGIN DISTRIBUTION-SPECIFIC // EXAMPLE: // className = "com.example.sax.XmlReader"; // or a $JAVA_HOME/jre/lib/*properties setting... className = "org.apache.xerces.parsers.SAXParser"; // END DISTRIBUTION-SPECIFIC } // do we know the XMLReader implementation class yet? if (className != null) return loadClass (loader, className); // 4. panic -- adapt any SAX1 parser try { return new ParserAdapter (ParserFactory.makeParser ()); } catch (Exception e) { throw new SAXException ("Can't create default XMLReader; " + "is system property org.xml.sax.driver set?"); } } /** * Attempt to create an XML reader from a class name. * *Given a class name, this method attempts to load * and instantiate the class as an XML reader.
* *Note that this method will not be usable in environments where * the caller (perhaps an applet) is not permitted to load classes * dynamically.
* * @return A new XML reader. * @exception org.xml.sax.SAXException If the class cannot be * loaded, instantiated, and cast to XMLReader. * @see #createXMLReader() */ public static XMLReader createXMLReader (String className) throws SAXException { return loadClass (NewInstance.getClassLoader (), className); } private static XMLReader loadClass (ClassLoader loader, String className) throws SAXException { try { return (XMLReader) NewInstance.newInstance (loader, className); } catch (ClassNotFoundException e1) { throw new SAXException("SAX2 driver class " + className + " not found", e1); } catch (IllegalAccessException e2) { throw new SAXException("SAX2 driver class " + className + " found but cannot be loaded", e2); } catch (InstantiationException e3) { throw new SAXException("SAX2 driver class " + className + " loaded but cannot be instantiated (no empty public constructor?)", e3); } catch (ClassCastException e4) { throw new SAXException("SAX2 driver class " + className + " does not implement XMLReader", e4); } } } org/xml/sax/helpers/package.html 100644 0 0 514 11146172375 14301 0 ustar 0 0This package contains "helper" classes, including support for bootstrapping SAX-based applications.
See http://www.saxproject.org for more information about SAX.
org/xml/sax/package.html 100644 0 0 23755 11146172375 12713 0 ustar 0 0This package provides the core SAX APIs. Some SAX1 APIs are deprecated to encourage integration of namespace-awareness into designs of new applications and into maintenance of existing infrastructure.
See http://www.saxproject.org for more information about SAX.
One of the essential characteristics of SAX2 is that it added
feature flags which can be used to examine and perhaps modify
parser modes, in particular modes such as validation.
Since features are identified by (absolute) URIs, anyone
can define such features.
Currently defined standard feature URIs have the prefix
http://xml.org/sax/features/
before an identifier such as
validation
. Turn features on or off using
setFeature. Those standard identifiers are:
Feature ID | Access | Default | Description |
---|---|---|---|
external-general-entities | read/write | unspecified | Reports whether this parser processes external general entities; always true if validating. |
external-parameter-entities | read/write | unspecified | Reports whether this parser processes external parameter entities; always true if validating. |
is-standalone | (parsing) read-only, (not parsing) none | not applicable | May be examined only during a parse, after the startDocument() callback has been completed; read-only. The value is true if the document specified standalone="yes" in its XML declaration, and otherwise is false. |
lexical-handler/parameter-entities | read/write | unspecified | A value of "true" indicates that the LexicalHandler will report the beginning and end of parameter entities. |
namespaces | read/write | true | A value of "true" indicates namespace URIs and unprefixed local names for element and attribute names will be available. |
namespace-prefixes | read/write | false | A value of "true" indicates that XML qualified names (with prefixes) and attributes (including xmlns* attributes) will be available. |
resolve-dtd-uris | read/write | true | A value of "true" indicates that system IDs in declarations will
be absolutized (relative to their base URIs) before reporting.
(That is the default behavior for all SAX2 XML parsers.)
A value of "false" indicates those IDs will not be absolutized;
parsers will provide the base URI from
Locator.getSystemId().
This applies to system IDs passed in
|
string-interning | read/write | unspecified | Has a value of "true" if all XML names (for elements, prefixes, attributes, entities, notations, and local names), as well as Namespace URIs, will have been interned using java.lang.String.intern. This supports fast testing of equality/inequality against string constants, rather than forcing slower calls to String.equals(). |
unicode-normalization-checking | read/write | false | Controls whether the parser reports Unicode normalization errors as described in section 2.13 and Appendix B of the XML 1.1 Recommendation. If true, Unicode normalization errors are reported using the ErrorHandler.error() callback. Such errors are not fatal in themselves (though, obviously, other Unicode-related encoding errors may be). |
use-attributes2 | read-only | not applicable | Returns "true" if the Attributes objects passed by this parser in ContentHandler.startElement() implement the org.xml.sax.ext.Attributes2 interface. That interface exposes additional DTD-related information, such as whether the attribute was specified in the source text rather than defaulted. |
use-locator2 | read-only | not applicable | Returns "true" if the Locator objects passed by this parser in ContentHandler.setDocumentLocator() implement the org.xml.sax.ext.Locator2 interface. That interface exposes additional entity information, such as the character encoding and XML version used. |
use-entity-resolver2 | read/write | true | Returns "true" if, when setEntityResolver is given an object implementing the org.xml.sax.ext.EntityResolver2 interface, those new methods will be used. Returns "false" to indicate that those methods will not be used. |
validation | read/write | unspecified | Controls whether the parser is reporting all validity errors; if true, all external entities will be read. |
xmlns-uris | read/write | false | Controls whether, when the namespace-prefixes feature is set, the parser treats namespace declaration attributes as being in the http://www.w3.org/2000/xmlns/ namespace. By default, SAX2 conforms to the original "Namespaces in XML" Recommendation, which explicitly states that such attributes are not in any namespace. Setting this optional flag to "true" makes the SAX2 events conform to a later backwards-incompatible revision of that recommendation, placing those attributes in a namespace. |
xml-1.1 | read-only | not applicable | Returns "true" if the parser supports both XML 1.1 and XML 1.0. Returns "false" if the parser supports only XML 1.0. |
Support for the default values of the namespaces and namespace-prefixes properties is required. Support for any other feature flags is entirely optional.
For default values not specified by SAX2, each XMLReader implementation specifies its default, or may choose not to expose the feature flag. Unless otherwise specified here, implementations may support changing current values of these standard feature flags, but not while parsing.
For parser interface characteristics that are described
as objects, a separate namespace is defined. The
objects in this namespace are again identified by URI, and
the standard property URIs have the prefix
http://xml.org/sax/properties/
before an identifier such as
lexical-handler
or
dom-node
. Manage those properties using
setProperty(). Those identifiers are:
Property ID | Description |
---|---|
declaration-handler | Used to see most DTD declarations except those treated as lexical ("document element name is ...") or which are mandatory for all SAX parsers (DTDHandler). The Object must implement org.xml.sax.ext.DeclHandler. |
document-xml-version | May be examined only during a parse, after the startDocument() callback has been completed; read-only. This property is a literal string describing the actual XML version of the document, such as "1.0" or "1.1". |
dom-node | For "DOM Walker" style parsers, which ignore their parser.parse() parameters, this is used to specify the DOM (sub)tree being walked by the parser. The Object must implement the org.w3c.dom.Node interface. |
lexical-handler | Used to see some syntax events that are essential in some applications: comments, CDATA delimiters, selected general entity inclusions, and the start and end of the DTD (and declaration of document element name). The Object must implement org.xml.sax.ext.LexicalHandler. |
xml-string | Readable only during a parser callback, this exposes a TBS chunk of characters responsible for the current event. |
All of these standard properties are optional; XMLReader implementations need not support them.