Hi Gregory,
This is a common pitfall of Shortest, as it does not get the Shortest expressions when used with Strings.
StringCases[text, ___ ~~ y : Shortest["<FILER>" ~~ ___ ~~ id ~~ ___ ~~ "</FILER>"] ~~ ___ :>y]
That does work. Sometimes one needs to specify and Except[...] inside as well.
The problem is that strings are matched in a certain way from left to right such that:
StringCases["<f>test</f><f>WWW</f><f>test</f>", Shortest["<f>" ~~ ___ ~~ "WWW" ~~ ___ ~~ "</f>"]]
will return
"<f>test</f><f>WWW</f>"
not
"<f>WWW</f>"
If you really want to know why you have to read the PCRE documentation as (as far as I know) the Wolfram-patterns are converted to PCRE and then that library is used for matching.