Beispiel #1
0
        public virtual String ApplyTemplates(DvslNode node)
        {
            StringWriter sw = new StringWriter();

            Invoke(node, sw);
            return(sw.ToString());
        }
        /// <summary>
        /// retrieves value for key from internal storage
        /// </summary>
        /// <param name="key">name of value to get</param>
        /// <returns>value as object</returns>
        public override Object InternalGet(String key)
        {
            Object o = null;

            /*
             *  special token : NODE
             *
             *  returns current node
             */

            if (key.Equals(NODE))
            {
                return(PeekNode());
            }

            /*
             *  ATTRIB - returns attribute map
             */
            if (key.Equals(ATTRIB))
            {
                DvslNode n = PeekNode();
                return(n.AttribMap);
            }

            /*
             *  start with local storage
             */
            return(ctx[key]);
        }
Beispiel #3
0
 private void Invoke(DvslNode element, TextWriter writer)
 {
     String[] arr = new String[] {};
     currentContext.PushNode(element);
     templateHandler.Render(element, currentContext, writer);
     currentContext.PopNode();
 }
Beispiel #4
0
        public virtual String Copy()
        {
            /*
             *  fakie, for now
             */
            DvslNode node = currentContext.PeekNode();

            return(node.Copy());
        }
Beispiel #5
0
        public virtual String ApplyTemplates(DvslNode node, String xpath)
        {
            /*
             *  get the nodes that was asked for
             */
            IList        nodeset = node.SelectNodes(xpath);
            StringWriter sw      = new StringWriter();

            for (int i = 0; i < nodeset.Count; i++)
            {
                DvslNode n = (DvslNode)nodeset[i];
                Invoke(n, sw);
            }
            return(sw.ToString());
        }
Beispiel #6
0
        /// <summary>
        /// assumes a list of DVSLNodes
        /// </summary>
        public virtual String Copy(IList nodes)
        {
            if (nodes == null)
            {
                return("");
            }

            StringWriter sw = new StringWriter();

            for (int i = 0; i < nodes.Count; i++)
            {
                DvslNode dn = (DvslNode)nodes[i];
                sw.Write(((XmlNode)dn.NodeImpl).OuterXml);
            }

            return(sw.ToString());
        }
Beispiel #7
0
        internal bool Render(DvslNode node, IContext context, TextWriter writer)
        {
            /*
             *  find if we have an AST where the xpath expression mathes
             *  for this node
             */

            XmlNode        dom4jnode = (XmlNode)node.NodeImpl;
            XPathNavigator nav       = dom4jnode.CreateNavigator();
            SimpleNode     sn        = null;

            for (int i = 0; i < xpathList.Count; i++)
            {
                Hashtable m = (Hashtable)xpathList[i];

                XPathExpression expr = nav.Compile((String)m["xpath"]);

                if (nav.Matches((String)m["xpath"]))
                {
                    sn = (SimpleNode)m["ast"];
                    break;
                }
            }

            // if we found something, render
            if (sn != null)
            {
                InternalContextAdapterImpl ica = new InternalContextAdapterImpl(context);
                ica.PushCurrentTemplateName(node.Name);

                try
                {
                    sn.render(ica, writer);
                }
                finally
                {
                    ica.PopCurrentTemplateName();
                }

                return(true);
            }

            return(false);
        }
Beispiel #8
0
        protected internal virtual long Transform(DvslNode root, TextWriter writer)
        {
            /*
             *  wrap in a context to keep subsequent documents from
             *  interacting with each other
             */
            currentContext = new DVSLNodeContext(baseContext);
            long start = (DateTime.Now.Ticks - 621355968000000000) / 10000;

            /*
             *  push 'this' into the context as our TransformTool
             *  and invoke the transformation
             */
            currentContext.Put("context", this);
            Invoke(root, writer);
            long end = (DateTime.Now.Ticks - 621355968000000000) / 10000;

            return(end - start);
        }
Beispiel #9
0
        /// <summary>
        /// returns a list of nodes that satisfy the xpath
        /// </summary>
        public virtual IList SelectNodes(String xpath)
        {
            XmlNodeList l    = element.SelectNodes(xpath);
            IList       list = new ArrayList();

            for (int i = 0; i < l.Count; i++)
            {
                XmlNode n = l[i];
                if (n != null)
                {
                    DvslNode dn = MakeDvslNode(n);
                    if (dn != null)
                    {
                        list.Add(dn);
                    }
                }
            }

            return(list);
        }
Beispiel #10
0
	internal virtual bool Render(DvslNode node, IContext context, TextWriter writer) {
	    /*
	    *  find if we have an AST where the xpath expression mathes
	    *  for this node
	    */

	    XmlNode dom4jnode = (XmlNode) node.NodeImpl;
	    XPathNavigator nav = dom4jnode.CreateNavigator();
	    SimpleNode sn = null;

	    for (int i = 0; i < xpathList.Count; i++) {
		Hashtable m = (Hashtable) xpathList[i];

		XPathExpression expr = nav.Compile((String)m["xpath"]);

		if (nav.Matches((String)m["xpath"])) {
		    sn = (SimpleNode) m["ast"];
		    break;
		}
	    }

	    // if we found something, render
	    if (sn != null) {
		InternalContextAdapterImpl ica = new InternalContextAdapterImpl(context);
		ica.PushCurrentTemplateName(node.Name);

		try {
		    sn.render(ica, writer);
		} finally {
		    ica.PopCurrentTemplateName();
		}

		return true;
	    }

	    return false;
	}
	public virtual DvslNode PushNode(DvslNode n) {
	    nodeStack.Push(n);
	    return n;
	}
	protected internal virtual long Transform(DvslNode root, TextWriter writer) {
	    /*
	    *  wrap in a context to keep subsequent documents from
	    *  interacting with each other
	    */
	    currentContext = new DVSLNodeContext(baseContext);
	    long start = (DateTime.Now.Ticks - 621355968000000000) / 10000;

	    /*
	    *  push 'this' into the context as our TransformTool
	    *  and invoke the transformation
	    */
	    currentContext.Put("context", this);
	    Invoke(root, writer);
	    long end = (DateTime.Now.Ticks - 621355968000000000) / 10000;
	    return end - start;
	}
	private void Invoke(DvslNode element, TextWriter writer) {
	    String[] arr = new String[]{};
	    currentContext.PushNode(element);
	    templateHandler.Render(element, currentContext, writer);
	    currentContext.PopNode();
	}
Beispiel #14
0
        public virtual String ApplyTemplates(String path)
        {
            DvslNode node = currentContext.PeekNode();

            return(ApplyTemplates(node, path));
        }
Beispiel #15
0
	/* === routines to manage current node stack === */

	internal virtual DvslNode PushNode(DvslNode n) {
	    nodeStack.Push(n);
	    return n;
	}
        /* === routines to manage current node stack === */

        internal DvslNode PushNode(DvslNode n)
        {
            nodeStack.Push(n);
            return(n);
        }
	public virtual String ApplyTemplates(DvslNode node, String xpath) {
	    /*
	    *  get the nodes that was asked for
	    */
	    IList nodeset = node.SelectNodes(xpath);
	    StringWriter sw = new StringWriter();

	    for (int i = 0; i < nodeset.Count; i++) {
		DvslNode n = (DvslNode) nodeset[i];
		Invoke(n, sw);
	    }
	    return sw.ToString();
	}
 public DvslNode PushNode(DvslNode n)
 {
     nodeStack.Push(n);
     return(n);
 }
	public virtual String ApplyTemplates(DvslNode node) {
	    StringWriter sw = new StringWriter();
	    Invoke(node, sw);
	    return sw.ToString();
	}