You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by an...@apache.org on 2006/06/07 13:28:23 UTC

svn commit: r412369 - in /ant/core/trunk/src: etc/testcases/taskdefs/optional/ etc/testcases/taskdefs/optional/xml/ main/org/apache/tools/ant/taskdefs/optional/ testcases/org/apache/tools/ant/taskdefs/optional/

Author: antoine
Date: Wed Jun  7 04:28:22 2006
New Revision: 412369

URL: http://svn.apache.org/viewvc?rev=412369&view=rev
Log:
Fix for SystemId of stylesheet
Bugzilla 39407.

Added:
    ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/books.xml
    ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_include.xsl
    ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_with_include.xsl
Modified:
    ant/core/trunk/src/etc/testcases/taskdefs/optional/xslt.xml
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
    ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/optional/XsltTest.java

Added: ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/books.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/books.xml?rev=412369&view=auto
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/books.xml (added)
+++ ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/books.xml Wed Jun  7 04:28:22 2006
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<books>
+  <book name="hamlet">
+      <author name="shakespeare"/>
+  </book>
+   <book name="the lord of rings">
+       <author name="tolkien"/>
+   </book>
+   <book name="le malade imaginaire">
+       <author name="moliere"/>
+   </book>
+</books>
\ No newline at end of file

Added: ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_include.xsl
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_include.xsl?rev=412369&view=auto
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_include.xsl (added)
+++ ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_include.xsl Wed Jun  7 04:28:22 2006
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+  <xsl:template match="author">
+    <author>
+      <xsl:attribute name="name">
+        <xsl:value-of select="@name"/>
+      </xsl:attribute>
+    </author>
+  </xsl:template> 
+</xsl:stylesheet>

Added: ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_with_include.xsl
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_with_include.xsl?rev=412369&view=auto
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_with_include.xsl (added)
+++ ant/core/trunk/src/etc/testcases/taskdefs/optional/xml/stylesheet_with_include.xsl Wed Jun  7 04:28:22 2006
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+  <xsl:output method="xml"/>
+  <xsl:include href="stylesheet_include.xsl"/>
+  <xsl:template match="/">
+    <authors>
+        <xsl:apply-templates/>
+    </authors>
+  </xsl:template>
+</xsl:stylesheet>

Modified: ant/core/trunk/src/etc/testcases/taskdefs/optional/xslt.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/optional/xslt.xml?rev=412369&r1=412368&r2=412369&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/optional/xslt.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/optional/xslt.xml Wed Jun  7 04:28:22 2006
@@ -79,4 +79,10 @@
            style="xml/apache.xsl">
     </xslt>
   </target>
+  <target name="testStyleSheetWithInclude" depends="init">
+    <xslt in="xml/books.xml"
+           out="xml/out/test-out.xml"
+           style="xml/stylesheet_with_include.xsl">
+    </xslt>
+  </target>
 </project>

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java?rev=412369&r1=412368&r2=412369&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java Wed Jun  7 04:28:22 2006
@@ -27,6 +27,7 @@
 import java.io.OutputStream;
 import java.util.Vector;
 import java.util.Enumeration;
+import java.net.URL;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.ErrorListener;
@@ -50,6 +51,7 @@
 import org.apache.tools.ant.types.XMLCatalog;
 import org.apache.tools.ant.types.Resource;
 import org.apache.tools.ant.types.resources.FileResource;
+import org.apache.tools.ant.types.resources.URLResource;
 import org.apache.tools.ant.util.FileUtils;
 import org.apache.tools.ant.util.JAXPUtils;
 import org.xml.sax.EntityResolver;
@@ -65,6 +67,13 @@
 public class TraXLiaison implements XSLTLiaison3, ErrorListener, XSLTLoggerAware {
 
     /**
+     * Helper for transforming filenames to URIs.
+     *
+     * @since Ant 1.7
+     */
+    private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
+
+    /**
      * The current <code>Project</code>
      */
     private Project project;
@@ -126,6 +135,7 @@
         FileResource fr = new FileResource();
         fr.setProject(project);
         fr.setFile(stylesheet);
+        setStylesheet(fr);
     }
 
     /**
@@ -249,8 +259,21 @@
         // The line below is a hack: the system id must an URI, but it is not
         // cleat to get the URI of an resource, so just set the name of the
         // resource as a system id
-        src.setSystemId(resource.getName());
+        src.setSystemId(resourceToURI(resource));
         return src;
+    }
+
+    private String resourceToURI(Resource resource) {
+        if (resource instanceof FileResource) {
+            File f = ((FileResource) resource).getFile();
+            return FILE_UTILS.toURI(f.getAbsolutePath());
+        }
+        if (resource instanceof URLResource) {
+            URL u = ((URLResource) resource).getURL();
+            return String.valueOf(u);
+        } else {
+            return resource.getName();
+        }
     }
 
     /**

Modified: ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/optional/XsltTest.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/optional/XsltTest.java?rev=412369&r1=412368&r2=412369&view=diff
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/optional/XsltTest.java (original)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/optional/XsltTest.java Wed Jun  7 04:28:22 2006
@@ -88,5 +88,16 @@
     public void testXMLWithEntitiesInNonAsciiPath() throws Exception {
         executeTarget("testXMLWithEntitiesInNonAsciiPath");
     }
+
+    /**
+     * check that the system id gets set properly on stylesheets.
+     * @throws Exception if something goes wrong.
+     */
+    public void testStyleSheetWithInclude() throws Exception {
+        executeTarget("testStyleSheetWithInclude");
+        if (getLog().indexOf("java.io.FileNotFoundException") != -1) {
+            fail("xsl:include was not found");
+        }
+    }
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org