xsl-list
[Top] [All Lists]

Re: [xsl] Saxon .Net API performance

2010-09-01 17:57:37
 On 01/09/2010 5:49 PM, Merrilees, David wrote:
Thanks Michael, that's really helpful. However, I don't understand how Tinytree 
is used by the Saxon API in .Net.

A Tinytree will be used (a) if you let Saxon build the tree (by supplying input as unparsed lexical XML or as a SAX event stream), or (b) if you build the tree using Saxon interfaces, such as the Saxon.Api DocumentBuilder.
I'm using a .Net XmlTextWriter to serialize my objects to XML which are then 
built into an XdmNode (see code excerpt below), which is used as the input for 
transformation. As I understand, using the XmlTextWriter avoids using DOM. Does 
this use Saxon's tree model efficiently?

This code is constructing a TinyTree, but arguably the cost of building it could be reduced, if rather than seriallzing the "object" to lexical XML and then reparsing the lexical XML, the two stages communicated at the level of a stream of SAX-like events. But I would need to know more about where the XML is coming from to make that concept more concrete.

I've seen many applications where the serializing and reparsing that goes on between stages in the processing pipeline takes far longer than the actual transformation steps.

Michael Kay
Saxonica
public XdmNode ReadObject(object objectToSerialize, Uri baseUri) {
             XdmNode result;

             using (MemoryStream stream = new MemoryStream())
          {
         XmlSerializer xmlSerializer = new 
XmlSerializer(objectToSerialize.GetType());
                 using (XmlTextWriter xmlWriter = new XmlTextWriter(stream, 
Encoding.UTF8))
                 {
                     xmlSerializer.Serialize(xmlWriter, objectToSerialize);

                     DocumentBuilder builder = 
XsltHelper.Processor.NewDocumentBuilder();
                     builder.BaseUri = baseUri;

                     stream.Seek(0, SeekOrigin.Begin);
                     result = builder.Build(stream);
                 }
            }
             return result;
}

-----Original Message-----
From: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com]
Sent: 31 August 2010 21:45
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Saxon .Net API performance

That's a very broad question!

I think probably the most important advice is to use Saxon's native tree model 
rather than running over the Microsoft DOM (which is possible, but slow). Most 
of the other things one can say are pretty generic, applying equally to any 
XSLT processor.



This is a confidential email. Tesco may monitor and record all emails. The 
views expressed in this email are those of the sender and not Tesco.

Tesco Stores Limited
Company Number: 519500
Registered in England
Registered Office: Tesco House, Delamare Road, Cheshunt, Hertfordshire EN8 9SL
VAT Registration Number: GB 220 4302 31

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>