- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Fri, 14 Apr 2006 08:37:36 +0100
- To: public-xml-processing-model-wg@w3.org
Hi Alex,
> Here are two steps from my tideinfo example service [1][2]:
Could you explain what this second step is doing:
> 2. Similarly, here is a regular expression with a step (a subpipeline)
> the is run on the expression matches:
>
> <p:regex select="line" pattern="^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)">
> <p:xslt>
> <xsl:transform version="1.0">
> <xsl:param name="group-1"/>
> <xsl:param name="group-2"/>
> <xsl:param name="group-3"/>
> <xsl:param name="group-4"/>
> <xsl:template match="/">
> <xsl:variable name="month"
> select="substring-before($group-1,'/')"/>
> <xsl:variable name="day"
> select="substring-before(substring-after($group-1,'/'),'/')"/>
> <xsl:variable name="year"
> select="substring-after(substring-after($group-1,'/'),'/')"/>
>
> <t:tide-level date="{$year}-{$month}-{$day}" level="{$group-4}">
> <xsl:choose>
> <xsl:when test="$group-3='EST'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-05:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='EDT'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-04:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='CST'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-06:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='CDT'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-05:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='MST'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-07:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='MDT'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-06:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='PST'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-08:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='PDT'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-07:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='AKST'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-09:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='AKDT'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-08:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='HAST'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-10:00</xsl:attribute>
> </xsl:when>
> <xsl:when test="$group-3='HADT'">
> <xsl:attribute name="time"><xsl:value-of
> select="$group-2"/>-09:00</xsl:attribute>
> </xsl:when>
> <xsl:otherwise>
> <xsl:attribute name="time">unknown</xsl:attribute>
> </xsl:otherwise>
> </xsl:choose>
> </t:tide-level>
> </xsl:template>
> </xsl:transform>
> </p:xslt>
> </p:regex>
I think that the XSLT transformation nested within the <p:xslt> element
is being run with an empty source document and with the parameters
$group-1 to $group-4 being set to the matches identified by the
<p:regex> step. Right?
Is the regex component being passed the XSLT transformation as an input?
Or does the <p:xslt> element represent a normal step? If the latter,
what's the difference between embedding the <p:xslt> step within the
<p:regex> step and linking them through the normal input/output
channels? How does the pipeline engine know that the subexpression
matches need to be assigned to the $group-1 to $group-4 parameters?
Currently I don't understand why you don't have the regex component
generate an XML document that then acts as the input to a normal xslt
step: I don't understand the point of the embedding of the xslt step.
I'm hoping you'll enlighten me.
Thanks,
Jeni
--
Jeni Tennison
http://www.jenitennison.com
Received on Friday, 14 April 2006 07:37:53 UTC