Subject: RE: xsl:analyze-string
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 2 Aug 2004 09:46:31 +0100
|
I think that rather than using xsl:analyze-string to analyze the value of
regex-group(5), I would use a sequence of calls on matches():
<xsl:variable name="fname" select="regex-group(5)"/>
<xsl:choose>
<xsl:when test="matches($fname, 'b$')">...
<xsl:when test="matches($fname, 'm$')">...
<xsl:otherwise>...
Michael Kay
> -----Original Message-----
> From: David.Pawson@xxxxxxxxxxx [mailto:David.Pawson@xxxxxxxxxxx]
> Sent: 02 August 2004 08:33
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: xsl:analyze-string
>
> Problem:
>
> I have xml looking like
> <record>19/08/1992 09:08 111938 500014.08b</record>
>
> Of interest is the last field, the dos file name.
> Its general form is
> nnnnnn.nnA n=int, A =A-Z.
>
> I can use the analyze-string to parse this (mostly),
> I'm missing a processing model to take care of exceptions.
>
> E.g. xxx.01a is a particular (valid form).
> On occasions someone has misnamed the file xxx.ola using o instead
> of 0 letter l instead of 1.
>
> I'm missing the nest of cases: My code is shown below.
> What's the logic to posively select all the known/valid combinations
> are exhausted?
> I want to add some form of error markup to identify these rogues.
>
> Valid options include, for regex-group(5)
>
> nnb
> nnm
> nnl
> nnf
> lab
>
> TIA, regards DaveP
>
>
>
> <xsl:template match="record">
> <xsl:analyze-string select="." flags="i" regex=
> "([0-9]+/[0-9]+/[0-9]+) +([0-9]+:[0-9]+) +([0-9]+)
> +([0-9]+)\.([0-9a-z]+)" >
> <xsl:matching-substring>
> <file>
> <nm><xsl:value-of select="regex-group(4)"/></nm>
> <ext><xsl:value-of select="regex-group(5)"/></ext>
> <xsl:analyze-string select="regex-group(5)" flags="i" regex=
> "([0-9]{{1,2}})([a-z])">
> <xsl:matching-substring>
> <vol><xsl:value-of select="regex-group(1)"/></vol>
> <type>
> <xsl:choose>
> <xsl:when test="regex-group(2) = 'b' or
> regex-group(2) =
> 'B'">
> <xsl:text>braille</xsl:text>
> </xsl:when>
> <xsl:when test="regex-group(2) = 'm' or
> regex-group(2) =
> 'M'">
> <xsl:text>Moon</xsl:text>
> </xsl:when>
> <xsl:when test="regex-group(2) = 'l' or
> regex-group(2) =
> 'L'">
> <xsl:text>ATOD</xsl:text>
> </xsl:when>
> <xsl:when test="regex-group(2) = 'f' or
> regex-group(2) =
> 'F'">
> <xsl:text>DiskFile</xsl:text>
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of select="."/>
> </xsl:otherwise>
> </xsl:choose>
> </type>
> </xsl:matching-substring>
> </xsl:analyze-string>
>
> <xsl:if test="regex-group(5)='lab'">
> <type>label</type>
> </xsl:if>
> </file>
> </xsl:matching-substring>
> </xsl:analyze-string>
> </xsl:template>
>
>
> Regards DaveP.
>
> **** snip here *****
>
> --
> DISCLAIMER:
>
> NOTICE: The information contained in this email and any
> attachments is
> confidential and may be privileged. If you are not the intended
> recipient you should not use, disclose, distribute or copy any of the
> content of it or of any attachment; you are requested to notify the
> sender immediately of your receipt of the email and then to delete it
> and any attachments from your system.
>
> RNIB endeavours to ensure that emails and any attachments
> generated by
> its staff are free from viruses or other contaminants. However, it
> cannot accept any responsibility for any such which are transmitted.
> We therefore recommend you scan all attachments.
>
> Please note that the statements and views expressed in this email and
> any attachments are those of the author and do not
> necessarily represent
> those of RNIB.
>
> RNIB Registered Charity Number: 226227
>
> Website: http://www.rnib.org.uk
|