1. | Another way of getting date and time, if you are connected to the net |
I have modified the output of the URL 'http://xobjex.com/cgi-bin/date.pl' to produce timezones (local, and utc), a XML Schema friendly stamp, and component data for each date. Like this: <?xml version="1.0" encoding="utf-8"?>
<date>
<local tz="PDT" stamp="2004-08-20T17:40:47">
<year>2004</year>
<month>08</month>
<day>20</day>
<hour>17</hour>
<minute>40</minute>
<second>47</second>
</local>
<utc tz="GMT" stamp="2004-08-21T00:40:47">
<year>2004</year>
<month>08</month>
<day>21</day>
<hour>00</hour>
<minute>40</minute>
<second>47</second>
</utc>
</date>
So you'll want to use it in a manner similar to these examples:
<xsl:variable
name="date"
select="document('http://xobjex.com/cgi-bin/date.pl)/date"/>
<xsl:variable
name="stamp"
select="$date/utc/@stamp"/>
<!-- produces: On the third stroke it will be 2004-08-21T00:40:47 --> <h1>
On the third stroke it will be
<xsl:value-of select="$stamp"/>
</h1>
<!-- produces: In Santa Monica, California, the sun set
at 7:34 PM PDT today. -->
<p>
<xsl:text>In Santa Monica, California, the sun set at 7:34 PM </xsl:text>
<xsl:value-of select="$date/local/@tz"/>
<xsl:text> today.</xsl:text>
</p>
<!-- produces: The date in London is 21-08-2004. --> <p>
<xsl:text>The date in London is </xsl:text>
<xsl:value-of select="concat(
$date/utc/day, '-',
$date/utc/month, '-',
$date/utc/year
)"/>
<xsl:text>.</xsl:text>
</p>
<!-- produces: The date in Santa Monica is 20-08-2004. --> <p>
<xsl:text>The date in London is </xsl:text>
<xsl:value-of select="concat(
$date/local/day, '-',
$date/local/month, '-',
$date/local/year
)"/>
<xsl:text>.</xsl:text>
</p>
| |
2. | Get time and data |
There is currently no way to do this from within an XSL sheet. I use external tools to write the desired information into a XML file and get the value into the XSL sheet by using document(): Command line frame (requires Unix toolset, Korn shell or bash): cat >time.xml <<EOF
<?xml version="1.0" encoding="ISO-8859-1"?>
<time>$(date "+%Y-%m-%d %H:%M:%S")</time>
EOF
saxon -o $3 $1 $2
XSL snippet:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="time" select="document('time.xml')/time"/>
...
This reads a nicely formatted timestamp into the $time variable. If you need year, month, day etc. separately, you could structure the time.xml file: cat >time.xml <<EOF <?xml version="1.0" encoding="ISO-8859-1"?> <time> <year>$(date "+%Y")</year> <month>$(date "+%m")</month> ... </time> EOF <?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="time" select="document('time.xml')/time"/>
...
<my-year><xsl:value-of select="$time/year"/></my-year>
...
Of course, if you work on Windows, creating time.xml may be a greater challenge. I installed an Unix toolset on my windows machine (the example above was developed on windows!). There are several, you might want to check out the free CYGWIN toolkit at http://www.cygwin.org . Alternatively, you can use WSH, Visual Basic, Perl or write a java program. | |
3. | Insert date and time |
* generate a timestamp (this is a M$-DOS example) |