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 |