Without a representative sample of the contents of datafile and a clear statement of where in the file 978 followed by ten other decimal digits is supposed to be matched, we can only make wild guesses at what might meet your requirements...
Are you only looking for values found between <RecordReference> tags and between <IDValue> tags, or are you looking for values between any kings of tags?
What operating system are you using?
Does the grep utility on your system have a -o option?