Re: [xsl] system call?

Subject: Re: [xsl] system call?
From: JBryant@xxxxxxxxx
Date: Mon, 19 Sep 2005 13:06:02 -0500
I have a comment and an idea:

<xsl:variable name="year">
        <xsl:value-of select="article/fm/hdr/hdr2/pdt/yr"/>
</xsl:variable>

can be just

<xsl:variable name="year" elect="article/fm/hdr/hdr2/pdt/yr"/>

Also, I strongly suspect that you need / in front of that select string.

Now for the idea:

If you use an XSLT 2.0 processor (such as Saxon 8), you can get the 
current year as follows:

<xsl:variable name="thisyear" select="format-date(current-date(), 
'[Y0001]')"/>

Then you can use

<xsl:if test="$year = $thisyear">

The FAQ has information about getting the current date in XSLT 1.0:
http://www.dpawson.co.uk/xsl/sect2/dates.html

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)




TGolshan@xxxxxxxxxxxx 
09/19/2005 12:30 PM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc

Subject
[xsl] system call?






I am trying to disable URL links from legacy files. I am not sure how to 
do this without hard-coding the $year to the current year, 2005. Any 
better ideas? I have heard that one might be able to do a system call, but 

that completely escaped me. 

Thanks in advance,
troy

**************************

XML file
<hdr2>
        <obi>
                <volno></volno>
                        <issno></issno>
        </obi>
        <pdt>
                <mo></mo>
                        <yr>2005</yr>
        </pdt>
        <pp</pp>
</hdr2>

<p><url>URL TEXT HERE</url></p>
 

Code
<xsl:variable name="year">
        <xsl:value-of select="article/fm/hdr/hdr2/pdt/yr"/>
</xsl:variable>

<xsl:template match="url">
                <xsl:if test="$year='2005'">
                        <a>
                                <xsl:choose>
                                        <xsl:when test="
substring(text(),1,5)='http:'">
                                                <xsl:attribute name="href
"><xsl:value-of select="text()"/></xsl:attribute>
                                        </xsl:when>
                                        <xsl:when test="
substring(text(),1,4)='ftp:'">
                                                <xsl:attribute name="href
"><xsl:value-of select="text()"/></xsl:attribute>
                                        </xsl:when>
                                        <xsl:otherwise>
                                                <xsl:attribute name="href
"><xsl:value-of select="concat('http://',text())"/></xsl:attribute>
                                        </xsl:otherwise>
                                </xsl:choose>
                                        <xsl:attribute name="target">blank
</xsl:attribute>
                                                <xsl:apply-templates/>
                        </a>
                </xsl:if> 
                <xsl:if test="$year!='2005'">
                        <xsl:apply-templates/>
                </xsl:if>
        </xsl:template>

Current Thread
  • [xsl] system call?
    • TGolshan - Mon, 19 Sep 2005 10:30:51 -0700
      • JBryant - Mon, 19 Sep 2005 13:06:02 -0500 <=
      • <Possible follow-ups>
      • cknell - Mon, 19 Sep 2005 13:41:51 -0400