protected void CompileDocument(Compiler compiler, bool inInclude) {
NavigatorInput input = compiler.Input;
// SkipToElement :
while (input.NodeType != XPathNodeType.Element) {
if (! compiler.Advance()) {
throw XsltException.Create(Res.Xslt_WrongStylesheetElement);
}
}
Debug.Assert(compiler.Input.NodeType == XPathNodeType.Element);
if (Keywords.Equals(input.NamespaceURI, input.Atoms.XsltNamespace)) {
if (
! Keywords.Equals(input.LocalName, input.Atoms.Stylesheet) &&
! Keywords.Equals(input.LocalName, input.Atoms.Transform)
) {
throw XsltException.Create(Res.Xslt_WrongStylesheetElement);
}
compiler.PushNamespaceScope();
CompileStylesheetAttributes(compiler);
CompileTopLevelElements(compiler);
if (! inInclude) {
CompileImports(compiler);
}
}
else {
// single template
compiler.PushLiteralScope();
CompileSingleTemplate(compiler);
}
compiler.PopScope();
}