private QilNode CompileKeyMatch(string pttrn)
{
XPathScanner scanner;
QilNode result;
if (_keyMatchBuilder == null)
{
_keyMatchBuilder = new KeyMatchBuilder((IXPathEnvironment)this);
}
SetEnvironmentFlags(/*allowVariables:*/false, /*allowCurrent:*/false, /*allowKey:*/false);
if (pttrn == null)
{
result = PhantomKeyMatch();
}
else
{
try
{
scanner = new XPathScanner(pttrn);
result = _ptrnParser.Parse(scanner, _keyMatchBuilder);
}
catch (XslLoadException e)
{
if (_xslVersion != XslVersion.ForwardsCompatible)
{
ReportErrorInXPath(/*[XT0340]*/e);
}
result = _f.Error(_f.String(e.Message));
}
}
return result;
}