Transforming XML/XSL data to PDF
What is a process to convert a XML document to a PDF? Where could I find some Java classes that aid in this process?
There's XSL Formatter from www.antennahouse.com, and there's FOP from xml.apache.org/fop, and probably others that could be found by a simple Google search.
Similar Messages
-
Problem transforming XML/XSL Using Xalan
Hi, I am using the xalan apis to transform XML/XSL in a servlet..My servlet code is like...
response.setContentType("text/html; charset=UTF-8");
// Output goes in the response stream.
PrintWriter out = response.getWriter();
boolean environmentOK = (new org.apache.xalan.xslt.EnvironmentCheck()).checkEnvironment (out);
try
TransformerFactory tFactory = TransformerFactory.newInstance();
// Get the XML input document and the stylesheet.
Source xmlSource = new StreamSource("D:\\DATA\\jrun\\test\\test.xml");
Source xslSource = new StreamSource("D:\\DATA\\jrun\\test\\test.xsl");
// Generate the transformer.
Transformer transformer = tFactory.newTransformer(xslSource);
// Perform the transformation, sending the output to the response.
transformer.transform(xmlSource, new StreamResult(out));
I am getting the error ..
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: Namespace not supported by SAXParserjavax.xml.transform.TransformerConfigurationException
That's why I have added the line..
boolean environmentOK = (new org.apache.xalan.xslt.EnvironmentCheck()).checkEnvironment (out);
But that gives me the following error diagnostic information...
ERROR.version.DOM=ERROR attempting to load DOM level 2 class: java.lang.NoSuchMethodException
I have put all the 3 required classes, xml-apis.jar, xercesImpl.jar and xalan.jar in my application servers classpath..
Please let me know what I am doing wrong..and how this can be fixed.
Thanks
Surajithey Surajit
Your code is unable to create a transformer from a factory instance.
I would check why it is not creating the Transformer.On my win32 system i usee two forward slashes..to identify the file path
D://xyz//abc....instead of D:\\...i wonder if thats one reason why your code is not able to create a transformer based on the StreamSource u create for the file paths.
Code i use..that works
javax.xml.transform.TransformerFactory tFactory =
javax.xml.transform.TransformerFactory.newInstance();
javax.xml.transform.Source xmlSource = new javax.xml.transform.stream.StreamSource (xmlInputSource);
javax.xml.transform.Source xslSource = new javax.xml.transform.stream.StreamSource
(xslInputSource);
// Generate the transformer.
javax.xml.transform.Transformer transformer = tFactory.newTransformer(xslSource);
// Perform the transformation, sending the output to the response.
transformer.transform(xmlSource,new javax.xml.transform.stream.StreamResult(out));
I used jaxp-1.2 with tomcat 4.1.12
Hope that helps. -
Transformer(XML, Xsl)
Hello
There is my class. When I run it I get error: stylesheet requires attribute version ; missimg or incorect XSLT Namespaces
What to do?
I have in database XML and Xsl file and i nead this function to join them.
import java.io.*;
import java.lang.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.parsers.DocumentBuilder;
public class Parser{
public static void main(String[] args) {
Parser f = new Parser();
f.join();
public void join(){
try{
File stylesheet = new File("d:/jelenak/install/vezba/cdcatalog.xsl");
File xmlfile = new File("d:/jelenak/install/vezba/cdcatalog.xml");
File outputFile=new File("d:/jelenak/install/vezba/cdcatalog.xml");
TransformerFactory tFactory =TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource(stylesheet);
StreamSource source = new StreamSource(xmlfile);
StreamResult result = new StreamResult(outputFile);
Transformer transformer = tFactory.newTransformer(stylesource);
transformer.transform(source, result);
}catch (Exception e) {
e.printStackTrace(System.err);
Thanks a lotaaaaaah! in a servlet, ok.
you can build a StreamResult on the Servlet response output stream.
personally, to provide the browser with the correct size of data to receive in the HTTP header, i output the XSLT result in a ByteArrayOutputStream (baos) then i use this kind of code in my servlet:
response.setContentType("text/xml");
response.setContentLength(baos.size());
baos.writeTo(response.getOutputStream()); -
XML has data but PDF is not displaying data
Hi Gurus,
I have one report with excel and pdf out put .
excel is working fine but pdf is not displaying data showing blank page . both out puts are using same XML.
Intresting thing is if I open RTF from bi publisher desktop and load XML data then i can see all the records.
but The same RTF is not showing data from Report.
I don't know what is the wrong with RTF.
I am attaching RTF and XML. could you please go through it and help me ?
Thanks for your help.Hi Bogdan,
i have 2 outputs for this report excel and PDF.
after scheduling report excel is working fine but PDF out put is failure. i am getting following message.
Job Name : Payment Request
Job Executed Date : March 19, 2015 9:15:11 AM CDT
Status : Job was failed.
View History :
Detail Message:
::RIPPLE_OUTPUT_FAILED::[INSTANCE_ID=vausobias201.austin.ppdi.com.1394740179760] [OUTPUT_ID=1006] ::DOCUMENT_GENERATION_FAILED::[INSTANCE_ID=vausobias201.austin.ppdi.com.1394740179760] [OUTPUT_ID=1006][ReportProcessor]Error rendering documentoracle.xdo.servlet.scheduler.ProcessingException: [ReportProcessor]Error rendering document
at oracle.xdo.enterpriseScheduler.bursting.BurstingReportProcessor.renderReport(BurstingReportProcessor.java:447)
at oracle.xdo.enterpriseScheduler.bursting.BurstingReportProcessor.onMessage(BurstingReportProcessor.java:127)
at oracle.xdo.enterpriseScheduler.u -
Portlets w/ XML/XSL data
This is going to sound strange. My group has a WebLogic "app" that pulls status
of various systems we support. This app uses XML data and XSL stylesheets to
display the data. The cute part is that other than the first HTML file that gets
loaded, we don't actually load HTML files at all. It's all done as re-freshes
of new XML data with new XSL stylesheets.
Our hope is to move this into a Portal arena where we can attach security roles
as well as presenting default information to different people depending on their
roles. I tinkered with the WLP 7.0 and had a sample portal with tabs at the top.
Very cool, but when you navigated back and forth, we lost our content that was
previosly displayed. What we are hoping is that WLP 8.1 has a mechanism that
we can retain some kind of "state" of a page that it can be refreshed back to
where it was left once we go back to that section.
Anyways, this may not be possible because of the way we chose to design our app.
But if there is a way, I'd like to know what it is. I am currently trying to
tinker up an example Portal site for myself to see what I can do about it. Any
help that can be offered would be greatly appreciated.There's XSL Formatter from www.antennahouse.com, and there's FOP from xml.apache.org/fop, and probably others that could be found by a simple Google search.
-
Hi,
I am using apache's FOP 0.20.3, xerces 2.0.0.beta4 and xalan j.2.2.0 to convert xml/xsl file to pdf. The code is same as the one given in the org.apache.fop.apps.Driver class.
<pre>
Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);
InputHandler inputHandler = new XSLTInputHandler(new File(xmlFile), new File(xslFile));
try
XMLReader parser = inputHandler.getParser();
driver.setOutputStream(new FileOutputStream(outFile));
driver.render(parser, inputHandler.getInputSource());
catch (FOPException fope)
fope.printStackTrace();
catch (FileNotFoundException fnfe)
fnfe.printStackTrace();
</pre>
The xml and xsl files I am using are glossary.xml and glossary.xsl files that come with FOP.
Now, this code compiles successfully and while running gives the following exception:
<pre>
[ERROR]: Logger not set
[INFO]: building formatting object tree
[INFO]: [1]
org.apache.fop.apps.FOPException: java.lang.NullPointerException
at org.apache.fop.apps.Driver.render(Driver.java:486)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1132)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3170)
at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:433)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:629)
at org.apache.xerces.impl.XMLNamespaceBinder.endDocument(XMLNamespaceBinder.java:702)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endDocument(XMLDTDValidator.java:974)
at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:445)
at org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1123)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load(XMLEntityManager.java:3078)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces(XMLEntityManager.java:2766)
at org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:995)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:332)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:510)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:557)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:148)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1096)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1132)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3170)
at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:433)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:629)
at org.apache.xerces.impl.XMLNamespaceBinder.endDocument(XMLNamespaceBinder.java:702)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endDocument(XMLDTDValidator.java:974)
at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:445)
at org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1123)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load(XMLEntityManager.java:3078)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces(XMLEntityManager.java:2766)
at org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:995)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:332)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:510)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:557)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:148)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1096)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
</pre>
Can anybody help?Hi,
I also facing same problem,did you get the solution.
I am using apache's FOP 0.20.3, xerces-1.2.3 and xalan-2.0.0 and jdk1.3 with weblogic5.1 to convert xml/xsl file to pdf. The code is same as the one given in the org.apache.fop.apps.Driver class.
please give me sample code.
thanks,
[email protected] -
Is XML+XSL possible within a PDF?
Hello!
After much searching all I could find were articles about converting xml+xsl INTO a pdf file. I'm wondering if I could embed XML+XSL INSIDE a pdf file and have it render. Does Reader support XSL processing? I'm new to pdf generation in general so any tips or advice would be useful and there is very little on the interwebs about XSL inside a pdf.
Thank you!After looking at http://partners.adobe.com/public/developer/opensource/index.html I was under the impression that Reader used the Sablotron engine for some reason. What adobe products use Sablotron and XSL then?
-
Urgent! How to suppress indents in output from (XML , XSL) -- HTML
I make transformation (XML , XSL) --> HTML using parser v2 of Oracle XDK for Java v 9.2.0.2.0
I want to generate html in which several tags will follow one after another without new line, and indents.
Like this
<html>
<body>
<img src="1.jpg"/><img src="2.jpg"/>
</body>
</html>
Only in this case images will be visualized in IE5 together without spaces.
But xsl-processor is formatting output text: put each tag on new line and make indents for child tags.
I tried to
1) eliminate white spaces in xsl
2) use <xsl:output indent="no"/>
3) use <xsl:strip-space elements="*"/>
4) use method setPreserveWhitespace(true/false) of XMLParser (oracle.xml.parser.v2.XMLParser)
Xsl-processor continue to format output text.
my xml
<list>
<element name="1.jpg" />
<element name="2.jpg" />
</list>
my xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="list">
<html><body>
<img src="{element[1]/@name}"/><img src="{element[2]/@name}"/>
</body></html>
</xsl:template>
</xsl:stylesheet>
html-output
<html>
<body>
<img src="1.jpg"/>
<img src="2.jpg"/>
</body>
</html>
Please help me!html-output
<html>
<body>
<img src="1.jpg"/>
<img src="2.jpg"/>
</body>
</html>
Please help me! -
Proprietary Sys.= XML= XSL-FO= PDF In memory transform
I am trying to preform an in memory creation of a pdf (using XSL-FO and FOP) from data contained in a proprietary system.
The process I am using is:
1: get xml of the data in the proprietary system (this works and the xml is fine)
2: create the XSL-FO using the xml from stage 1 and an xslt (where I am going wrong)
3: transform the xml to pdf (this works if I save the XSL-FO.xml and the xslt used to disk and then run FOP seperately)
When I run the code I get a Fatal Error from FOP - Content not allowed in prolog. When I write the XSL-FO file to disk and look at it, it's not been transformed to XSL-FO and is missing all the mark-up.
I have put the code below - any help would be very appreciated.
Thanks
// Setup XML input - The methods to create the initial xml return a String
StringReader inSource = new StringReader( inResult );
// Setup XSLT Stylesheet - The fo styles are stored in the proprietary system
String foXSL = getStyleSheet("FOStyleSheet");
ByteArrayOutputStream foXMLba = new ByteArrayOutputStream();
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer( new StreamSource( new StringReader( foXSL ) ) );
Result foRes = new StreamResult( foXMLba );
transformer.transform( new StreamSource( inSource), foRes );
Driver driver = new Driver();
driver.setRenderer( Driver.RENDER_PDF );
ByteArrayOutputStream pdfOut = new ByteArrayOutputStream();
driver.setOutputStream( pdfOut );
driver.setInputSource( new InputSource( in_foResult ) );
driver.run();an xslt (where I am going wrong)Yes, I would say that's a good guess at your problem. It does indeed sound like one of the common XSLT errors, where none of your templates are being matched and the default handling takes over; all that does is to copy the text nodes to the output.
PC² -
Unable to transform XML with XSL in java code
Hi,
Could somebody please tell me what's wrong with my code, why it isn't transform the XML with XSL to the output that I want. If I use the command line to transform the XML, it output perfectly:
java org.apache.xalan.xslt.Process -in marc.xml -xsl MARC21slim2MODS.xsl -out out.xml
Here is the code of my program to transform the XML with XSL, I am using xalan-j_2_2-bin:
import java.io.*;
import java.net.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
import java.math.BigInteger;
String xslDoc = "MODS.xsl";
String xmlResult = "out.xml";
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setNamespaceAware(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
Document xmlDoc = docBuilder.newDocument();
Element root = xmlDoc.createElement("collection");
root.setAttribute("xmlns", "http://www.loc.gov/MARC21/slim");
xmlDoc.appendChild(root);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xslDoc));
FileWriter fw = new FileWriter(new File(xmlResult));
StreamResult output = new StreamResult(fw);
transformer.transform(new DOMSource(xmlDoc), output);
fw.flush();
fw.close();
========================
marc.xml -- source XML file
========================
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01488cam 2200337 a 4500</leader><controlfield tag="001">2502929</controlfield><controlfield tag="005">19930521155141.9</controlfield><controlfield tag="008">920219s1993 caua j 000 0 eng </controlfield><datafield ind1=" " ind2=" " tag="035"><subfield code="9">(DLC) 92005291</subfield></datafield><datafield ind1=" " ind2=" " tag="906"><subfield code="a">7</subfield><subfield code="b">cbc</subfield><subfield code="c">orignew</subfield><subfield code="d">1</subfield><subfield code="e">ocip</subfield><subfield code="f">19</subfield><subfield code="g">y-gencatlg</subfield></datafield>
</record></collection>
========================
out.xml -- result using command line
========================
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="http://www.loc.gov/mods/" xmlns:xlink="http://www.w3.org/TR/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/mods/ http://www.loc.gov/standards/marcxml/schema/mods.xsd">
<mods>
<titleInfo>
<title>Arithmetic</title>
</titleInfo>
<name type="personal">
<namePart>Sandburg, Carl</namePart>
<namePart type="date">1878-1967</namePart>
<role>creator</role>
</name>
</mods>
</collection>
========================
out.xml -- result using my java program
========================
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="http://www.loc.gov/mods/" xmlns:xlink="http://www.w3.org/TR/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/mods/ http://www.loc.gov/standards/marcxml/schema/mods.xsd">01488cam 2200337 a 4500250292919930521155141.9920219s1993 caua j 000 0 eng (DLC) 920052917cbcorignew1ocip19y-gencatlgpc16 to br00 02-19-92; br02 to SCD 02-21-92; fd11 02-24-92 (PS3537.A618 A...); fa00 02-26-92; fa05 03-02-92; fm31 03-06-92; CIP ver. pv08 04-16-93; pv01 to CLT 04-20-93; lb10 05-21-93
</collection>I am using the same XSL file. My Java program use the same XSL file I used in the command line.
It is possible that my Java code is using a different parser, but I developed a seperate program to parse the XML using the same parser that my Java code is using. It output the result I expected. Here is the code for the program:
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class Convertor {
public static void main(String[] args) throws Exception {
String xslDoc = "MARC21slim2MODS.xsl";
String xmlResult = "out.xml";
String xmlDoc = marc.xml";
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xslDoc));
StreamSource xmlSource = new StreamSource(xmlDoc);
FileWriter fw = new FileWriter(new File(xmlResult));
StreamResult output = new StreamResult(fw);
transformer.transform(xmlSource, output);
} -
Problem in transforming xml to html using xsl
Hi everybody ,
I am creating a xml in memory and i want to transform using xsl into an html.
I want to embed some html code also in the data node.But when I get the html it simply writes as it is. I tried to make it cdata section but it did not worked. Pls help.
crypticashu
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.dom.DOMSource;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class mytemp {
public static void main(String args[])
DocumentBuilder builder = null;
Document document = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try
builder = factory.newDocumentBuilder();
document = builder.newDocument();
catch (ParserConfigurationException e)
e.printStackTrace();
Element root = (Element) document.createElement("REPORT");
document.appendChild(root);
Node child = document.createElement("DATA");
CDATASection data = document.createCDATASection("<b>Hello World </b>");
child.appendChild(data);
root.appendChild(child);
document.getDocumentElement().normalize();
DOMSource domsource = new DOMSource(document);
TransformerFactory tfactory = TransformerFactory.newInstance();
File f = new File("c:/mytemp/report.xsl");
StreamSource xsl = new StreamSource(f);
File html = new File("c:/myhtml.html");
try
Templates templates = tfactory.newTemplates(xsl);
Transformer transformer = templates.newTransformer();
transformer.transform(domsource, new StreamResult(html));
catch(Exception e)
e.printStackTrace();
}want to embed some html code also in the data node.But when I get the html it simply writes as it is.That statement contradicts:
In real application i will be getting data containg html tags.I want the parser to read that data as simple text. Both cannot be true. You either want the HTML to not be parsed or you want the transformer to deal with it. Which one?
- Saish -
Issue generating pdf from xml template, data and StreamServer webservices
We purchased Abode LiveCycle Premium Print ES4. It included a product called StreamServe which we planned to use to merge xml templates and data into a pdf file using a StreamServe webservice (for developers). It seems the StreamServe webservices are not equal to that task. Can anyone offer a hint how this automated pdf generation can be achieved using LCPP? (I suspect it can be done using Workbench but I don't know this to be a fact.)
TIA,
BillWas that another shameless book plug??
Sorry, gotta run. I just got word the Fed Ex delivery of my copy of your book just arrived. Do you 'e-sign' personalized copies?
p.s. The preview of Chapter 7 (Transforming XML with XSLT) is great and filled with good clean examples and explanation. -
XML Transformation while pushing data
I can get an XML file that contains a structure like
<order>
<onumber>12345</onumber>
<customer>
<name>Miller</name>
<street>XY Street</street>
<city>Bristol</city>
</customer>
<object>
<orderno>12345678</orderno>
<quant>5</quant>
<color>...</color>
</object>
</order>
But to import it into BW I need something like
<order>
<onumber>12345</onumber>
<i>Delete <customer></i>
<name>Miller</name>
<street>XY Street</street>
<city>Bristol</city>
<i>Delete </customer></i>
<i>Delete <object></i>
<orderno>12345678</orderno>
<quant>5</quant>
<color>...</color>
<i>Delete </object></i>
</order>
Is there any way to do this transformation from the BW side, e.g. by changing the generated function module?
Best regards
Dirkhello dirk,
here's an xsl.
order.xsl -
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="order"/>
</xsl:template>
<xsl:template match="*|@*|text()">
<xsl:copy>
<xsl:apply-templates select="*|@*|text()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="customer">
<xsl:copy-of select="*" />
</xsl:template>
<xsl:template match="object">
<xsl:copy-of select="*" />
</xsl:template>
</xsl:stylesheet>
here's the original xml sample data:
i added some elements below the object assuming
that you have other elements as expressed by ...
order.xml -
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="order.xsl"?>
<order>
<onumber>12345</onumber>
<customer>
<name>Miller</name>
<street>XY Street</street>
<city>Bristol</city>
</customer>
<object>
<orderno>12345678</orderno>
<quant>5</quant>
<color>...</color>
</object>
<other>
<otherchild>Test</otherchild>
</other>
</order>
here's the result:
result -
<?xml version="1.0" encoding="UTF-8"?>
<order>
<onumber>12345</onumber>
<name>Miller</name>
<street>XY Street</street>
<city>Bristol</city>
<orderno>12345678</orderno>
<quant>5</quant>
<color>...</color>
<other>
<otherchild>Test</otherchild>
</other>
</order>
i think the code answers your question.
does it?
regards
jo -
ENTITIES and transforming XML to XML/HTML using XSL
I am going absolutely nuts. When using XSL to transform an XML
file to HTML or another XML schema, critical entities dissappear.
For example:
<oldtag>press "any" key</oldtag>
will get rendered to
<newtag>press "any" key</newtag>
by the XML/XSL parser, which is not valid HTML or XML.
How do I preserve these entities through the transformation
process. Escaping the text (in the XML source) with <![CDATA[]]
is not possible in this case.--Michael
nullAssuming you can't use a CDATA in the DTD to prevent parsing,
then my suggestion would be to use the XSL stylesheet to restore
the entities as there is no way that I am aware of that will set
conditional expansion.
Oracle XML Team
http://technet.oracle.com
Oracle Technology Network
Michael Van Auken (guest) wrote:
: I am going absolutely nuts. When using XSL to transform an
XML
: file to HTML or another XML schema, critical entities
dissappear.
: For example:
: <oldtag>press "any" key</oldtag>
: will get rendered to
: <newtag>press "any" key</newtag>
: by the XML/XSL parser, which is not valid HTML or XML.
: How do I preserve these entities through the transformation
: process. Escaping the text (in the XML source) with <![CDATA
: > is not possible in this case.
: --Michael
null -
Transform XML and display xsl:message
Hi,
I have a simple method to transform XML. My XSLT has <xsl:message> to help debugging while transforming. How do I access the messages to System.out.printLn?
public static Document transformXML(Document xmlDoc, Document xslDoc) throws XMLHelperException {
try {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new DOMSource(xslDoc));
DOMResult result = new DOMResult();
transformer.transform(new DOMSource(xmlDoc), result);
org.w3c.dom.Node resultNode = result.getNode();
if (resultNode instanceof Document) return (Document)resultNode;
else return result.getNode().getOwnerDocument();
} catch (TransformerConfigurationException ex) {
throw new XMLHelperException("Unable to perform transform " + ex.getLocationAsString(), ex);
} catch (TransformerException ex) {
throw new XMLHelperException("Unable to perform transform " + ex.getLocationAsString(), ex);
}thanks for the help.
Edited by: bonekrusher on Mar 8, 2008 2:27 PM
Edited by: bonekrusher on Mar 8, 2008 2:27 PMpublic class XForm {
public static void main(String[] args) throws Exception {
InputStream xslStream = null;
InputStream xmlStream = null;
try {
TransformerFactory tf = TransformerFactory.newInstance();
xslStream = new BufferedInputStream(new FileInputStream(args[1]));
Transformer t = tf.newTransformer(new StreamSource(xslStream));
tf.setErrorListener(new ErrorListener() {
public void error(TransformerException ex) throws TransformerException {
ex.printStackTrace();
public void fatalError(TransformerException ex) throws TransformerException {
ex.printStackTrace();
public void warning(TransformerException ex) throws TransformerException {
ex.printStackTrace();
xmlStream = new BufferedInputStream(new FileInputStream(args[0]));
t.transform(new StreamSource(xmlStream), new StreamResult(System.out));
} catch (Exception e) {
e.printStackTrace();
} finally {
if (xslStream != null)
xslStream.close();
if (xmlStream != null)
xmlStream.close();
<test>
<sample try="yes">
a
</sample>
</test>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xalan">
<xsl:template match="/">
<xsl:message terminate="no">got here</xsl:message>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*|@*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:transform>
Maybe you are looking for
-
RE: Podcasts, photocasts uploading to i tunes podcast site
i am pretty new at podcasts excuse the simple question i notice that if i type in photography in the podcast site ( itunes) there are results that bring up people's personal photoshows with music in the background. These are not the top ten listed bu
-
How to Increase the performance in loading a page
Hi I am developing E-mail application. In that we r using JSP for view. In E-mail application the compose page will be loading with little bit time. In this compose JSP, just To, CC,BCC, and Subject textboxes are using for Content TextArea using. In
-
Is there a way to Execute MD_PEGGING_NODIALOG for 1st level of pegging only
We can run MD_PEGGING_NODIALOG but it blows the production order out to the highest level planned orders. We want the results after just one pegging level. For example, Production order 700000 for material 244501 is pegged to planned order 100000010
-
Where can I find the discontinued Adobe SVG Viewer download at?
I have a pice of sortware that requires the discontinued Adobe SVG viewer (Jan 1, 2009) My software is no longer supported.. There's viewer that no longer works because I don't have your discontinued software. Is there any way that I can get a copy?
-
I'm using LV8.5.1