void CompileInclude(Compiler compiler) {
Uri uri = compiler.ResolveUri(compiler.GetSingleAttribute(compiler.Input.Atoms.Href));
string resolved = uri.ToString();
if (compiler.IsCircularReference(resolved)) {
throw XsltException.Create(Res.Xslt_CircularInclude, resolved);
}
NavigatorInput input = compiler.ResolveDocument(uri);
compiler.PushInputDocument(input);
try {
CompileDocument(compiler, /*inInclude*/ true);
}
catch (XsltCompileException) {
throw;
}
catch (Exception e) {
throw new XsltCompileException(e, input.BaseURI, input.LineNumber, input.LinePosition);
}
finally {
compiler.PopInputDocument();
}
CheckEmpty(compiler);
}