xsl-list
[Top] [All Lists]

RE: [xsl] XSLT extention problem

2007-12-05 02:49:38
I notice that the spec of 

    public ImageIcon(String filename)

says: When specifying a path, use the Internet-standard forward-slash ("/")
as a separator.

whereas you are doing the opposite:

    path.replace("/", File.separator)

I've no idea if that's relevant to your problems.

Incidentally, this code:

<xsl:for-each select="@*">
  <xsl:if test="not(name(.)='WIDTH' or name(.)='HEIGHT')"> 
    <xsl:apply-templates select="."/> 
  </xsl:if> 
</xsl:for-each>

can be rewritten as

<xsl:apply-templates select="@* except (@WIDTH, @HEIGHT)"/>

(or just select="@*", with the addition of a do-nothing template to match
@WIDTH and @HEIGHT).

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: jingjun long [mailto:longjingjun(_at_)gmail(_dot_)com] 
Sent: 05 December 2007 07:09
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XSLT extention problem

hi there,

I am writing an Java extention for my XSLT.

There are two static method in the java code, there are:

int getHeight(String path);
int getWidth(String path);


package com.atomsoft.app.graphictools;

import java.io.File;

import javax.swing.ImageIcon;

public class GraphicInfo
{
public static int getWidth(String path)
{
int width = 0;

String temp_path = path.replace("/", File.separator); 
temp_path = temp_path.substring(6);

ImageIcon icon = new ImageIcon(temp_path); width = 
icon.getIconWidth();

return width;
}

public static int getHeight(String path) { int height = 0;

String temp_path = path.replace("/", File.separator); 
temp_path = temp_path.substring(6);

ImageIcon icon = new ImageIcon(temp_path); height = 
icon.getIconHeight();

return height;
}
}


The following is my XSLT:

<?xml version="1.0" encoding="utf-8"?>

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xs="http://www.w3.org/2001/XMLSchema";
xmlns:atomExt="com.atomsoft.app.graphictools.GraphicInfo"
version="2.0">

<xsl:param name="max_width" select="500"/>

<xsl:output method="xml" encoding="UTF-8" indent="yes"/>

<xsl:template match="SHEET">
<xsl:element name="{name()}">
<xsl:variable name="v_filepath" select="unparsed-entity-uri(@GNBR)"/>
<xsl:variable name="v_org_width" 
select="atomExt:getWidth($v_filepath)"/>
<xsl:variable name="v_org_height" 
select="atomExt:getHeight($v_filepath)"/>


<xsl:variable name="v_new_width">
<xsl:choose>
<xsl:when test="$v_org_width &gt; $max_width"><xsl:value-of 
select="$max_width"/></xsl:when> <xsl:otherwise><xsl:value-of 
select="$v_org_width"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>

<xsl:variable name="v_new_height" select="round($v_org_height 
* $v_new_width div $v_org_width)"/>

<xsl:attribute name="WIDTH" select="$v_new_width"/> 
<xsl:attribute name="HEIGHT" select="$v_new_height"/>

<xsl:for-each select="@*">
<xsl:if test="not(name(.)='WIDTH' or name(.)='HEIGHT')"> 
<xsl:apply-templates select="."/> </xsl:if> </xsl:for-each>

<xsl:apply-templates select="*"/>


</xsl:element>


</xsl:template>

<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="@*|node()"/> </xsl:element> 
</xsl:template>

<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>

</xsl:transform>



The xslt works. My problem is:
I tested the java code stand alone. It works fine. But when I 
call the java method in my XSLT, The result file is generated 
but the xslt command line is hanged.

It seems this problem have something to do the following java code:

ImageIcon icon = new ImageIcon(temp_path); height = 
icon.getIconHeight();

If I do not use this class (ImageIcon), it works fine in 
XSLT. Is there some special thing in this class?

I am using Saxon 8.9 as my XSLT engine.

Thanks

Jingjun



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>