Transformation XML - abap
dear abap experts,
i currently want to read an xml file and convert it to an internal table in abap program.
in sap help, i find TRANSFORMATION, but the example there is convert from data in abap to xml format.
i have tried to convert from xml file to data in abap program and i face a short dump with error message XML_FORMAT_ERROR. do i need to make a proper structure for keeping my xml format ?
or is there something miss in my program ?
beside using transformation, is there any way to convert string that content xml file content to an internal table ?
please advice
regards
eddhie
<i>XML_FORMAT_ERROR</i>
this happens if the XML is not well formed. to make sure its well formed, just copy paste the xml in question into a notepad and save it as .xml. now double click it, it should open in Internet explorer and show the xml in tree format. if the xml is not well formed, browser wont render it and throw error message.
if the xml is a small document, post it here we can see whats wrong.
to convert XML to ABAP you can use CALL TRANSFORMATION key word which will require to you do develope XLST program to do the conversion.
of you can use FM SMUM_XML_PARSE.
(search this forum, i have already provided code sample for this FM)
Regards
Raja
Similar Messages
-
Problem with CALL TRANSFORMATION xml - abap
Hello!
I got the following problems using call transformation to read a xml-file to local abap datatype!
Simple xml file for testing:
<BMECAT>
<HEADER>
asdf
</HEADER>
</BMECAT>
XSLT file:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
<xsl:template match="/">
<xsl:value-of select="./BMECAT/HEADER"/>
</xsl:template>
</xsl:transform>
The xslt transformation works with xslt-tester!
My Source:
DATA: xmlupl TYPE string,
outputx TYPE XSTRING,
lv_string TYPE string.
* in xmlupl my xml import is stored
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = xmlupl " variable type string
IMPORTING
buffer = outputx. " variable type xstring
TRY .
CALL TRANSFORMATION path_to_xslt_file
SOURCE XML outputx
RESULT HEADER = lv_string.
CATCH cx_xslt_exception INTO xslt_error.
data: xslt_message type string .
xslt_message = xslt_error->get_text( ).
ENDTRY.
After debugging in xslt_message is stored the following text:
"The element abap was expected for the XML-ABAP transformation"
Can anyone help me with this problem?
Regards,
Danielhi
good
try this code
Just look at this piece of code, I think it should help you.
DATA : ITAB TYPE TABLE OF SPFLI,
L_XML TYPE REF TO CL_XML_DOCUMENT.
SELECT * FROM SPFLI INTO TABLE ITAB.
CREATE THE XML OBJECT
CREATE OBJECT L_XML.
CONVERT THE DATA TO XML
CALL METHOD L_XML->CREATE_WITH_DATA( DATAOBJECT = ITAB[] ).
DATA IS CONVERTED TO XML; DISPLAY THE XML-DOCUMENT
CALL METHOD L_XML->DISPLAY.
thanks
mrutyun^ -
Simple Transformation XML to ABAP Content of tag with subtrees to string field
Hi,
I have an requirement in which I have to do a transformation from an XML file to an structure.
I need get the value of a tag that have subtrees and move that to a field in my structure.
Example:
<TAG1>value1</TAG1>
<TAG2>value2</TAG2>
<TAG3>
<TAG4>value4</TAG4>
<TAG5>value5</TAG5>
</TAG3>
Result expected in ABAP Structure:
field1 -> tag1
field2 -> tag2
field3 -> <TAG4>value4</TAG4><TAG5>value5</TAG5>
The contents of the tag TAG3 is variable, so I want to store it as a string.
Can I make this with Simple Transformation?
In my tests I can move only the value of each child tag for the given field structure.
This syntax dont work:
<TAG3 tt:value-ref="STRUCTURE.FIELD3"/>
Thanks and Regards,
Miguel MottaHi Miguel
Have a look at below snippets. Here I have tried to escape the text inside TAG3 so that it gets treated as single node during transformation.
ABAP code
DATA: BEGIN OF result,
col1 TYPE string,
col2 TYPE string,
col3 TYPE string,
END OF result.
DATA: xml_string TYPE string VALUE
'<ROOT> <TAG1>value1</TAG1> <TAG2>value2</TAG2> <TAG3> <TAG4>value4</TAG4> <TAG5>value5</TAG5> </TAG3> </ROOT>',
part1 TYPE string,
part2 TYPE string,
part3 TYPE string.
* Escape the text inside TAG3 tag
FIND REGEX '(.*<TAG3>)(.*)(</TAG3>.*)' IN xml_string SUBMATCHES part1 part2 part3.
IF sy-subrc EQ 0.
part2 = escape( val = part2 format = cl_abap_format=>e_xml_text ).
* REPLACE ALL OCCURRENCES OF '<' IN part2 WITH '<'.
* REPLACE ALL OCCURRENCES OF '>' IN part2 WITH '>'.
xml_string = part1 && part2 && part3.
ENDIF.
TRY.
* Display xml
cl_abap_browser=>show_xml( EXPORTING xml_string = xml_string ).
* Deserialization
CALL TRANSFORMATION zmtest
SOURCE XML xml_string
RESULT para = result.
* Check result
WRITE:/ 'COL1=', result-col1,
/ 'COL2=', result-col2,
/ 'COL3=', result-col3.
CATCH cx_st_error.
* Error handling
MESSAGE 'Error in Simple Transformation'
TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
Transformation code
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" template="temp" version="0.1">
<tt:root name="PARA"/>
<tt:template name="temp">
<ROOT>
<TAG1>
<tt:value ref="PARA.COL1"/>
</TAG1>
<TAG2>
<tt:value ref="PARA.COL2"/>
</TAG2>
<TAG3>
<tt:value ref="PARA.COL3"/>
</TAG3>
</ROOT>
</tt:template>
</tt:transform> -
Hi Experts ,
i have a scenario proxy to soap where i am getting error while getting the response .
we are sending the request successfully and getting response .some times we are getting in proxy level error below
PARSE_APPLICATION_DATA Error during XML => ABAP conversion: Response Message; CX_ST_DESERIALIZATION_ERROR in /1SAI/SAS0446CC11CC6EC1AD4789 Line 24 An error occurred when deserializing in the simple transformation program /1SAI/SAS0446CC11CC6EC1AD4789 (Cha
Please help us to fix this bug in proxy response.
Regards
RaviHello Ravinder,
Can you please post the complete stack trace, it seems to be some fields are getting truncated i,e data sent from the program to the proxy object might be violating some length restrictions.
Please check your message interface field lengths and what is being passed to the proxy.
Regards,
Ravi. -
XML Transformation error (ABAP -- XML)
Hi,
I'm getting the foll. error while doing a XML Transformation, Can anyone help me in this regard..
<FIN_WT>56.0</FIN_WT>
<FIN_WT_UNIT>KG</FIN_WT_UNIT>
<ZZQMNUM />
<ZZHOLD />
<ZZDUMATNR
The XML page cannot be displayed
Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.
The following tags were not closed: asx:abap, asx:values, OUTPUT, item. Error processing resource 'file:///C:/Documents and...
> />
<PSP_NR>U5/0626-HT-193-1-36-344</PSP_NR>
<ZZCRTNAME>ALFI</ZZCRTNAME>
<ZZAPPNAME>ALFI</ZZAPPNAME>
Regards
Jikuare you trying to transform XML to itab?
is the xml well formed one - you can check this by running the xml file in webbrowser, if it doesnt display, then it means the xml is not well formed.
Regards
Raja -
XSLT samples for XML- ABAP mapping
Hi all,
Does anyone have a XSLT samples for XML->ABAP mapping ?
regardsfirst create XSLT program by copy pasting the below given code and give the program name as "Y_TEST"
<b>XSLT code</b>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>
<xsl:template match="NewDataSet">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<OUTTAB>
<xsl:for-each select="Table">
<OUTTAB1>
<AIRPORTCODE>
<xsl:value-of select="AirportCode"/>
</AIRPORTCODE>
<CITYOFAIRPORTNAME>
<xsl:value-of select="CityOrAirportName"/>
</CITYOFAIRPORTNAME>
<COUNTRY>
<xsl:value-of select="Country"/>
</COUNTRY>
<COUNTRYABBRIVATION>
<xsl:value-of select="CountryAbbrviation"/>
</COUNTRYABBRIVATION>
<COUNTRYCODE>
<xsl:value-of select="CountryCode"/>
</COUNTRYCODE>
<GMTOFFSET>
<xsl:value-of select="GMTOffset"/>
</GMTOFFSET>
<RUNWAYLENGTHFEET>
<xsl:value-of select="RunwayLengthFeet"/>
</RUNWAYLENGTHFEET>
<RUNWAYELEVATIONFEET>
<xsl:value-of select="RunwayElevationFeet"/>
</RUNWAYELEVATIONFEET>
<LATITUDEDEGREE>
<xsl:value-of select="LatitudeDegree"/>
</LATITUDEDEGREE>
<LATITUDEMINUTE>
<xsl:value-of select="LatitudeMinute"/>
</LATITUDEMINUTE>
<LATITUDESECOND>
<xsl:value-of select="LatitudeSecond"/>
</LATITUDESECOND>
<LATITUDENPEERS>
<xsl:value-of select="LatitudeNpeerS"/>
</LATITUDENPEERS>
<LONGITUDEDEGREE>
<xsl:value-of select="LongitudeDegree"/>
</LONGITUDEDEGREE>
<LONGITUDEMINUTE>
<xsl:value-of select="LongitudeMinute"/>
</LONGITUDEMINUTE>
<LONGITUDESECONDS>
<xsl:value-of select="LongitudeSeconds"/>
</LONGITUDESECONDS>
<LONGITUDEEPERW>
<xsl:value-of select="LongitudeEperW"/>
</LONGITUDEEPERW>
</OUTTAB1>
</xsl:for-each>
</OUTTAB>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:stylesheet>
<b>just create a type 1 program and paste the below given code.</b>
report y_consume_webservice .
data: wf_user type string .
data: wf_password type string .
types: begin of outtab1 ,
airportcode(6) ,
cityofairportname(50),
country(30) ,
countryabbrivation(10),
countrycode(6) ,
gmtoffset(10) ,
runwaylengthfeet(15),
runwayelevationfeet(15),
latitudedegree(10) ,
latitudeminute(10) ,
latitudesecond(10) ,
latitudenpeers(10) ,
longitudedegree(10) ,
longitudeminute(10) ,
longitudeseconds(10) ,
longitudeeperw(10) ,
end of outtab1 .
data: outtab type table of outtab1.
data: wf_o like line of outtab .
data: g_okcode like sy-ucomm .
data: my_container type ref to cl_gui_custom_container .
data: g_dock type ref to cl_gui_docking_container .
data: mygrid type ref to cl_gui_alv_grid .
data: wf_field_cat type lvc_t_fcat .
data: wf_field_cat_wa like line of wf_field_cat ,
wf_is_layout type lvc_s_layo .
data: wf_fld_cat type slis_t_fieldcat_alv .
data: wf_fld_cat_wa like line of wf_fld_cat .
data: wf_repid like sy-repid .
data: int_tab_name type slis_tabname .
data: xslt_err type ref to cx_xslt_exception .
constants:
* encoding for download of XML files
encoding type string value 'utf-8' .
data: rlength type i,
txlen type string .
data: http_client type ref to if_http_client .
data: wf_string type string .
data: wf_string1 type string .
data: wf_proxy type string ,
wf_port type string .
selection-screen: begin of block a with frame .
parameters: uri2(132) type c lower case .
selection-screen skip 1.
parameters: user(50) lower case,
password(50) lower case ,
p_proxy(100) lower case default 'proxy.xxx.com' ,
p_port(4) default '80'.
selection-screen: end of block a .
at selection-screen output.
loop at screen.
if screen-name = 'PASSWORD'.
screen-invisible = '1'.
modify screen.
endif.
endloop.
start-of-selection .
clear wf_string .
concatenate
'<?xml version="1.0" encoding="utf-8"?>'
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
'<soap:Body>'
'<GetAirportInformationByCountry xmlns="http://www.webserviceX.NET">'
'<country>' uri2 '</country>'
'</GetAirportInformationByCountry>'
'</soap:Body>'
'</soap:Envelope>'
into wf_string .
clear :rlength , txlen .
rlength = strlen( wf_string ) .
move: rlength to txlen .
clear: wf_proxy, wf_port .
move: p_proxy to wf_proxy ,
p_port to wf_port .
call method cl_http_client=>create
exporting
host = 'www.webservicex.net'
service = '80'
scheme = '1'
proxy_host = wf_proxy
proxy_service = wf_port
importing
client = http_client.
http_client->propertytype_logon_popup = http_client->co_disabled.
wf_user = user .
wf_password = password .
call method http_client->authenticate
exporting
proxy_authentication = 'X'
username = wf_user
password = wf_password.
call method http_client->request->set_header_field
exporting
name = '~request_method'
value = 'POST'.
call method http_client->request->set_header_field
exporting
name = '~server_protocol'
value = 'HTTP/1.1'.
call method http_client->request->set_header_field
exporting
name = '~request_uri'
value = '/airport.asmx'.
call method http_client->request->set_header_field
exporting
name = 'Content-Type'
value = 'text/xml; charset=utf-8'.
call method http_client->request->set_header_field
exporting
name = 'Content-Length'
value = txlen.
call method http_client->request->set_header_field
exporting
name = 'SOAPAction'
value = 'http://www.webserviceX.NET/GetAirportInformationByCountry'.
call method http_client->request->set_cdata
exporting
data = wf_string
offset = 0
length = rlength.
call method http_client->send
exceptions
http_communication_failure = 1
http_invalid_state = 2.
call method http_client->receive
exceptions
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
clear wf_string1 .
wf_string1 = http_client->response->get_cdata( ).
replace all occurrences of
'<' in wf_string1 with '<' .
replace all occurrences of
'>' in wf_string1 with '>' .
replace all occurrences of
'xmlns=' in wf_string1 with 'xmlns:xsl=' .
try .
call transformation (`Y_TEST`)
source xml wf_string1
result outtab = outtab.
catch cx_xslt_exception into xslt_err.
data: s type string.
s = xslt_err->get_text( ).
write: ': ', s.
stop.
endtry .
break-point .
Try this and give me your feedback.
Regards
Raja -
Transforming XML into nested Internal Table via Call Transformation XSLT
Hi guys!
I am relatively new to this XML transformation to Abap Internal table. Hence I got help some help from this thread ABAP Development as well as referencing Txn SSTDEMO1 and SSTDEMO2
But I tried to attempt on my prog it failed. Heres my sample XML, XSLT & as well as Internal Table.
The good news is I am able to read in a BID item under bidlist BUT with no fields filled in the table.... Pls help....
<b><u>XML</u></b>
<?xml version="1.0" encoding="iso-8859-1"?>
<myXML>
<BIDLIST>
<BID>
<HEADER>
<DOC_CODE>4000000343</DOC_CODE>
<RESPONSE_NO>80000003</RESPONSE_NO>
<RESPONSE_DATE>2006-10-01</RESPONSE_DATE>
<SUPP_CODE>44</SUPP_CODE>
<SUPP_SITE_ID>44</SUPP_SITE_ID>
<SUPP_CONTACT_NAME>JIM BEAN</SUPP_CONTACT_NAME>
<SUPP_CONTACT_PHONE>+6512345678</SUPP_CONTACT_PHONE>
<SUPP_CONTACT_EMAIL>[email protected]</SUPP_CONTACT_EMAIL>
</HEADER>
</BID>
</BIDLIST>
<myXML>
<u><b>XSLT</b></u>
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sap="http://www.sap.com/abapxml"
>
<xsl:template match="/">
<asx:abap xmlns:asx="http://www.sap.com/abapxml">
<asx:values>
<BID_RESPONSE>
<xsl:for-each select="myXML/BIDLIST/BID">
<LBID>
<xsl:for-each select="HEADER">
<LHEADER>
<DOC_CODE> <xsl:value-of select="DOC_CODE"/> </DOC_CODE>
<RESPONSE_NO> <xsl:value-of select="RESPONSE_NO"/> </RESPONSE_NO>
<RESPONSE_DATE> <xsl:value-of select="RESPONSE_DATE"/> </RESPONSE_DATE>
<SUPP_CODE> <xsl:value-of select="SUPP_CODE"/> </SUPP_CODE>
<SUPP_SITE_ID> <xsl:value-of select="SUPP_SITE_ID"/> </SUPP_SITE_ID>
<SUPP_CONTACT_NAME> <xsl:value-of select="SUPP_CONTACT_NAME"/> </SUPP_CONTACT_NAME>
<SUPP_CONTACT_PHONE> <xsl:value-of select="SUPP_CONTACT_PHONE"/> </SUPP_CONTACT_PHONE>
<SUPP_CONTACT_EMAIL> <xsl:value-of select="SUPP_CONTACT_EMAIL"/> </SUPP_CONTACT_EMAIL>
</LHEADER>
</xsl:for-each>
</LBID>
</xsl:for-each>
</BID_RESPONSE>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:transform>
<u><b>Internal Table</b></u>
TYPES: BEGIN OF T_HEADER,
DOC_CODE(17),
RESPONSE_NO(8),
RESPONSE_DATE(10),
SUPP_CODE(16),
SUPP_SITE_ID(15),
SUPP_CONTACT_NAME(140),
SUPP_CONTACT_PHONE(23),
SUPP_CONTACT_EMAIL(100),
D_HEADER TYPE T_HEADER OCCURS 0.
TYPES: BEGIN OF T_BID,
HEADER TYPE D_HEADER,
END OF T_BID,
D_BID TYPE T_BID OCCURS 0.
TYPES: BEGIN OF T_BIDLIST,
BID TYPE D_BID,
END OF T_BIDLIST,
D_BIDLIST TYPE T_BIDLIST OCCURS 0.
TYPES: BEGIN OF TYPE_DATA,
BIDLIST TYPE D_BIDLIST,
END OF TYPE_DATA.
DATA: BID_RESPONSE TYPE TABLE OF TYPE_DATA.hi
good
go through these links, i hope these ll help you to solve your problem.
http://sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/15ecdf90-0201-0010-d792-941a3c3c30a4
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/d-f/from%20xml%20to%20abap%20data%20structures%20and%20back%20bridging%20the%20gap%20with%20xslt
thanks
mrutyun^ -
Failed transformation xml-rfc to rfc
Hi,
I have to scenario rfc to jdbc sync, SAP MI <-> XI, but when I executed the rfc, i don´t have problem in SXMB-MONI, but returned the dump in MI " Failed transformation xml-rfc to rfc". What happen?
Tks.The error isnt logged in SMXB_MONI because it happens in Adapter Engine, which is in java stack (and SXMB_MONI is in abap stack). Therefore you won't be able to see the error there.
Go to Runtime WorkBench, Message Monitoring and check the errored message there. Open the details screen and check the Audit Log for futher information about the error you got.
Regards,
Henrique. -
Transforming XML/XSLT : CDATA problem
Hi!
I have a problem transforming xml with XSLT using the API javax.xml.
The result is correct until I have a CDATA section in my xml document.
The transforming process encodes all the & < > (special characters) it finds in.
This occurs problem for the follow of my treatement because the content of my CDATA is already encoded.
For example, this xml code :
<?xml version='1.0' encoding="ISO-8859-1" ?>
<article>
<article-contenu><![CDATA[Accent : é Signe : <]]></article-contenu>
</article>
produces in my output :
Accent : &eacute; Signe : &lt;
This is my java code :
TransformerFactory tFactory = TransformerFactory.newInstance();
Source xmlSource = new StreamSource(readerXml);
Source xslSource = new StreamSource( fileXsl );
// Generate the transformer.
Transformer transformer = tFactory.newTransformer(xslSource);
// Perform the transformation, sending the output to the response.
transformer.transform(xmlSource, new javax.xml.transform.stream.StreamResult(sw));
How can I tell the transformer not to do that?
Thanks for your answers!I am having a similar problem. I have enclosed my text data in my xml file like this:
<![CDATA[<b>Hello World!</b>]]>
My select statement in my XSLT sheet is as follows:
<xsl:value-of select="." disable-output-escaping="yes"/>
I have tried setting xsl:output to text, to html, and to xml. The <, >, and & get converted to xhtml entities.
Where should I begin to troubleshoot? If the Xalan xslt jars? My stylesheet. My xml doc? Java code?
Any feedback welcome. -
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> -
How to include the first row of detail in every xquery transformed xml?
I am dealing with a XML file,where i need to publish to different BS.
First node will be a common node node which contains vital info,second node goes to one BS and third goes to another BS.
*<header></header>*
*<details></details> (they are unbounded, but the first detail tag which comes in the input file is a mandatory tag in such a way that it needs to be included in every transformed message)*
*<trailer></trailer>*
We need to apply x query transformation on it in such a way:
*</header></header>*
*<1st detail></1st detail>*
*<detail></detail> (2nd row of detail in input file)* -------------------------> Goes to BS1
*<trailer></trailer>..*
*<header></header>*
*<1st detail></1st detail>*
*<detail></detail> (3rd row of detail in input file)* ----------------------------->Goes to BS2
*<trailer></trailer>*..
And so on.
Now, the problem is how to include the first row( *1st detail* ) of detail in every xquery transformed xml?are you looping of this input with a for each?
/yourdata/details[1] should return always the first detail element.
or before the for each do an assing of this first detail element to "generic_details_var"
and use this var in every looping iteration (in an assign or as input for xquery) -
Help Please ! -- transform XML to HTML using xslt tag in JSP
Hello,
I have problem to do XSL transform in JSP.
I have an XSL : test.xsl
I have an XML : test.xml
In JSP I have:
<x:xslt media="html" xml="test.xml">
<x:stylesheet media="html" uri="test.xsl" />
</x:xslt>
But It doesn't work the way it suppose to. What is wrong in my code ? I followed the URL http://e-docs.bea.com/wls/docs81/xml/xml_apps.html
Thanks in advance,
ChristinaBasically:
try{
//Setting up parameters.
xml=new StreamSource(new File(xmlInput));
xsl=new StreamSource(new File(xslInput));
baos=new ByteArrayOutputStream();
htmlResult=new StreamResult(baos);
//Transform input(xml, xsl) onto html output.
TransformerFactory tfactory=TransformerFactory.newInstance();
Transformer transformer=tfactory.newTransformer(xsl);
transformer.transform(xml, htmlResult);
baos.writeTo(out);
//System.err.println(htmlResult.getOutputStream().toString());
catch(...){
}I havent tested and I havent use this for a while, but I hope this can serve as a staring point.
Regards,
OO -
Transforming XML Data with XSLT in a servlet
Trying to transform XML data using XSLT. The following code works fine outside of a servlet. But in a servlet it gives the following error :
* Transformer Factory error
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: Namespace not supported by SAXParser
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: Namespace not supported by SAXParser
at org.apache.xml.utils.DefaultErrorHandler.fatalError(DefaultErrorHandler.java:257)
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:813)
at TransformationApp.XSLTTransformServlet.MyTransform(XSLTTransformServlet.java:79)
at TransformationApp.XSLTTransformServlet.doGet(XSLTTransformServlet.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:812)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:758)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:484)
Several articles hinted at setting the factory namespace attribute to TRUE. I have tried that but same results. Here is the code :
static Document document;
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
//factory.setNamespaceAware(true);
//factory.setValidating(true);
try {
File stylesheet = new File(argv[0]);
File datafile = new File(argv[1]);
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(datafile);
// Use a Transformer for output
TransformerFactory tFactory =
TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = tFactory.newTransformer(stylesource);
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
} catch (TransformerConfigurationException tce) {
// Error generated by the parser
System.out.println ("\n** Transformer Factory error");
System.out.println(" " + tce.getMessage() );
// Use the contained exception, if any
Throwable x = tce;
if (tce.getException() != null)
x = tce.getException();
x.printStackTrace();
} catch (TransformerException te) {
// Error generated by the parser
System.out.println ("\n** Transformation error");
System.out.println(" " + te.getMessage() );
// Use the contained exception, if any
Throwable x = te;
if (te.getException() != null)
x = te.getException();
x.printStackTrace();
} catch (SAXException sxe) {
// Error generated by this application
// (or a parser-initialization error)
Exception x = sxe;
if (sxe.getException() != null)
x = sxe.getException();
x.printStackTrace();
} catch (ParserConfigurationException pce) {
// Parser with specified options can't be built
pce.printStackTrace();
} catch (IOException ioe) {
// I/O error
ioe.printStackTrace();
Any help would be greatly appreciated.I don't know that this is true, but i think the problem is the classpath.
The runtime has his own parser. This parser is befor your xalan.lib in the classpath and the
parser from the runntime don't support namespace.
Try Tomcat 4.
Regard Dietmar -
Error during XML = ABAP conversion
Hi
We have a synchronous call from a SRM application through a proxy framework to a vendor http server through XI. The response from the vendor's http server is returned through a custom structure -and is returned through XI back to the calling SRM application.
After receiving the response, the calling SRM application checks for a particular field value of the custom return structure for a error code and sends out an email - accordingly.
Now, the response message comes back from the vendor's server - but the lines of code beyond the synchronous call in the SRM calling application does not get executed ( mail generation part ) I get the following error on the SRM front end - <b>Error in Exchange Infrastructure: Error during XML => ABAP conversion (Response Message; error ID: CX_ST_MATCH_ELEMENT; (/1SAI/TXS00000000000000000001 XML Bytepos.: 39 XML Path: Error Text: System e</b>
Now, this error when occured in our dev environment, I set the extended xml attribute property to 'X' for the synchronous payload in calling SRM application code. The problem is, this error is occuring now in our QA environment inspite of this property being set.
Any ideas/suggestions as to why this message occurs in a standard proxy framework setup ?Hi,
Please check this link <a href="http://help.sap.com/saphelp_nw04/helpdata/en/0c/402040abf2c442e10000000a1550b0/content.htm"></a>
This talks about having the first element of the xml fragment as X0.
Hope this helps.
Regards,
Smitha. -
Error during XML = ABAP conversion, empty tag
Hi.
Im sending data from a Data Base to a proxy using BI.
But when I get an empty response from the data base wich gives me an empty XML tag the proxy shows me an error:
-PARSE_APPLICATION_DATA Error during XML => ABAP conversion (Response Message; error ID: CX_ST_MATCH_ELEMENT;
-Error during XML => ABAP conversion (Response Message; error ID: CX_ST_MATCH_ELEMENT;
-System expected the end of the element 'STMT_DC_response'
This is the message that originates the fail:
<?xml version="1.0" encoding="utf-8" ?>
<ns0:MT_PRV23_BS_desg_response xmlns:ns0="urn:tompla-com:xi:ventas_SD">
<STMT_response>
<row>
<TIPO>P</TIPO>
<NUM_OT>55062330</NUM_OT>
<NUM_DESGLOSE>1</NUM_DESG>
<CANT_DESG>1724000</CANT_DESG>
</row>
</STMT_response>
<STMT_DC_response />
</ns0:MT_PRV23_BD_desg_response>
In case that the tag is filled runs ok
<?xml version="1.0" encoding="utf-8" ?>
<ns0:MT_PRV23_BD_desg_response xmlns:ns0="urn:tompla-com:xi:ventas_SD">
<STMT_response>
<row>
<TIPO>P</TIPO>
<NUM_OT>55062330</NUMERO_OT>
<NUM_DESG>1</NUM_DESG>
<CANT_DESG>1724000</CANT_DESG>
</row>
</STMT_response>
<STMT_DC_response>
<row>
<TIPO>P</TIPO>
<NUMERO_OT>55062330</NUMERO_OT>
<NUMERO_DESGLOSE />
<COD_CAR_ADICIONA>8</COD_CAR_ADICIONA>
<PORC_CAR_ADICION>1</PORC_CAR_ADICION>
</row>
</STMT_DC_response>
</ns0:MT_PRV23_BD_desg_response>
The definition for the data is:
STMT_DC_response 0..1
row 0..n
tipo 0..1
Thanks for the help you can give me about my problem with empty tags.I moved this question to other forum
Expert Forums » SAP NetWeaver » Exchange Infrastructure
Maybe you are looking for
-
Mini Display Port to Dual-Link DVI Adapter: No image with 3840x1200
Hi! I ordered the Mini Display Port to Dual-Link DVI Adapter regardless of the many complaints that it's not working in order to connect my new MacBook Pro to my Matrox TripleHead2Go. This Graphics Expansion Module normally allows to use two 1920x120
-
It does not seem to matter if the computer is plugged into power, or if other devices are plugged into the other ports. Can anyone tell me why, or give me solution? Thanks Jtsmith
-
TS3274 My iPad won't charge. Tried more than one charger.
My IPad won't charge. I tried more then more charger...help. Plus the sound is missing for general purposes...lock sound, etc. already tried to turn on an off.
-
Hi, all: Asking for advice, etc: I have been creating a slide show of a batch of old photos inherited from my mother. I want to share these photos, some of which are over 100 years old and have done the following: 1. Scan them in greyscale on my Epso
-
Music bought from iTunes store transfer to apple loos less format
Can I have all my music bought on iTunes store to be transfer in Apple loos less format and how I proceed?