Index: src/main/java/org/apache/xmlgraphics/io/ResourceResolver.java
===================================================================
--- src/main/java/org/apache/xmlgraphics/io/ResourceResolver.java	(revision 1815318)
+++ src/main/java/org/apache/xmlgraphics/io/ResourceResolver.java	(working copy)
@@ -40,6 +40,15 @@
     Resource getResource(URI uri) throws IOException;
 
     /**
+     * Get the last modified time of the resource
+     *
+     * @param uri the resource URI
+     * @return the last modified time or -1 if we cannot obtain the last modified time
+     * @throws IOException if an I/O error occured whilst determining the last modified time of the resource
+     */
+    long getLastModified(URI uri) throws IOException;
+
+    /**
      * Gets an output stream of a given URI.
      *
      * @param uri the output stream URI
Index: src/main/java/org/apache/xmlgraphics/io/TempResourceResolver.java
===================================================================
--- src/main/java/org/apache/xmlgraphics/io/TempResourceResolver.java	(revision 1815318)
+++ src/main/java/org/apache/xmlgraphics/io/TempResourceResolver.java	(working copy)
@@ -38,6 +38,15 @@
     Resource getResource(String id) throws IOException;
 
     /**
+     * Get the last modified time of the temporary-resource
+     *
+     * @param id the resource identifier
+     * @return the last modified time or -1 if we cannot obtain the last modified time
+     * @throws IOException if an I/O error occured whilst determining the last modified time of the resource
+     */
+    long getLastModified(String id) throws IOException;
+
+    /**
      * Gets an temporary-output stream of a given identifier.
      *
      * @param id the output stream identifier
Index: src/main/java/org/apache/xmlgraphics/io/URIResolverAdapter.java
===================================================================
--- src/main/java/org/apache/xmlgraphics/io/URIResolverAdapter.java	(revision 1815318)
+++ src/main/java/org/apache/xmlgraphics/io/URIResolverAdapter.java	(working copy)
@@ -20,8 +20,10 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.net.HttpURLConnection;
 import java.net.URI;
 import java.net.URL;
+import java.net.URLConnection;
 
 import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
@@ -59,6 +61,36 @@
     }
 
     /** {@inheritDoc} */
+    public long getLastModified(URI uri) throws IOException {
+        try {
+            Source src = resolver.resolve(uri.toASCIIString(), null);
+            if(src == null) {
+                return -1;
+            }
+
+            final String systemId = src.getSystemId();
+            if(systemId.startsWith("http://") || systemId.startsWith("https://")) {
+                URL url = new URL(systemId);
+                HttpURLConnection conn = null;
+                try {
+                    conn = (HttpURLConnection) url.openConnection();
+                    conn.setRequestMethod("HEAD");
+                    conn.connect();
+
+                    return conn.getLastModified();
+
+                } finally {
+                    conn.disconnect();
+                }
+            } else {
+                return -1;
+            }
+        } catch (TransformerException e) {
+            throw new IOException(e.getMessage());
+        }
+    }
+
+    /** {@inheritDoc} */
     public OutputStream getOutputStream(URI uri) throws IOException {
         try {
             Source src = resolver.resolve(uri.toASCIIString(), null);
