|
Subject: RE: [xsl] regexp question From: "Michael Kay" <mhk@xxxxxxxxx> Date: Sun, 12 Sep 2004 18:58:28 +0100 |
A repetition count in a regex is indicated by curly braces, not square
brackets. Remember also that in an attribute value template, curly braces
must be doubled. So you want:
regex='(\d{{4}})(\d{{2}})(\d{{2}})'
Alternatively, you could just as well use
regex='(....)(..)(..)'
Some people might argue that regular expressions are overkill for this task
and you should use concat() and substring() - but that's an area where
opinions may differ.
Michael Kay
> -----Original Message-----
> From: Bruce D'Arcus [mailto:bdarcus@xxxxxxxxxxxxx]
> Sent: 12 September 2004 15:58
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] regexp question
>
> Using XSLT 2.o, I want to take this:
>
> <meta name="pdate" content="20001123"/>
>
> .... and get this:
>
> <meta name="dateIssued" content="2000-11-23"/>
>
> Why isn't the following pattern matching (in the xhtml:meta
> template),
> and is there a better way?
>
> <xsl:when test="@name='pdate'">
> <xsl:analyze-string select="@content"
> regex='(\d[4])(\d[2])(\d[2])'>
> <xsl:matching-substring>
> <meta name="dateIssued">
> <xsl:attribute name="content">
> <xsl:value-of select="regex-group(1)"/>
> <xsl:text>-</xsl:text>
> <xsl:value-of select="regex-group(2)"/>
> <xsl:text>-</xsl:text>
> <xsl:value-of select="regex-group(3)"/>
> </xsl:attribute>
> </meta>
> </xsl:matching-substring>
> <xsl:non-matching-substring>
> <meta name="dateIssued" content="{.}"/>
> </xsl:non-matching-substring>
> </xsl:analyze-string>
> </xsl:when>
>
> Bruce
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] regexp question, Bruce D'Arcus | Thread | Re: [xsl] regexp question, Bruce D'Arcus |
| [xsl] regexp question, Bruce D'Arcus | Date | Re: [xsl] regexp question, Bruce D'Arcus |
| Month |