source: patches/NetKernel/trunk/src/modules/ext-xquery-2.4.4/org/ten60/ura/xslt2/XML2TinyTree.java @ 2029

Last change on this file since 2029 was 2029, checked in by mwindhouwer, 12 years ago

Initial import of all the *cats, i.e., ISOcat, RELcat and SCHEMAcat.

File size: 3.3 KB
Line 
1package org.ten60.ura.xslt2;
2
3import org.ten60.netkernel.xml.representation.*;
4import org.ten60.netkernel.xml.util.XMLUtils;
5import org.ten60.netkernel.xml.xda.*;
6import org.ten60.netkernel.xml.util.NKFCatalogEntityResolver;
7
8import org.ten60.netkernel.layer1.meta.*;
9import org.ten60.netkernel.layer1.nkf.*;
10import org.ten60.netkernel.layer1.nkf.impl.*;
11
12import com.ten60.netkernel.urii.*;
13import com.ten60.netkernel.urii.representation.ITransrepresentor;
14import com.ten60.netkernel.urii.aspect.*;
15import com.ten60.netkernel.util.NetKernelException;
16
17import org.apache.xml.serializer.*;
18import javax.xml.parsers.*;
19import javax.xml.transform.*;
20import javax.xml.transform.sax.*;
21import javax.xml.transform.stream.*;
22
23import org.xml.sax.*;
24import org.xml.sax.helpers.*;
25import java.io.*;
26import java.util.*;
27import org.w3c.dom.*;
28
29import net.sf.saxon.*;
30import net.sf.saxon.om.*;
31import net.sf.saxon.tinytree.*;
32import net.sf.saxon.trans.*;
33import net.sf.saxon.xpath.*;
34
35/**
36 * Creates a TinyTree Aspect from any XML
37 * @author maw
38 */
39public class XML2TinyTree extends NKFTransreptorImpl
40{
41        public boolean supports(IURRepresentation aFrom, Class aTo)
42        {       return ( aTo.isAssignableFrom(TinyTreeAspect.class) );
43        }
44       
45        public void transrepresent(INKFConvenienceHelper aContext) throws NetKernelException
46        {       try
47                {       Source aSource=null;
48                        IURRepresentation aResource = aContext.source(INKFRequestReadOnly.URI_SYSTEM);
49                        SAXParserFactory spf=SAXParserFactory.newInstance();
50                        if(aResource.hasAspect(IAspectReadableBinaryStream.class))
51                        {       IAspectReadableBinaryStream rbs = (IAspectReadableBinaryStream)aResource.getAspect(IAspectReadableBinaryStream.class);                         
52                                XMLReader reader= spf.newSAXParser().getXMLReader();
53                                reader.setEntityResolver(new NKFCatalogEntityResolver(aContext));
54                                InputSource is= new InputSource(rbs.getInputStream());
55                                is.setSystemId(aContext.getThisRequest().getURI());
56                                aSource= new SAXSource(reader, is);
57                        }
58                        else if(aResource.hasAspect(IAspectBinaryStream.class))
59                        {       ByteArrayOutputStream baos=new ByteArrayOutputStream(2048);
60                                IAspectBinaryStream bs=(IAspectBinaryStream)aResource.getAspect(IAspectBinaryStream.class);
61                                bs.write(baos);
62                                XMLReader reader= spf.newSAXParser().getXMLReader();
63                                reader.setEntityResolver(new NKFCatalogEntityResolver(aContext));
64                                InputSource is= new InputSource(new ByteArrayInputStream(baos.toByteArray()));
65                                is.setSystemId(aContext.getThisRequest().getURI());
66                                aSource= new SAXSource(reader, is);
67                        }
68                        if(aSource==null)
69                        {       IAspectReadableBinaryStream rbs = (IAspectReadableBinaryStream)aContext.sourceAspect(INKFRequestReadOnly.URI_SYSTEM, IAspectReadableBinaryStream.class);
70                                XMLReader reader= spf.newSAXParser().getXMLReader();
71                                reader.setEntityResolver(new NKFCatalogEntityResolver(aContext));
72                                InputSource is= new InputSource(rbs.getInputStream());
73                                is.setSystemId(aContext.getThisRequest().getURI());
74                                aSource= new SAXSource(reader, is);
75                        }
76
77                        XPathEvaluator eval = new XPathEvaluator(XMLToXSLTransformer.getSharedSaxonConfiguration());
78                        NodeInfo       tree = eval.setSource(aSource);
79
80                        IURAspect    aspect = new TinyTreeAspect(tree);
81                       
82                        aContext.createResponseFrom(aspect).setCreationCost(32);
83                } catch (Exception e)
84                {       NetKernelException nke = new NetKernelException("Unhandled Exception in XML2TinyTree");
85                        nke.addCause(e);
86                        throw nke;
87                }
88        }
89}
Note: See TracBrowser for help on using the repository browser.