protected virtual void AddAttributeValueCompletionData (CodeCompletionDataProvider cp, S.XElement element, S.XAttribute attribute)
		{
		}
		bool IsServerScriptTag (S.XElement el)
		{
			if (el.Name.FullName == "script") {
				S.XName runat = new S.XName ("runat");
				foreach (S.XAttribute attr in el.Attributes) {
					if ((attr.Name.ToLower () == runat) && (attr.Value.ToLower () == "server"))
						return true;
				}
			}
			return false;
		}
		protected virtual void AddTagCompletionData (CodeCompletionDataProvider cp, S.XElement element)
		{
		}
		void AddElement (S.XNode node)
		{
			if (node is AspNetExpression) {
				XExpressions.Add (node as AspNetExpression);
				
			} else if (node is S.XElement) {
				S.XElement el = node as S.XElement;
				
				if (IsServerScriptTag (el)) {
					XScriptBlocks.Add (el);
					
				} else {
					foreach (S.XNode nd in el.Nodes) 
						AddElement (nd);
				}
			}
		}