def __init__(self, xsl_path, **params): from javax.xml.transform import URIResolver from javax.xml.transform import TransformerFactory from javax.xml.transform.stream import StreamSource from java.io import FileInputStream xsl_path = os.path.abspath(xsl_path) xsl_base = os.path.dirname(xsl_path) xsl_fis = FileInputStream(xsl_path) xsl_source = StreamSource(xsl_fis) class BaseURIResolver(URIResolver): def __init__(self, base): self.base = base def resolve(self, href, base): path = os.path.join(self.base, href) path = os.path.abspath(path) fis = FileInputStream(path) return StreamSource(fis) uri_resolver = BaseURIResolver(xsl_base) xslt_factory = TransformerFactory.newInstance() xslt_factory.setURIResolver(uri_resolver) self.transformer = xslt_factory.newTransformer(xsl_source) for k, v in params.items(): self.transformer.setParameter(k, unicode(v))
def toFile(self, doc, filename): source = DOMSource(doc) file = File(filename); result = StreamResult(file); xformer = TransformerFactory.newInstance().newTransformer(); xformer.transform(source, result);
def __init__(self, xsl_input, extensions=None, regexp=True, access_control=None): if extensions: raise NotImplementedError('extensions is not supported') if access_control: raise NotImplementedError('access_control is not supported') if isinstance(xsl_input, _ElementTree): xsl_tree = xsl_input elif isinstance(xsl_input, _Element): xsl_tree = ElementTree(xsl_input) else: raise ValueError(xsl_input) self.xsl_tree = xsl_tree self.xsl_source = DOMSource(xsl_tree._dom_doc, xsl_tree.docinfo.URL) self.uri_resolver = __URIResolverImpl(xsl_tree) #print tostring(xsl_tree) fac = TransformerFactory.newInstance() fac.setURIResolver(self.uri_resolver) fac = instrument_xalan_transformer_factory(fac) self.transformer = fac.newTransformer(self.xsl_source)
def transformReport(self,stylesheet,xml,output,params): from java.io import FileInputStream from java.io import FileOutputStream from java.io import ByteArrayOutputStream from javax.xml.transform import TransformerFactory from javax.xml.transform.stream import StreamSource from javax.xml.transform.stream import StreamResult self.xsl = FileInputStream("%s" % stylesheet) self.xml = FileInputStream("%s" % xml) self.html = FileOutputStream("%s" % output) try: self.xslSource = StreamSource(self.xsl) self.tfactory = TransformerFactory.newInstance() self.xslTemplate = self.tfactory.newTemplates(self.xslSource) self.transformer = self.xslTemplate.newTransformer() self.source = StreamSource(self.xml) self.result = StreamResult(self.html) for self.key,self.value in params.items(): self.transformer.setParameter(self.key, self.value) self.transformer.transform(self.source, self.result) finally: self.xsl.close() self.xml.close() self.html.close()
def transformReport(self, stylesheet, xml, output, params): from java.io import FileInputStream from java.io import FileOutputStream from java.io import ByteArrayOutputStream from javax.xml.transform import TransformerFactory from javax.xml.transform.stream import StreamSource from javax.xml.transform.stream import StreamResult self.xsl = FileInputStream("%s" % stylesheet) self.xml = FileInputStream("%s" % xml) self.html = FileOutputStream("%s" % output) try: self.xslSource = StreamSource(self.xsl) self.tfactory = TransformerFactory.newInstance() self.xslTemplate = self.tfactory.newTemplates(self.xslSource) self.transformer = self.xslTemplate.newTransformer() self.source = StreamSource(self.xml) self.result = StreamResult(self.html) for self.key, self.value in params.items(): self.transformer.setParameter(self.key, self.value) self.transformer.transform(self.source, self.result) finally: self.xsl.close() self.xml.close() self.html.close()
def __toXMLString(self, document): domSource = DOMSource(document) writer = StringWriter() result = StreamResult(writer) tf = TransformerFactory.newInstance() transformer = tf.newTransformer() transformer.transform(domSource, result) return writer.toString()
def writeXMLfile(self, doc, xmlfile): try: import sys, traceback from java.io import File from javax.xml.transform import TransformerFactory from javax.xml.transform import OutputKeys from javax.xml.transform.stream import StreamResult from javax.xml.transform.dom import DOMSource tranFactory = TransformerFactory.newInstance() aTransformer = tranFactory.newTransformer() aTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8") aTransformer.setOutputProperty(OutputKeys.INDENT, "yes") src = DOMSource(doc) dest = StreamResult(File(xmlfile)) aTransformer.transform(src, dest) except: print "exception: %s" % traceback.format_exception(*sys.exc_info())
def writeDom(doc): try: # set up a transformer transfac = TransformerFactory.newInstance() trans = transfac.newTransformer() trans.setOutputProperty(OutputKeys.ENCODING, "utf-8") trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no") trans.setOutputProperty(OutputKeys.INDENT, "yes") trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2") sw1 = StringWriter() result = StreamResult(sw1) source = DOMSource(doc) trans.transform(source, result) xmlString = sw1.toString() print xmlString except Exception, e: print e
def writeXMLfile(self,doc,xmlfile): try: import sys, traceback from java.io import File from javax.xml.transform import TransformerFactory from javax.xml.transform import OutputKeys from javax.xml.transform.stream import StreamResult from javax.xml.transform.dom import DOMSource tranFactory = TransformerFactory.newInstance(); aTransformer = tranFactory.newTransformer(); aTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8") aTransformer.setOutputProperty(OutputKeys.INDENT, "yes") src = DOMSource(doc); dest = StreamResult(File(xmlfile)); aTransformer.transform(src, dest); except: print "exception: %s" % traceback.format_exception(*sys.exc_info())
def transform(xmldoc, xslt=config.defualt_xslt): ''' Runs the transform from the specified xslt against the provided document. The transformer is only loaded on the first run and then kept in memory for re-use. ''' global _transform if _transform is None: tFactory = TransformerFactory.newInstance() tFactory.setAttribute('http://saxon.sf.net/feature/licenseFileLocation', '/etc/saxon-license.lic') try: _transform = tFactory.newTransformer(StreamSource(JavaFile(xslt))) except TransformerConfigurationException, tce: print tce print '*' * 70 print 'This is likely that your license file for saxon is '\ 'missing or that there is a genuine error in the XSLT'
def xslt_compile(xsl_path): from javax.xml.transform import URIResolver from javax.xml.transform import TransformerFactory from javax.xml.transform.stream import StreamSource from javax.xml.transform.stream import StreamResult from java.io import FileInputStream from java.io import FileOutputStream import os.path xsl_path = os.path.abspath(xsl_path) xsl_base = os.path.dirname(xsl_path) xsl_fis = FileInputStream(xsl_path) xsl_source = StreamSource(xsl_fis) class BaseURIResolver(URIResolver): def __init__(self, base): self.base = base def resolve(self, href, base): path = os.path.join(self.base, href) path = os.path.abspath(path) fis = FileInputStream(path) return StreamSource(fis) uri_resolver = BaseURIResolver(xsl_base) xslt_factory = TransformerFactory.newInstance() xslt_factory.setURIResolver(uri_resolver) transformer = xslt_factory.newTransformer(xsl_source) def transform(inp_path, out_path): inp_path = os.path.abspath(inp_path) out_path = os.path.abspath(out_path) inp_fis = FileInputStream(inp_path) out_fos = FileOutputStream(out_path) inp_source = StreamSource(inp_fis) out_result = StreamResult(out_fos) transformer.transform(inp_source, out_result) return dict() return transform
def transform(xmldoc, xslt=config.defualt_xslt): ''' Runs the transform from the specified xslt against the provided document. The transformer is only loaded on the first run and then kept in memory for re-use. ''' global _transform if _transform is None: tFactory = TransformerFactory.newInstance() tFactory.setAttribute( 'http://saxon.sf.net/feature/licenseFileLocation', '/etc/saxon-license.lic') try: _transform = tFactory.newTransformer(StreamSource(JavaFile(xslt))) except TransformerConfigurationException, tce: print tce print '*' * 70 print 'This is likely that your license file for saxon is '\ 'missing or that there is a genuine error in the XSLT'
def transform(xlst, xmldoc, docuuid): ''' Runs the transform from the specified xslt against the provided document. The transformer is only loaded on the first run and then kept in memory for re-use. ''' global _transform global _errors global _count if _transform is None: tFactory = TransformerFactory.newInstance() try: _transform = tFactory.newTransformer(StreamSource(JavaFile(xslt))) except TransformerConfigurationException, tce: print tce print '*' * 70 print 'This is likely that your license file for saxon is '\ 'missing or that there is a genuine error in the XSLT' sys.exit(1)
def _transform(self): try: input = FileInputStream(self.xsl) xslSource = StreamSource(input) xslTemplate = TransformerFactory.newInstance().newTemplates(xslSource); transformer = xslTemplate.newTransformer() output = ByteArrayOutputStream() result = StreamResult(output) source = StreamSource(FileInputStream(self.sourceXml)) transformer.transform(source, result) f = open(self.targetXml, 'w') f.write(output.toString()) return True except: print ("Something went wrong when trying to transform the XML. Please be sure jython is properly installed and configured.") return False
def printXMLfile(self,doc): try: from javax.xml.transform import TransformerFactory from javax.xml.transform import OutputKeys from javax.xml.transform.stream import StreamSource from javax.xml.transform.stream import StreamResult from javax.xml.transform.dom import DOMSource from java.io import StringWriter xmlInput = DOMSource(doc); xmlOutput = StreamResult(StringWriter()); tranFactory = TransformerFactory.newInstance(); aTransformer = tranFactory.newTransformer(); aTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8") aTransformer.setOutputProperty(OutputKeys.INDENT, "yes"); aTransformer.transform(xmlInput, xmlOutput); print xmlOutput.getWriter().toString() except: print "exception: %s" % traceback.format_exception(*sys.exc_info())
def printXMLfile(self, doc): try: from javax.xml.transform import TransformerFactory from javax.xml.transform import OutputKeys from javax.xml.transform.stream import StreamSource from javax.xml.transform.stream import StreamResult from javax.xml.transform.dom import DOMSource from java.io import StringWriter xmlInput = DOMSource(doc) xmlOutput = StreamResult(StringWriter()) tranFactory = TransformerFactory.newInstance() aTransformer = tranFactory.newTransformer() aTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8") aTransformer.setOutputProperty(OutputKeys.INDENT, "yes") aTransformer.transform(xmlInput, xmlOutput) print xmlOutput.getWriter().toString() except: print "exception: %s" % traceback.format_exception(*sys.exc_info())
def DoXPath (Filename,XPathString): IS = InputSource (FileInputStream (Filename)) df = DocumentBuilderFactory.newInstance() df.setNamespaceAware(1) doc = df.newDocumentBuilder().parse(IS) serializer = TransformerFactory.newInstance().newTransformer() serializer.setOutputProperty (OutputKeys.OMIT_XML_DECLARATION, "yes") nl = XPathAPI.selectNodeIterator (doc,XPathString) n = nl.nextNode() while n: if IsTextNode (n): # Coalesce contiguous text nodes res = [n.getNodeValue()] nn = n.getNextSibling() while (nn): res.append (nn.getNodeValue()) nn = n.getNextSibling() java.lang.System.out (string.join(res,"")) else: serializer.transform (DOMSource(n), StreamResult (OutputStreamWriter (java.lang.System.out))) java.lang.System.out.println() n = nl.nextNode()
def transform(xmldoc, xslt=config.defualt_xslt): ''' Runs the transform from the specified xslt against the provided document. The transformer is only loaded on the first run and then kept in memory for re-use. ''' global _transform if _transform is None: tFactory = TransformerFactory.newInstance() tFactory.setAttribute('http://saxon.sf.net/feature/licenseFileLocation', '/etc/saxon-license.lic') # JJ: not sure I have the right syntax here, but can Saxon be set to continue on error? #10/21. agreed to try and run a pass against a "minimal transform" in the event that an error is thrown here. Will work on XSLT tFactory.setAttribute(FeatureKeys.RECOVERY_POLICY, new Integer(Controller.RECOVER_SILENTLY)); # try: _transform = tFactory.newTransformer(StreamSource(JavaFile(xslt))) except TransformerConfigurationException, tce: print tce print '*' * 70 print 'This is likely that your license file for saxon is '\ 'missing or that there is a genuine error in the XSLT'
- 2 xml source - 3 xml output """ from java.io import File; from javax.xml.transform import Transformer; from javax.xml.transform import TransformerFactory; from javax.xml.transform.stream import StreamResult; from javax.xml.transform.stream import StreamSource; from java.io import StringWriter; import os import sys xslt = File(sys.argv[1]) tFactory = TransformerFactory.newInstance() transformer = tFactory.newTransformer(StreamSource(xslt)) writer = StringWriter(); out = transformer.transform( StreamSource(File( sys.argv[2] )), StreamResult( File(sys.argv[3]) ) ) out2 = transformer.transform( StreamSource(File( sys.argv[2] )), StreamResult(writer)
from java.lang import System from java.io import File from java.io import ByteArrayOutputStream from javax.xml.parsers import DocumentBuilderFactory from javax.xml.transform import TransformerFactory from javax.xml.transform.dom import DOMSource from javax.xml.transform.stream import StreamSource from javax.xml.transform.stream import StreamResult dbfac = DocumentBuilderFactory.newInstance() dbfac.namespaceAware = True docfac = dbfac.newDocumentBuilder() print type(dbfac) transfac = TransformerFactory.newInstance() src_dom = docfac.parse('hello.xml') src_source = DOMSource(src_dom) def unsigned_byte(x): if x < 0: return 256 + x return x def Transformer(xsl_source): transformer = transfac.newTransformer(xsl_source) def transform(src_source): outputstream = ByteArrayOutputStream()
def saveXMLDoc(self, doc, xmlPath): transformerFactory = TransformerFactory.newInstance() transformer = transformerFactory.newTransformer() source = DOMSource(doc) result = StreamResult(File(xmlPath)) transformer.transform(source, result)
''' dbf = DocumentBuilderFactory.newInstance() db = dbf.newDocumentBuilder() doc = db.parse(url.openStream()) value = doc.getElementsByTagName('Terminal').item(1).item( 1).getFirstChild().getNodeValue() lg = float(value) print lg source = DOMSource(doc) file = File("/tmp/aaa.xml") result = StreamResult(file) xformer = TransformerFactory.newInstance().newTransformer() xformer.transform(source, result) ''' <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Response> <Terminal> <Name>FundamentalEnableFeedback</Name> <Value>1</Value> </Terminal> <Terminal><Name>LoopGainFeedback</Name><Value>79</Value> </Terminal><Terminal><Name>HarmPhaseShiftFeedback</Name><Value>39754</Value></Terminal> <Terminal><Name>FundPhaseShiftFeedback</Name><Value>42977</Value></Terminal> <Terminal><Name>DelaySetValueFeedback</Name><Value>0.000000</Value></Terminal> </Response>
def transform(source, stylesheet, result, parameters): transformer = TransformerFactory.newInstance().newTransformer(stylesheet) for (p, v) in parameters: transformer.setParameter(p, v) transformer.transform(source, result)