Would that be ok?
<scriptdef name="relpath" language="javascript">
<attribute name="property"/>
<attribute name="base"/>
<attribute name="file"/>
<![CDATA[
// Imports: Helper classes for Files
importClass(Packages.org.apache.tools.ant.util.FileUtils);
importClass(Packages.java.io.File);
// Access to the attributes
propName = attributes.get("property");
baseFile = new File(attributes.get("base"));
file = new File(attributes.get("file"));
// The relative
relPath = FileUtils.getRelativePath(file, baseFile);
if (!file.isDirectory()) {
relPath = (relPath.length() >= 3) ? relPath.substring(3) :
relPath;
}
relPath += "/";
// Store the result in a property
project.setNewProperty(propName, relPath);
]]>
</scriptdef>
<ac:for param="file">
<fileset dir="." includes="**/file.txt"/>
<sequential>
<relpath property="rel" base="x/a/b" file="@{file}"/>
<echo>
File: @{file}
Base: x/a/b
rel : ${rel}
</echo>
<ac:var name="rel" unset="true"/>
</sequential>
</ac:for>
Jan
>-----Ursprüngliche Nachricht-----
>Von: jbmdharris [mailto:[EMAIL PROTECTED]
>Gesendet: Sonntag, 9. November 2008 22:50
>An: [email protected]
>Betreff: Inserting different relative paths into multiple
>files using the same token
>
>
>I have many different HTML files in different directories.
>I'm already using
>the <copy> task with a <filterset> to replace tokens in these
>files. I'm
>trying to figure out how to create a token like @ROOTPATH@
>that will always
>resolve to the proper number of "../" patterns to get from the current
>directory to the root of the directory tree. This would be used for
>example, like this:
>
><a href="@ROOTPATH@/foo/bar.html">some link</a>
>
>In a file that then gets included into lots of other files in lots of
>different directories. So the value of @ROOTPATH@ needs to be
>different
>depending upon the directory in which file containing it is
>located. I am
>unable to use absolute directory paths because this HTML is
>only read off of
>a user's local disk instead of a webserver and an absolute
>path beginning at
>the user's C: drive (or / if on Unix) isn't acceptable. My
>ant build tasks
>use <replaceregexp> to simulate SSI <!--#include --> to get
>the contents of
>these files (like the banner) into all the other files.
>
>I've tried using this:
><for param="currentDir">
> <path>
> <dirset dir="${rootPath}"/>
> </path>
> <sequential>
> <propertyregex property="currentDirForwardSlashes"
>input="@{currentDir}" regexp="\\" replace="/"
>defaultvalue="@{currentDir}"
>override="true"/>
> <echo message="Path: ${currentDirForwardSlashes}"/>
> </sequential>
></for>
>
>But the path always comes back fully-qualified and I can't
>figure out how to
>truncate the ${rootPath} poriton of the path off the front of
>the path and
>then change the remaining directories in the path to ".."
>
>I've also tried using a recursive technique with <dirset
>includes="*"> so I
>only get one level at a time and then recursively call my task
>appending
>"../" to a parameter. However, I'm getting an error that
><antcall> can't
>call tasks recursively.
>
>Does anyone have any ideas?
>--
>View this message in context:
>http://www.nabble.com/Inserting-different-relative-paths-into-m
ultiple-files-using-the-same-token-tp20411245p20411245.html
>Sent from the Ant - Users mailing list archive at Nabble.com.
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]