001: // SAX locator interface for document events.
002: // No warranty; no copyright -- use this as you will.
003: // $Id$
004:
005: package org.xml.sax;
006:
007: /**
008: * Interface for associating a SAX event with a document location.
009: *
010: * <blockquote>
011: * <em>This module, both source code and documentation, is in the
012: * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
013: * </blockquote>
014: *
015: * <p>If a SAX parser provides location information to the SAX
016: * application, it does so by implementing this interface and then
017: * passing an instance to the application using the content
018: * handler's {@link org.xml.sax.ContentHandler#setDocumentLocator
019: * setDocumentLocator} method. The application can use the
020: * object to obtain the location of any other content handler event
021: * in the XML source document.</p>
022: *
023: * <p>Note that the results returned by the object will be valid only
024: * during the scope of each content handler method: the application
025: * will receive unpredictable results if it attempts to use the
026: * locator at any other time.</p>
027: *
028: * <p>SAX parsers are not required to supply a locator, but they are
029: * very strongly encouraged to do so. If the parser supplies a
030: * locator, it must do so before reporting any other document events.
031: * If no locator has been set by the time the application receives
032: * the {@link org.xml.sax.ContentHandler#startDocument startDocument}
033: * event, the application should assume that a locator is not
034: * available.</p>
035: *
036: * @since SAX 1.0
037: * @author David Megginson,
038: * <a href="mailto:sax@megginson.com">sax@megginson.com</a>
039: * @version 2.0
040: * @see org.xml.sax.ContentHandler#setDocumentLocator
041: */
042: public interface Locator {
043:
044: /**
045: * Return the public identifier for the current document event.
046: *
047: * <p>The return value is the public identifier of the document
048: * entity or of the external parsed entity in which the markup
049: * triggering the event appears.</p>
050: *
051: * @return A string containing the public identifier, or
052: * null if none is available.
053: * @see #getSystemId
054: */
055: public abstract String getPublicId();
056:
057: /**
058: * Return the system identifier for the current document event.
059: *
060: * <p>The return value is the system identifier of the document
061: * entity or of the external parsed entity in which the markup
062: * triggering the event appears.</p>
063: *
064: * <p>If the system identifier is a URL, the parser must resolve it
065: * fully before passing it to the application.</p>
066: *
067: * @return A string containing the system identifier, or null
068: * if none is available.
069: * @see #getPublicId
070: */
071: public abstract String getSystemId();
072:
073: /**
074: * Return the line number where the current document event ends.
075: *
076: * <p><strong>Warning:</strong> The return value from the method
077: * is intended only as an approximation for the sake of error
078: * reporting; it is not intended to provide sufficient information
079: * to edit the character content of the original XML document.</p>
080: *
081: * <p>The return value is an approximation of the line number
082: * in the document entity or external parsed entity where the
083: * markup triggering the event appears.</p>
084: *
085: * <p>If possible, the SAX driver should provide the line position
086: * of the first character after the text associated with the document
087: * event. The first line in the document is line 1.</p>
088: *
089: * @return The line number, or -1 if none is available.
090: * @see #getColumnNumber
091: */
092: public abstract int getLineNumber();
093:
094: /**
095: * Return the column number where the current document event ends.
096: *
097: * <p><strong>Warning:</strong> The return value from the method
098: * is intended only as an approximation for the sake of error
099: * reporting; it is not intended to provide sufficient information
100: * to edit the character content of the original XML document.</p>
101: *
102: * <p>The return value is an approximation of the column number
103: * in the document entity or external parsed entity where the
104: * markup triggering the event appears.</p>
105: *
106: * <p>If possible, the SAX driver should provide the line position
107: * of the first character after the text associated with the document
108: * event.</p>
109: *
110: * <p>If possible, the SAX driver should provide the line position
111: * of the first character after the text associated with the document
112: * event. The first column in each line is column 1.</p>
113: *
114: * @return The column number, or -1 if none is available.
115: * @see #getLineNumber
116: */
117: public abstract int getColumnNumber();
118:
119: }
120:
121: // end of Locator.java
|