RE: [xsl] Up Conversion - Best Practice

Subject: RE: [xsl] Up Conversion - Best Practice
From: "James Sulak" <jsulak@xxxxxxxxxxxxxxxx>
Date: Thu, 8 May 2008 12:09:47 -0500
One alternative, instead of nesting the <xsl:analyze-string/>s, is to
place them inside of templates in different modes.  Then you can apply
templates in the first mode, store the result in a variable, then apply
templates to that variable in the next mode, and so on.

For example:

<xsl:template match="text()" priority="1">
        <xsl:variable name="step_1">
            <xsl:apply-templates select="." mode="tag_regex1"/>
        </xsl:variable>
        <xsl:variable name="step_2">
            <xsl:apply-templates select="$step_1" mode="tag_regex2"/>
        </xsl:variable>
        <xsl:variable name="step_3">
            <xsl:apply-templates select="$step_2" mode="tag_regex3"/>
        </xsl:variable>
        <xsl:apply-templates select="$step_3" mode="tag_regex4"/>
    </xsl:template>

<xsl:template match="text()" mode="tag_regex1" priority="1">
     <xsl:analyze-string />
</xsl:template>

<xsl:template match="text()" mode="tag_regex2" priority="1">
     <xsl:analyze-string />
</xsl:template>

And so on.  You can of course adjust the match attributes to fit your
situation.

Hope this helps,

-James

-----
James Sulak
Electronic Publishing Developer
Jones McClure Publishing



-----Original Message-----
From: Kevin Bird [mailto:kevin.bird@xxxxxxxxxxxxxxxxxxxxxxx]
Sent: Thursday, May 08, 2008 12:00 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Up Conversion - Best Practice

> in which case you can (if you want) concatenate the regexp together
> separated by | and just use one regexp and one xsl:analyze-string then
> test inside the xsl:matching-substring which case you are in by
looking
> which regex-group() are non empty.

Here is one of my regular expressions which is capturing 13 groups.

<xsl:analyze-string select="$input-file"
regex="&lt;body&gt;&lt;tab&gt;(.*?)?&lt;tab&gt;(.*?)\(([a-z]+)\.([a-z]+)
\.([0-9]+) ex (.*?)&lt;enr&gt;(.*?)\)([0-9,
]+)?&lt;tab&gt;([0-9]+)&lt;tab&gt;([0-9]+)&lt;tab&gt;([0-9]+)&lt;tab&gt;
([0-9]+)&lt;tab&gt;([0-9]+)$">

So I probably don't want to concatenate all ten into one line!!

Any other suggestions?

Kind regards.

--
Kevin

Current Thread