public bool TryProcess(IDocumentProcessor docProcessor, XmlNode node, bool isRoot, ITemplate template, IRenderFunction currentRenderFunction) {
			if (node.NodeType != XmlNodeType.ProcessingInstruction || node.Name != "using")
				return false;

			if (!isRoot)
				throw ParserUtils.TemplateErrorException(string.Format("The using directive can only appear outside of the template.", node.Name));
				
			string[] sideArr      = Utils.RegexExec(node.Value, "side=\"([^\"]*)\"", "");
			string[] namespaceArr = Utils.RegexExec(node.Value, "namespace=\"([^\"]*)\"", "");
	
			if (namespaceArr == null)
				throw ParserUtils.TemplateErrorException("Using directive must have the namespace specified.");

			string nmspace = namespaceArr[1].Trim(), side = (sideArr != null ? sideArr[1].Trim() : "both");
			if (!ParserUtils.IsValidQualifiedName(nmspace))
				throw ParserUtils.TemplateErrorException(string.Format("The identifier '{0}' is not a valid namespace name.", nmspace));

			bool serverSide, clientSide;
			switch (side) {
				case "client":
					serverSide = false;
					clientSide = true;
					break;
				case "server":
					serverSide = true;
					clientSide = false;
					break;
				case "both":
					serverSide = true;
					clientSide = true;
					break;
				default:
					throw ParserUtils.TemplateErrorException("The side attribute of the using directive must be 'client', 'server', or 'both'.");
			}
			
			if (serverSide)
				template.AddServerUsingDirective(nmspace);
			if (clientSide)
				template.AddClientUsingDirective(nmspace);

			return true;
		}
        public bool TryProcess(IDocumentProcessor docProcessor, XmlNode node, bool isRoot, ITemplate template, IRenderFunction currentRenderFunction)
        {
            if (node.NodeType != XmlNodeType.ProcessingInstruction || node.Name != "using")
            {
                return(false);
            }

            if (!isRoot)
            {
                throw ParserUtils.TemplateErrorException(string.Format("The using directive can only appear outside of the template.", node.Name));
            }

            string[] sideArr      = Utils.RegexExec(node.Value, "side=\"([^\"]*)\"", "");
            string[] namespaceArr = Utils.RegexExec(node.Value, "namespace=\"([^\"]*)\"", "");

            if (namespaceArr == null)
            {
                throw ParserUtils.TemplateErrorException("Using directive must have the namespace specified.");
            }

            string nmspace = namespaceArr[1].Trim(), side = (sideArr != null ? sideArr[1].Trim() : "both");

            if (!ParserUtils.IsValidQualifiedName(nmspace))
            {
                throw ParserUtils.TemplateErrorException(string.Format("The identifier '{0}' is not a valid namespace name.", nmspace));
            }

            bool serverSide, clientSide;

            switch (side)
            {
            case "client":
                serverSide = false;
                clientSide = true;
                break;

            case "server":
                serverSide = true;
                clientSide = false;
                break;

            case "both":
                serverSide = true;
                clientSide = true;
                break;

            default:
                throw ParserUtils.TemplateErrorException("The side attribute of the using directive must be 'client', 'server', or 'both'.");
            }

            if (serverSide)
            {
                template.AddServerUsingDirective(nmspace);
            }
            if (clientSide)
            {
                template.AddClientUsingDirective(nmspace);
            }

            return(true);
        }