Re: [xsl] Measure the length of an XML document in bytes

Subject: Re: [xsl] Measure the length of an XML document in bytes
From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx>
Date: Fri, 5 Aug 2005 16:34:48 +0530
You can configure Xalan-J in XMLSpy 2005 EE as follows:

In Tools | Options | XSL

Specify in "External Transformation Program"
java org.apache.xalan.xslt.Process -in %1 -xsl %3 -out %2 -param
filename node.xml

Xalan-J's JAR file should be in JVM's CLASSPATH.

(The namespace of Java class need not be changed)

Regards,
Mukul

On 8/5/05, Khorasani, Houman <houman_khorasani@xxxxxxxxxxxxxx> wrote:
> Hello Mukul,
>
> Very nice example.  Indeed I could try to convince the project manager
> with this solution.
>
> However we are right now using just the built-in XSLT processor of
> XMLSpy 2004. And I have to present them the demo with that.
>
> What do I have to do in order to use the class with XMLSpy?  I guess the
> namespace below has to be changed, right?
>
> xmlns:my-class="xalan://MyPackage.Utility"
> ...
> File Size : <xsl:value-of select="my-class:getFileSize($filename)" />
> bytes
>
>
> Many Thanks,
> Houman
>
>
> -----Original Message-----
> From: Mukul Gandhi [mailto:gandhi.mukul@xxxxxxxxx]
> Sent: 05 August 2005 05:13
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Measure the length of an XML document in bytes
>
> Hi Houman,
>   I just finished writing a Java extension function which determines
> file size in bytes (as reported by Windows). Below is the Java code,
> XSLT stylesheet and Xalan command line. With this stylesheet, we can
> pass the file name from command line.
>
> Java file
> -----------
> package MyPackage;
>
> import java.io.File;
>
> public class Utility {
>
>  public static long getFileSize(String filename) {
>    File file = new File(filename);
>    return file.length();
>  }
> }
>
> XSLT stylesheet
> -----------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
>                xmlns:my-class="xalan://MyPackage.Utility"
>                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>
> <xsl:output method="text" />
>
> <xsl:param name="filename" />
>
> <xsl:template match="/">
>  File Size : <xsl:value-of select="my-class:getFileSize($filename)" />
> bytes
> </xsl:template>
>
> </xsl:stylesheet>
>
> Xalan Command Line
> ------------------------------
> C:\xml\xsleg\xslt>java org.apache.xalan.xslt.Process -in file_size.xsl
> -xsl file
> _size.xsl -PARAM filename node.xml
>
>  File Size : 111 bytes
>
> But sorry, if this is not what you want. Just thought of sharing the
> code.
>
> Regards,
> Mukul
>
> On 8/4/05, Khorasani, Houman <houman_khorasani@xxxxxxxxxxxxxx> wrote:
> > Hi Mukul,
> >
> > Interesting idea. However I am stuck between two middlewares.  I have
> to
> > use plain XSLT's. There won't be any java involved.
> >
> > Actually, I read the customers req. and it says lengths of the
> > characters are good enough. So I don't need to know the length in
> bytes.
> >
> > So if I would use string-length() like this
> >
> > <xsl:value-of select="string-length(*)"/>
> >
> > I would get just the length of the first value.
> > I wish I could use it like that:
> >
> > <xsl:value-of select="string-length(<xsl:copy-of select="*"/>)"/>
> >
> > But this is not possible.
> > Any ideas how to count the length of a document character by
> character?
> >
> > Many thanks,
> > Houman

Current Thread