Index: gnu/xml/stream/SAXParser.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/xml/stream/SAXParser.java,v
retrieving revision 1.12
diff -u -r1.12 SAXParser.java
--- gnu/xml/stream/SAXParser.java 7 Jan 2006 12:36:07 -0000 1.12
+++ gnu/xml/stream/SAXParser.java 7 Jan 2006 14:41:16 -0000
@@ -72,6 +72,21 @@
/**
* JAXP SAX parser using an underlying StAX parser.
+ * This parser supports the following additional SAX features and
+ * properties:
+ *
+ * Features |
+ * http://gnu.org/sax/features/xml-base |
+ * read/write |
+ * Indicates or sets whether XML Base processing is enabled |
+ * Properties |
+ * http://gnu.org/sax/properties/base-uri |
+ * read-only | String |
+ * Returns the base URI of the current event |
+ * http://gnu.org/sax/properties/document-xml-encoding |
+ * read-only | String |
+ * Returns the encoding specified in the XML declaration |
+ *
*
* @author Chris Burdess
*/
@@ -104,6 +119,7 @@
String xmlVersion;
boolean xmlStandalone;
String xmlEncoding;
+ String baseURI;
public SAXParser()
{
@@ -183,6 +199,8 @@
final String PROPERTIES = "http://xml.org/sax/properties/";
final String GNU_FEATURES = "http://gnu.org/sax/features/";
final String GNU_PROPERTIES = "http://gnu.org/sax/properties/";
+ if ((GNU_FEATURES + "base-uri").equals(name))
+ return baseURI;
if ((FEATURES + "is-standalone").equals(name))
return xmlStandalone ? Boolean.TRUE : Boolean.FALSE;
if ((FEATURES + "namespaces").equals(name))
@@ -343,6 +361,7 @@
this);
}
reader = parser;
+ baseURI = systemId;
if (xIncludeAware)
reader = new XIncludeFilter(parser, systemId, namespaceAware,
@@ -355,7 +374,10 @@
{
while (parser.hasNext())
{
- switch (parser.next())
+ int event = parser.next();
+ if (baseAware)
+ baseURI = parser.getXMLBase();
+ switch (event)
{
case XMLStreamConstants.CHARACTERS:
if (contentHandler != null)
Index: gnu/xml/stream/XMLParser.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/xml/stream/XMLParser.java,v
retrieving revision 1.16
diff -u -r1.16 XMLParser.java
--- gnu/xml/stream/XMLParser.java 7 Jan 2006 12:29:06 -0000 1.16
+++ gnu/xml/stream/XMLParser.java 7 Jan 2006 14:41:17 -0000
@@ -1426,7 +1426,7 @@
/**
* Returns the current base URI for resolving external entities.
*/
- private String getXMLBase()
+ String getXMLBase()
{
if (baseAware)
{