private void CompileLiteral(Compiler compiler) { NavigatorInput input = compiler.Input; switch (input.NodeType) { case XPathNodeType.Element: this.AddEvent(compiler.CreateBeginEvent()); CompileLiteralAttributesAndNamespaces(compiler); if (compiler.Recurse()) { CompileTemplate(compiler); compiler.ToParent(); } this.AddEvent(new EndEvent(XPathNodeType.Element)); break; case XPathNodeType.Text: case XPathNodeType.SignificantWhitespace: this.AddEvent(compiler.CreateTextEvent()); break; case XPathNodeType.Whitespace: case XPathNodeType.ProcessingInstruction: case XPathNodeType.Comment: break; default: Debug.Fail("Unexpected node type."); break; } }
protected void CompileSortElements(Compiler compiler) { NavigatorInput input = compiler.Input; do { switch (input.NodeType) { case XPathNodeType.Element: if (Ref.Equal(input.NamespaceURI, input.Atoms.UriXsl) && Ref.Equal(input.LocalName, input.Atoms.Sort)) { if (sortContainer == null) { sortContainer = new ContainerAction(); } sortContainer.AddAction(compiler.CreateSortAction()); continue; } return; case XPathNodeType.Text: return; case XPathNodeType.SignificantWhitespace: this.AddEvent(compiler.CreateTextEvent()); continue; default: continue; } }while (input.Advance()); }
protected void CompileParameters(Compiler compiler) { NavigatorInput input = compiler.Input; do { switch (input.NodeType) { case XPathNodeType.Element: if (Ref.Equal(input.NamespaceURI, input.Atoms.UriXsl) && Ref.Equal(input.LocalName, input.Atoms.Param)) { compiler.PushNamespaceScope(); AddAction(compiler.CreateVariableAction(VariableType.LocalParameter)); compiler.PopScope(); continue; } else { return; } case XPathNodeType.Text: return; case XPathNodeType.SignificantWhitespace: this.AddEvent(compiler.CreateTextEvent()); continue; default: continue; } }while (input.Advance()); }
protected void CompileSortElements(Compiler compiler) { NavigatorInput input = compiler.Input; do { switch(input.NodeType) { case XPathNodeType.Element: if (Keywords.Equals(input.NamespaceURI, input.Atoms.XsltNamespace) && Keywords.Equals(input.LocalName, input.Atoms.Sort)) { if (sortContainer == null) { sortContainer = new ContainerAction(); } sortContainer.AddAction(compiler.CreateSortAction()); continue; } return; case XPathNodeType.Text: return; case XPathNodeType.SignificantWhitespace: this.AddEvent(compiler.CreateTextEvent()); continue; default : continue; } } while (input.Advance()); }
void CompileLiteral(Compiler compiler) { NavigatorInput input = compiler.Input; switch (input.NodeType) { case XPathNodeType.Element: this.AddEvent(compiler.CreateBeginEvent()); CompileLiteralAttributesAndNamespaces(compiler); if (compiler.Recurse()) { CompileTemplate(compiler); compiler.ToParent(); } this.AddEvent(new EndEvent(XPathNodeType.Element)); break; case XPathNodeType.Text: case XPathNodeType.SignificantWhitespace: this.AddEvent(compiler.CreateTextEvent()); break; case XPathNodeType.Whitespace: case XPathNodeType.ProcessingInstruction: case XPathNodeType.Comment: break; default: Debug.Assert(false, "Unexpected node type."); break; } }
protected void CompileParameters(Compiler compiler) { NavigatorInput input = compiler.Input; do { switch(input.NodeType) { case XPathNodeType.Element: if (Keywords.Equals(input.NamespaceURI, input.Atoms.XsltNamespace) && Keywords.Equals(input.LocalName, input.Atoms.Param)) { compiler.PushNamespaceScope(); AddAction(compiler.CreateVariableAction(VariableType.LocalParameter)); compiler.PopScope(); continue; } else { return; } case XPathNodeType.Text: return; case XPathNodeType.SignificantWhitespace: this.AddEvent(compiler.CreateTextEvent()); continue; default : continue; } } while (input.Advance()); }