private QilNode CompileKeyUse(Key key)
{
string expr = key.Use;
XPathScanner scanner;
QilNode result;
SetEnvironmentFlags(/*allowVariables:*/false, /*allowCurrent:*/true, /*allowKey:*/false);
if (expr == null)
{
result = _f.Error(_f.String(XslLoadException.CreateMessage(key.SourceLine, SR.Xslt_MissingAttribute, "use")));
}
else
{
try
{
scanner = new XPathScanner(expr);
result = _xpathParser.Parse(scanner, _xpathBuilder, LexKind.Eof);
}
catch (XslLoadException e)
{
if (_xslVersion != XslVersion.ForwardsCompatible)
{
ReportErrorInXPath(/*[XT0300]*/e);
}
result = _f.Error(_f.String(e.Message));
}
}
if (result is QilIterator)
{
result = _f.Nop(result);
}
return result;
}