xsl-list
[Top] [All Lists]

RE: [xsl] Basic template matching issues - I think?

2012-11-20 12:52:20
On Tue, 2012-11-20 at 17:55 +0000, An OldBloke wrote:

C:\>java -jar saxon9he.jar -o Result.xml text.xml regextime.xslt
Error at xsl:analyze-string on line 13 of regextime.xslt:
  XTDE1140: Error in regular expression: net.sf.saxon.trans.XPathException: 
Error at
  character 8 in regular expression "(\d{2})\/(\d{2})\/(\d{4}) (\d{...": 
invalid
 escape sequence
Failed to compile stylesheet. 1 error detected.

Character 8 in the expression would be the \ in \/ and indeed we find if
we check the spec that \/ is not a valid sequence.

Remember that \ introduces things that are special. If you want a / that
is not special, just put a / there.

It's necessary to escape / in ed, sed, vi, if you used / as the
delimiter for the expression --
   s/pattern/replacement with \/ in it/
but that does not apply in XSLT.

The special characters in regular expressions *without* a / are
[ ]  ( )  { }  +  *  ?  ^  $



I'm looking to re-format the time attribute to a datetime format -
from '12/11/2012 6:12:04 AM' to '2012-22-12T06:12:04' in this case.
Unless anyone knows a better way of re-formatting date/times? - I'm
open to ideas.

Your result doesn't correspond to the input; I'm not sure how you get
2012-22-12 from 12/11/2012. Maybe you mean 22/12/2012.

I'd watch for variants like 2/3/2012 by the way, so use \d{1,2} for the
day and month (or month and day if the date might be in American
format).

So we get to
(\d{{1,2}})/(\d{{1,2}})\/(\d{{4}}) (\d{{1,2}}):(\d{{2}}):(\d{{2}})
which may work.

I'd use a variable to avoid having to double the braces:
<xsl:variable name="datetime-regex"
 select="(\d{1,2})/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{2}):(\d{2})" />
<xsl:analyze-string select="Time" regex="{$datetime-regex}">
  . . .

Liam

-- 
Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/
Pictures from old books: http://fromoldbooks.org/
Ankh: irc.sorcery.net irc.gnome.org freenode/#xml


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>