RE: [xsl] xsl:analyze-string

Subject: RE: [xsl] 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] 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 

Current Thread