Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » JDOM User »

[jdom-interest] Using xquery-operators in XSLT's

Holmes, Charles V.

2007-06-20

Replies:

Given a startTime (dateTime), endTime (dateTime) and intervals (integer), I'm attempting to come up with dateTimes evenly spaced between the startTime and endTime.  It seems that I need to use xquery-operators to do this since XSLT doesn't seem to provide the kind of date manipulation I need.  When I try to run this, I get an error (also below). 
 
Am I going about this the correct way, or is there a better way to do this?  Does JDOM provide support for xquery-operators in XSLT?  If not, is there another way to get these time intervals?  Or should I be using another processor for this?  On a slightly related node, position() works, but fn:position() doesn't.  Is this a XSLT 1.0 vs 2.0 thing?
 
Thanks,
Charles
 
<-------------ERROR---------------->
 
ERROR:  'The first argument to the non-static Java function 'subtractDateTimes' is not a valid object reference.'
FATAL ERROR:  'Could not compile stylesheet'
org.jdom.transform.XSLTransformException: Could not construct XSLTransformer: Could not compile stylesheet
 
 
<--------------------STYLESHEET---------------------------->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:sgp4="http://sever/common/sgp4"
 xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
 xmlns:op="http://www.w3.org/2001/12/xquery-operators"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml" />
 
<xsl:variable name="startTime" select="sgp4:SGP4Set/sgp4:startDateTime" />
<xsl:variable name="endTime"   select="sgp4:SGP4Set/sgp4:stopDateTime" />
<xsl:variable name="steps"     select="sgp4:SGP4Set/sgp4:steps" />
 
<xsl:template match="/">
 <result>
  <xsl:apply-templates />
 </result>
</xsl:template>
 
<xsl:template match="sgp4:timeSeries">
 <xsl:apply-templates/>
</xsl:template>
 
<xsl:template match="sgp4:SGP4Set/sgp4:timeSeries/sgp4:latLonXYZ">
 <timeLocation>
  <xsl:value-of select="$startTime + (position() * (op:subtract-dateTimes($startTime, $endTime) div steps))"/>
 </timeLocation>
</xsl:template>
 
</xsl:stylesheet>
<------------------------------CODE-------------------------------->
I'm then trying to transform it with the following code:
  String str = "<SGP4Set>" +
  "<startDateTime>2007-06-14T15:21:10.666+00:00</startDateTime>" +
  "<stopDateTime>2007-06-15T15:21:10.666+00:00</stopDateTime>" +
  "<steps>3</steps>" +
  "<elsetLine1>1 25544U 98067A   07164.33827071 -.00073317  00000-0 -41936-3 0  3835</elsetLine1>" +
  "<elsetLine2>2 25544 051.6334 123.8003 0008065 317.7457 198.0340 15.78097880490162</elsetLine2>" +
  "<timeSeries>" +
    "<latLonXYZ lat=\"-4.464837391096287\" lon=\"340.6854284795686\" height=\"333.1668901789984\" x=\"-2673.3476456175044\" y=\"6133.803881468676\" z=\"-519.1427930784305\" time=\"1874.1666666665114\"/>" +
    "<latLonXYZ lat=\"4.510324008580091\" lon=\"347.0371991370784\" height=\"332.65914429961356\" x=\"-3407.888183523746\" y=\"5757.110331891201\" z=\"524.3810905059737\" time=\"1877.0466666665116\"/>" +
    "<latLonXYZ lat=\"13.413484560305426\" lon=\"353.56508317710467\" height=\"333.1856535368585\" x=\"-4008.464009082425\" y=\"5154.103666587921\" z=\"1547.231195854609\" time=\"1879.9266666665117\"/>" + 
  "</timeSeries>" +
"</SGP4Set>";
 
   // setup our transformer
   SAXBuilder builder = new SAXBuilder();
   XSLTransformer transformer = new XSLTransformer("SGP4ToKML.xslt");
 
   // setup our document to transform
   StringReader sr = new StringReader(str);
   Document doc = builder.build(sr);
   
   // save the transformed document in doc2
   Document doc2 = transformer.transform(doc);
   String result = new XMLOutputter().outputString(doc);
   
   result = new XMLOutputter().outputString(doc2);
   
   XmlObject obj = XmlObject.Factory.parse(result);
   System.out.println(obj);
_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/youraddr@(protected)
©2008 junlu.com - Jax Systems, LLC, U.S.A.