XSLT screens
I want to generate HTML UI's using XML and XSLT. Not rocket science,
everyones writing about it. But, I find no examples, hints, tips, tricks
etc. Anyone doing this?
You can also try www.xslinfo.com and www.zvon.com, the latter has a great
tutorial on xsl. Chapter 14 from XML Bible could also clear some things out.
Alex Rojkov
http://www.ObjectReflection.com
[email protected]
We are coming...
"Cameron Purdy" <[email protected]> wrote in message
news:39c147e6$[email protected]..
There is some good documentation available from www.w3.org,www.apache.org,
and from www.caucho.com.
Cameron Purdy
[email protected]
http://www.tangosol.com
WebLogic Consulting Available
"Will Spies" <[email protected]> wrote in message
news:39c0c60f$[email protected]..
I want to generate HTML UI's using XML and XSLT. Not rocket science,
everyones writing about it. But, I find no examples, hints, tips, tricks
etc. Anyone doing this?
Similar Messages
-
Build page with screen definition in XML using XSLT in ADF 11.1.1.x
Hi folks,
I'm figuring out how best integrating Oracle Policy Automation/Webdeterminations in ADF. My idea is that in a ADF Taskflow I first call a Init-session webservice on OPA to initiate a session with facts queried from ADF Components.
Then I would query a Determinations Server Webservice to get the next interview-screen definition. This gives me an xml with the definition of a screen to present. I could create an xslt that transform this to an HTML form. Then I would show a page with this (x)html form included in a container. The user could fill in the question-fields. Then on a command button I would read the values from the HTTP request and feed it into a webservice call to the Determinations Service.
Is a scenario like this possible in ADF? And could you give me some hints to get me on track? Or would you suggest otherwise?
The recommendation from OPA is to use data-adapters. But that are then java-classes based on an java-interface that are to be custom build on a datamodel. And I could imagine several security implications on that.
Thanks in advance.
Regards,
MartienCan you use JAXB to unmarshall the XML document to a Java Class (and create a POJO data control out of the java class) and use it in the ADF pages as form or table or tree table?
Take a look at the following sample how an XML document having a schema associated can be converted to a Java class and used in the UI:
http://adftree.googlecode.com/svn/trunk/TreeSample.zip
Thanks,
Navaneeth -
XSLT mapping - Mapping of unbounded elements using Altova Mapforce
Hi,
Please give guidance on doing XSLT mapping for unbounded elements in Altova Mapforce. I am not seeing any functions (like FOR loop etc.,) in the XSLT mapping screen for the same.
I appreciate your input.
Regards
RameshHI,
For XSLT Mapping refer this help to get functions,syntax etc-
http://www.w3schools.com/xsl/default.asp
Regards,
Moorthy -
OPM gives error when trying to use XSLT stylesheet
Hi,
I am trying use a simple XSLT stylesheet into an OPM project and see the result in the web determination screen.But when ever i am clicking on the link that is created when i compile the project with the XSL file, i am getting the error
"An error occurred trying to process your request.
This error has been logged and is available in the application logs.
For support and assistance please contact [email protected]"
I have kept the XSL file inside the "templates" folder in "include" folder.
I am using a very simple one i.e
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" >
<xsl:output method="html"/>
</xsl:stylesheet>
How do I find what the error is and what do I need to do to solve this?
Thanks and regards
SagnikYes, now that above issue is solved and now when I click on the "HTML" or "PDF" link, I think some file is being generated but not properly.
For HTML, I am getting blank page error and for PDF I am getting "file is damaged" error.May be, the xslt stylesheet that I am using is wrong, but I am absolutley stuck with this. I have tried many different formats of xlst stylesheets, but none seem to be working.
pasting the two xslts below:
*<?xml version="1.0" encoding="UTF-8" ?>*
*<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">*
*<xsl:output method="html"/>*
*<xsl:template match="/">*
*<xsl:apply-templates/>*
*</xsl:template>*
*<html>*
*<body>*
*<xsl:template match="session">*
*<session><xsl:apply-templates/></session>*
*</xsl:template>*
*<xsl:template match="entity name">*
*<entity-name align="center"><xsl:apply-templates/></entity-name>*
*</xsl:template>*
*<xsl:template match="instance label">*
*<instance-label align="center"><xsl:apply-templates/></instance-label>*
*</xsl:template>*
*<xsl:template match="attribute id">*
*<attribute-id><xsl:apply-templates/></attribute-id>*
*</xsl:template>*
*<xsl:template match="date-val">*
*<date-val><xsl:apply-templates/></date-val>*
*</xsl:template>*
*<xsl:template match="text-val">*
*<text-val><xsl:apply-templates/></text-val>*
*</xsl:template>*
*<xsl:template match="unknown-val">*
*<unknown-val><xsl:apply-templates/></unknown-val>*
*</html>*
*</body>*
*</xsl:template>*
*</xsl:stylesheet>*
and
*<?xml version="1.0" encoding="UTF-8" ?>*
*<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">*
*<xsl:output method="html"/>*
*<xsl:template match="/">*
*<html>*
*<body>*
*<xsl:template match="session">*
*<session><xsl:apply-templates/></session>*
*</xsl:template>*
*<enityName>*
*<xsl:for-each select="entity name">*
*<instancelabel>*
*<xsl:for-each select="instance label">*
*<attribute-id>*
*<xsl:for-each select="attribute id">*
*<text-val>*
*<xsl:value-of select="text-val"/>*
*</text-val>*
*<date-val>*
*<xsl:value-of select="date-val"/>*
*</date-val>*
*</xsl:for-each>*
*</attribute-id>*
*</xsl:for-each>*
*</instancelabel>*
*</xsl:for-each>*
*</enityName>*
*</body>*
*</html>*
*</xsl:template>*
*</xsl:stylesheet>*
also pasting the source xml file I am trying to convert.
- <session xmlns="http://oracle.com/determinations/engine/relational/sessiondata/10.0" sessionDateTime="2010-12-17T11:34:08" locale="en-US" rulebase="Barclay_2910" rulebase-build="2010-12-17 06:04:02Z">
- <entity name="global">
- <instance label="global">
- <attribute id="S_Other_Type_of_Business1">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Nature_of_Business">
*<unknown-val />*
*</attribute>*
- <attribute id="N_Desired_Review_Period">
*<unknown-val />*
*</attribute>*
- <attribute id="S_I_Confirm">
*<unknown-val />*
*</attribute>*
- <attribute id="S_new_investors_ID_Vd">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Address">
*<unknown-val />*
*</attribute>*
- <attribute id="N_Total_Amount_of_Capital_Invested">
*<unknown-val />*
*</attribute>*
- <attribute id="S_State_Business_use_Trading_name1">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Correspondence_Postcode">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Country">
*<unknown-val />*
*</attribute>*
- <attribute id="S_BTA_Code1">
*<text-val>Central Government</text-val>*
*</attribute>*
- <attribute id="S_Correspondence_Address">
*<unknown-val />*
*</attribute>*
- <attribute id="N_Total_Amount_Capital_Invested_non_Corporate">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Business_Organisation">
*<unknown-val />*
*</attribute>*
- <attribute id="S_State_Business_use_Trading_name">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Business_Organisation1">
*<text-val>1</text-val>*
*</attribute>*
- <attribute id="S_Date_Established1">
*<date-val>2010-01-01</date-val>*
*</attribute>*
- <attribute id="S_Telephone_Number">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Date_of_Incorporation1">
*<uncertain-val />*
*</attribute>*
- <attribute id="S_Date_of_Incorporation">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Postcode">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Start_Up_Type_Non_Corporate">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Previous_registered_names">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Other_Investments_non_corporate">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Registered_Number">
*<unknown-val />*
*</attribute>*
- <attribute id="b8@Properties_PropBkACC_xsrc">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Registered_Number1">
*<text-val />*
*</attribute>*
- <attribute id="b6@Properties_PropBkACC_xsrc">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Business_use_Trading_name1">
*<text-val>Yes</text-val>*
*</attribute>*
- <attribute id="S_Registered_address_Main_Trading">
*<unknown-val />*
*</attribute>*
- <attribute id="S_select_the_high_risk_industry_operated1">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Start_Up_Type">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Priority1">
*<text-val>Standard</text-val>*
*</attribute>*
- <attribute id="S_Correspondence_address_same_Main_Trading">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Additional_Source_Capital">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Previous_Sort_Code">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Source_of_funds">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Choose_Start_Up1">
*<text-val>Start Up/New Entity/Businesses</text-val>*
*</attribute>*
- <attribute id="S_Registered_Country">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Fax_Number">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Contributer">
*<unknown-val />*
*</attribute>*
- <attribute id="S_business_organisations_annual_turnover1">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Previous_Account_number_Roll_Number">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Previous_registered_names1">
*<text-val />*
*</attribute>*
- <attribute id="b9@Rules_startuprule_doc">
*<unknown-val />*
*</attribute>*
- <attribute id="S_CIS_Record1">
*<text-val>Yes</text-val>*
*</attribute>*
- <attribute id="S_Employees_Members1">
*<text-val>1-9</text-val>*
*</attribute>*
- <attribute id="S_shareholders_Contributors">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Business_operate_high_risk_industry">
*<unknown-val />*
*</attribute>*
- <attribute id="b7@Properties_PropBkACC_xsrc">
*<unknown-val />*
*</attribute>*
- <attribute id="S_select_the_high_risk_industry_operated">
*<unknown-val />*
*</attribute>*
- <attribute id="S_business_organisations_annual_turnover">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Registered_Postcode">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Nature_of_Business1">
*<text-val />*
*</attribute>*
- <attribute id="S_Country_of_Incorporation1">
*<text-val>1</text-val>*
*</attribute>*
- <attribute id="N_issued_share_capital_company">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Correspondence_Country">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Type_of_Business1">
*<text-val>Sole Trader</text-val>*
*</attribute>*
- <attribute id="S_Web_Address">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Registration_Number1">
*<text-val />*
*</attribute>*
- <attribute id="S_Business_operate_high_risk_industry1">
*<text-val>Yes</text-val>*
*</attribute>*
- <attribute id="S_Additional_Source_Capital1">
*<unknown-val />*
*</attribute>*
- <attribute id="Source_of_funds_non_Corporate">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Country_of_Incorporation">
*<unknown-val />*
*</attribute>*
- <attribute id="S_if_registered_address">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Date_Established">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Registration_Number">
*<unknown-val />*
*</attribute>*
- <attribute id="S_ID_VD">
*<unknown-val />*
*</attribute>*
- <attribute id="S_I_confirm_form_287">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Other_Investments">
*<unknown-val />*
*</attribute>*
- <attribute id="S_I_Confirm1">
*<text-val>Yes</text-val>*
*</attribute>*
- <attribute id="S_Date_Form_Lodged">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Registered_Address">
*<unknown-val />*
*</attribute>*
- <attribute id="S_Other_Type_of_Business">
*<unknown-val />*
*</attribute>*
- <attribute id="N_start_up_capital_business">
*<unknown-val />*
*</attribute>*
- <attribute id="N_Approx_transferring_balance">
*<unknown-val />*
*</attribute>*
*</instance>*
*</entity>*
*</session>*
Edited by: Sagnik on Dec 21, 2010 12:06 AM -
Is there a way to create a commentary file for the summary screen?
I am not seeing the summary screen in the list of commentary files in the \Development\include\commentary\en-CA\screen path. Is there a way to create a commentary for the summary screen?
Thanks all.thanks Kristy,
I'm not sure of the best way to add any requests we have for future releases.
If there is one, let me know what is best.
Here is what I want to add.
In the properties file, one can set decision report preferences for an attribute - for invisible and silent.
I wish we could also set preferences for bold, and given that, I guess it makes sense to be able to set preferences for italic and underline
While these can be addressed through custom properties and XSLT, it obviously would be easier for the modeler to be able to select the attribute enhancement in the properties file. Given that decision reports can get very long, and there are attributes which might be better highlighted in some way, this would be a great approach. -
SAP 4.7 XML data exchange using XSLT
Hello All,
Hopefully the right place to post such article but here goes any way.
My project involves producing XML files and then reading them back into to SAP internal tables. I am ok with writing SAP data to external XML file but reading it back in is causing a lot of head scratching.
I am able to double click the XML file and it launches Ok in Internet Explorer.
I am also able to debug the xslt file from within SE80 and the correct output is displayed.
However, where I am trying to read the contents of the xml file via the Call Transformation procedure call my output table is not getting populated but instead I am recieving an error message saying the following is not correct:
xmlns:sapxsl="http://www.sap.com/sapxsl
but the above line is placed automaticlly in the XSLT when you create a new one from within SE80.
I am new to SAP ABAP development so not sure what's exactly wrong.
Any help on this issue will be greatfully appreciated. Thanks in Advance,
Wasif
REPORT z_hp_xml_test .
TYPE-POOLS: ixml.
TABLES: tstc, tstct.
TYPES: BEGIN OF ty_transactions,
tcode LIKE tstc-tcode,
ttext LIKE tstct-ttext,
sprsl LIKE tstct-sprsl,
END OF ty_transactions.
DATA: itab_transactions TYPE STANDARD TABLE OF ty_transactions.
TYPES: BEGIN OF t_xml_line,
data(256) TYPE x,
END OF t_xml_line.
DATA: l_ixml TYPE REF TO if_ixml,
l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_parser TYPE REF TO if_ixml_parser,
l_istream TYPE REF TO if_ixml_istream,
l_document TYPE REF TO if_ixml_document,
l_node TYPE REF TO if_ixml_node,
l_xmldata TYPE string.
DATA: l_elem TYPE REF TO if_ixml_element,
l_root_node TYPE REF TO if_ixml_node,
l_next_node TYPE REF TO if_ixml_node,
l_name TYPE string,
l_iterator TYPE REF TO if_ixml_node_iterator.
DATA: l_xml_table TYPE TABLE OF t_xml_line,
l_xml_line TYPE t_xml_line,
l_xml_table_size TYPE i.
DATA: l_filename TYPE string.
PARAMETERS: pa_file TYPE char1024 DEFAULT 'C: emp ransactions.xml'.
Validation of XML file: Only DTD included in xml document is supported
PARAMETERS: pa_val TYPE char1 AS CHECKBOX.
START-OF-SELECTION.
Creating the main iXML factory
l_ixml = cl_ixml=>create( ).
Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
PERFORM get_xml_table CHANGING l_xml_table_size l_xml_table.
wrap the table containing the file into a stream
l_istream = l_streamfactory->create_istream_itable( table =
l_xml_table
size =
l_xml_table_size ).
Creating a document
l_document = l_ixml->create_document( ).
Create a Parser
l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
istream = l_istream
document = l_document ).
Validate a document
IF pa_val EQ 'X'.
l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
ENDIF.
Parse the stream
If any errors then disply else convert XML to table
IF l_parser->parse( ) NE 0.
IF l_parser->num_errors( ) NE 0.
DATA: parseerror TYPE REF TO if_ixml_parse_error,
str TYPE string,
i TYPE i,
count TYPE i,
index TYPE i.
count = l_parser->num_errors( ).
WRITE: count, ' parse errors have occured:'.
index = 0.
WHILE index < count.
parseerror = l_parser->get_error( index = index ).
i = parseerror->get_line( ).
WRITE: 'line: ', i.
i = parseerror->get_column( ).
WRITE: 'column: ', i.
str = parseerror->get_reason( ).
WRITE: str.
index = index + 1.
ENDWHILE.
ENDIF.
ELSE.
TRY .
CALL TRANSFORMATION (`Z_HP_TEST_XSLT`)
SOURCE XML l_xml_table
RESULT outtab = itab_transactions.
DATA: xslt_err TYPE REF TO cx_xslt_exception .
CATCH cx_xslt_exception INTO xslt_err.
DATA: s TYPE string.
s = xslt_err->get_text( ).
WRITE: ': ', s.
STOP.
ENDTRY .
Process the document
IF l_parser->is_dom_generating( ) EQ 'X'.
PERFORM process_dom USING l_document.
ENDIF.
ENDIF.
*& Form get_xml_table
FORM get_xml_table CHANGING l_xml_table_size TYPE i
l_xml_table TYPE STANDARD TABLE.
Local variable declaration
DATA: l_len TYPE i,
l_len2 TYPE i,
l_tab TYPE tsfixml,
l_content TYPE string,
l_str1 TYPE string,
c_conv TYPE REF TO cl_abap_conv_in_ce,
l_itab TYPE TABLE OF string.
l_filename = pa_file.
upload a file from the client's workstation
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_filename
filetype = 'BIN'
IMPORTING
filelength = l_xml_table_size
CHANGING
data_tab = l_xml_table
EXCEPTIONS
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Writing the XML document to the screen
CLEAR l_str1.
LOOP AT l_xml_table INTO l_xml_line.
c_conv = cl_abap_conv_in_ce=>create( input = l_xml_line-data
replacement = space ).
c_conv->read( IMPORTING data = l_content len = l_len ).
CONCATENATE l_str1 l_content INTO l_str1.
ENDLOOP.
l_str1 = l_str1+0(l_xml_table_size).
SPLIT l_str1 AT cl_abap_char_utilities=>cr_lf INTO TABLE l_itab.
WRITE: /.
WRITE: /' XML File'.
WRITE: /.
LOOP AT l_itab INTO l_str1.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab
IN
l_str1 WITH space.
WRITE: / l_str1.
ENDLOOP.
WRITE: /.
ENDFORM. "get_xml_table
*& Form process_dom
FORM process_dom USING document TYPE REF TO if_ixml_document.
DATA: node TYPE REF TO if_ixml_node,
iterator TYPE REF TO if_ixml_node_iterator,
nodemap TYPE REF TO if_ixml_named_node_map,
attr TYPE REF TO if_ixml_node,
name TYPE string,
prefix TYPE string,
value TYPE string,
indent TYPE i,
count TYPE i,
index TYPE i.
node ?= document.
CHECK NOT node IS INITIAL.
ULINE.
WRITE: /.
WRITE: /' DOM-TREE'.
WRITE: /.
IF node IS INITIAL. EXIT. ENDIF.
create a node iterator
iterator = node->create_iterator( ).
get current node
node = iterator->get_next( ).
loop over all nodes
WHILE NOT node IS INITIAL.
indent = node->get_height( ) * 2.
indent = indent + 20.
CASE node->get_type( ).
WHEN if_ixml_node=>co_node_element.
element node
name = node->get_name( ).
nodemap = node->get_attributes( ).
WRITE: / 'ELEMENT :'.
WRITE: AT indent name COLOR COL_POSITIVE INVERSE.
IF NOT nodemap IS INITIAL.
attributes
count = nodemap->get_length( ).
DO count TIMES.
index = sy-index - 1.
attr = nodemap->get_item( index ).
name = attr->get_name( ).
prefix = attr->get_namespace_prefix( ).
value = attr->get_value( ).
WRITE: / 'ATTRIBUTE:'.
WRITE: AT indent name COLOR COL_HEADING INVERSE, '=',
value COLOR COL_TOTAL INVERSE.
ENDDO.
ENDIF.
WHEN if_ixml_node=>co_node_text OR
if_ixml_node=>co_node_cdata_section.
text node
value = node->get_value( ).
WRITE: / 'VALUE :'.
WRITE: AT indent value COLOR COL_GROUP INVERSE.
ENDCASE.
advance to next node
node = iterator->get_next( ).
ENDWHILE.
ENDFORM. "process_dom
Section 3: My XSLT file:
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sapxsl="http://www.sap.com/sapxsl"
<xsl:strip-space elements="*"/>
<xsl:template match="TransList">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Tcode">
Tcode <xsl:apply-templates />
</xsl:template>
<xsl:template match="ttext">
ttext <xsl:apply-templates />
</xsl:template>
<xsl:template match="sprsl">
sprsl <xsl:apply-templates />
</xsl:template>
</xsl:transform>The exact error message I'm getting is :
ABAP XML formatting error in XML node of type "element", name: "abap" -
To convert XML to ABAP internal table can we do it with DOM or we need XSLT
I have a requirement where I need to collect the data from XML file into an internal table.
I need to collect this data into an internal table as I should make use of this data and do Goods Receipt in SAP.
My XML file is very very complex and the child nodes in my XML file may occur ones or 10 times and change dynamically.
I want to know if XML to ABAP internal table is possible with DOM or does it need XSLT too.
I used the blog of Robert which uses DOM, but it I am unable to collect the data in internal table. The blog explains only how to wtite the out put to screen as element and value.
I want to know if XML to ABAP internal table is possible with DOM or do I need XSLT too? I am confused please help.
Any help will be highly appreciated.
Regards,
Jessica SamHello Jessica
Why not using the DOM itself for processing?
Below you see the post-processing coding which I use to add the interchange control number (ICN) into an EDI message (which at this stage is still an XML-EDI stream). This is done on SAP-XI yet on the ABAP stack so you could use this approach on your R/3 system as well.
method POSTPROCESSING.
* Post-Processing of outbound EDI invoices & dispatch advices
me->map_icn( ).
endmethod.
method MAP_ICN.
* define local data
DATA: lo_node TYPE REF TO if_ixml_node,
ld_name TYPE string,
ld_value TYPE string,
ld_error_code type MPG_ERRCODE,
** ld_control_number TYPE char13,
ld_rc TYPE i,
ld_msg TYPE string. " bapi_msg.
DATA: ld_interface TYPE string.
DATA: incode TYPE REF TO if_ixml_node_collection.
LOG-POINT ID zedi
SUBKEY mc_subkey_method_trace.
ld_error_code = md_clsname.
* Get next interchange control number (ICN)
me->md_next_number = me->get_next_number(
id_nrobj = me->md_nrobj " Object (SNRO)
id_nrnr = me->md_nrnr ). " Number Range
CALL METHOD zcl_edi_uk_counter=>calculate_modulo_n09
EXPORTING
id_input = me->md_next_number
receiving
rd_output = me->md_next_number.
* Build ICN according to naming conventions agreed with EDI customer
me->md_icn = me->generate_icn( me->md_next_number ).
ld_value = me->md_icn. " type conversion to string
CLEAR: incode,
lo_node.
incode = me->mo_document->get_elements_by_tag_name( mc_d_0020 ).
lo_node = incode->get_item( index = 0 ).
CALL METHOD lo_node->set_value
EXPORTING
value = ld_value
RECEIVING
rval = ld_rc.
IF ( ld_rc NE 0 ).
CONCATENATE 'Error [' mc_d_0020
']: Method SET_VALUE (IF_IXML_NODE)'
INTO ld_msg.
CONDENSE ld_msg.
me->mif_trace->trace2( message = ld_msg ).
RAISE EXCEPTION TYPE cx_mapping_fault
EXPORTING
* textid =
* previous =
error_code = ld_error_code
error_text = ld_msg.
** MESSAGE ld_msg TYPE 'A'.
ENDIF.
CLEAR: incode,
lo_node.
incode = me->mo_document->get_elements_by_tag_name( mc_d_0020_2 ). " element for ICN
lo_node = incode->get_item( index = 0 ).
CALL METHOD lo_node->set_value
EXPORTING
value = ld_value
RECEIVING
rval = ld_rc.
IF ( ld_rc NE 0 ).
CONCATENATE 'Error [' mc_d_0020_2
']: Method SET_VALUE (IF_IXML_NODE)'
INTO ld_msg.
CONDENSE ld_msg.
me->mif_trace->trace2( message = ld_msg ).
RAISE EXCEPTION TYPE cx_mapping_fault
EXPORTING
* textid =
* previous =
error_code = ld_error_code
error_text = ld_msg.
** MESSAGE ld_msg TYPE 'A'.
ENDIF.
* define local data
DATA: ls_record TYPE mpp_dynamic.
CLEAR: ls_record.
ls_record-namespace = mc_dynamic_namespace.
ls_record-name = mc_icn.
ls_record-value = ld_value.
mif_dynamic->add_record( ls_record ).
endmethod.
In your case you would need to do a DO...ENDDO loop until you parsed all required nodes.
NOTE: ME->MO_DOCUMENT is of TYPE REF TO IF_IXML_DOCUMENT.
Regards
Uwe -
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 -
XSLT Mapping :-- End to End Scenario
Can any one provide XSLT Mapping End to End scenario with screen shots?
HI
XSLT Mapping
XSLT stands for EXtensible Stylesheet Language Transformations. It is an XML based language for transforming XML documents into any other formats suitable for browser to display, on the basis of set of well-defined rules.
Using XSLT mapping in a ccBPM scenario
File to Multiple IDocs (XSLT Mapping)
Steps required for developing XSLT Mapping
u2022 Create a source data type and a target data type
u2022 Create Message types for the source and target data types.
u2022 Create Message Interfaces includes Inbound Message interface and Outbound Message interface.
u2022 XSLT Mapping does not require creation of Message mapping, so donu2019t create any Message mapping.
u2022 Create an .XSL file which converts source data type into target data type.
u2022 Zip that .xsl file and import it into Integration Repository under Imported Archives.
u2022 In Interface Mapping choose mapping program as XSL and specify this zip program. (Through search help you will get XSL Mapping programs that you imported under Imported Archives, select your corresponding XSL Program)
u2022 Test this mapping program by navigating to Test tab.
By having look at above steps you can easily find out that this mapping is no where different from other mapping programs, here the challenging lies in creating an XSLT file. If you spend couple of minutes in studying XPATH tutorial you would be in ideal position to create an XSL Transformation (.xsl extension).
If you still find difficulties in generating XSL Transformation, then you can make use of a tool u201CAltova MapForceu201D which will create XSL file for you.
Steps for creating XSL file using this tool:
1. Open the Alto MapForce, import the source .xml and .xsd file in it
2. Similarly import the target .xml and .xsd in MapForce.
3. These two data files should match with source and target data types in Integration Repository.
4. Complete the graphical mapping using extensive list of XSLT functions available there.
5. Save the mapping file.
6. Click the XSLT tab. You will have the entire xslt logic there.
7. Copy that content and save it as .xsl file.
8. Zip above .xsl file and import the same into IR under Imported Archives.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/01a57f0b-0501-0010-3ca9-d2ea3bb983c1
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/9692eb84-0601-0010-5ca0-923b4fb8674a
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/006aa890-0201-0010-1eb1-afc5cbae3f15
xpath functions in xslt mapping
https://www.sdn.sap.com/irj/sdn/advancedsearch?cat=sdn_all&query=xslt+mapping&adv=false&sortby=cm_rnd_rankvalue#
complete mapping guide:
http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
XSLT MAPPING:
Generic XSLT Mapping for SAP XI,Part I
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/01a57f0b-0501-0010-3ca9-d2ea3bb983c1
Generic XSLT Mapping for SAP XI,Part II
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9692eb84-0601-0010-5ca0-923b4fb8674a
XSLT: Recursive Templates
XSLT: Recursive Templates
Easy RFC lookup from XSLT mappings using a Java helper class
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14
Step u2013 By u2013 Step Simple Approach for XSLT Mapping
Step By Step Simple Approach for XSLT Mapping
http://www.devguru.com/Technologies/xslt/quickref/xslt_element_applytemplates.html
cheers
Edited by: vemuganti naga phalguna on Jul 2, 2008 8:59 AM
Edited by: vemuganti naga phalguna on Jul 2, 2008 9:07 AM -
hi,
could any one please forward me java and xslt mapping step by step screen shots.
I would be thankful to you ,if you do this.
with regards,
[email protected]Java Mapping
/people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-i
/people/alessandro.guarneri/blog/2007/03/25/xi-java-mapping-helper-dom
/people/rahul.nawale2/blog/2006/07/18/java-mapping-an-alternate-way-of-reading-a-csv-file
XSLT Mapping
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/01a57f0b-0501-0010-3ca9-d2ea3bb983c1
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/9692eb84-0601-0010-5ca0-923b4fb8674a
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/006aa890-0201-0010-1eb1-afc5cbae3f15
/people/sriram.vasudevan3/blog/2005/11/21/effective-xsl-for-multimapping-getting-source-filenames-in-legacy-legacy-scenarios
Regards,
Prateek -
X freezes (kbd, mouse, screen) but machine itself still OK
This has now happened to me several times today, and although I think I may have found the cause (or at least something associated with it) I'm really not sure. I'm posting anyway, just in case it triggers any thoughts and anybody can give me a better approach to troubleshooting the next time it happens.
I'll list a possible cause below, but the symptom is that the machine just seems to freeze. No response to mouse or keyboard, even CTL-ALT-Fn or CTL-ALT-DEL. However, I'm on a KVM switch, and I can go to another machine and ssh in to the "frozen" one, and nothing seems wrong. No obvious problems in dmesg, /var/log/everything.log, or /var/log/Xorg.0.log. top gives perfectly reasonable results - the system is mostly idle. A few times, there was a zombie process, but I could get rid of it by killing its parent. I've killed a few processes at a time, even up to X itself, but putting the KVM back, the screen is unchanged. I'd say the X input mechanism was borked, but that would not completely freeze the keyboard - which doesn't even respond to caps-lock or num-lock (the lights don't change).
So far, every time, I've just ended up rebooting from my ssh session. However, this last time, I waited before rebooting, and after several minutes, the machine started responding normally. Still nothing strange in the logs.
My one clue: on every freeze, I was running KMyMoney, and had launched it's manual in KHelpCenter. I also note in the X error log the following:
khelpcenter(2857): running ("/usr/bin/meinproc4", "--stylesheet", "/usr/share/apps/khelpcenter/table-of-contents.xslt", "--output", "/var/tmp/kdecache-jack/help/en__kmymoney__makingmostof.docbook", "/usr/share/doc/kde/html/en//kmymoney/makingmostof.docbook") failed with exitCode 2
khelpcenter(2857): stderr output: "kio_help4(3062): File ' "/usr/share/doc/kde/html/en//kmymoney/makingmostof.docbook" ' does not exist.
(yes, there really does seem to be an extra double quote on the last line)
At first, I thought perhaps some temp file was being deleted while KHelpCenter was still trying to use it. The problem is that I see that error a few times - with different files, and it seems the error shows up when I view the manual page, not just before the freeze. At this point, I think It may just be a red herring.
I'm on Xorg-server 1.10.2 with the Radeon driver, kernel 2.6.39, and I do 'pacman -Syu' a few times a week - so things are pretty up to date.
Right now, I'd be happy with any useful suggestions on what to look for next time it happens.
JackJust an update - this is still happening, although less often. About 90% of the time, I just wait for some minutes, and everything starts working again. It has nothing to do with running KHelpCenter, since I've had plenty of freezes without it. It also happens with no zombie process present, so that was also a red herring.
I'm now on Xorg-sserver 1.10.3 and kernel 3.0.1-1. -
Use XSLT mapping for multiple payloads
Lydia,
Do you mean multiple mapping as
<message1>
Payload1
</message1>
<message2>
Payload2
</message2>
If you are generating XSLT mapping using any tool then you have can take xsd from the messagemapping and just map it.
in you target structure message1, message2 should be there.
Gaurav Jain
Reward Points if answer is helpfulThank you for your response. I tried several variations - including this one - but I can't seem to get the results to match your screen shot. Also, I am not sure if the tag should be 'Content-Type' or content_type ....
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:ns0="urn:sap-com:document:sap:rfc:functions" xmlns:ns="http://sap.com/xi/XI/Mail/30">
<xsl:output method="xml" encoding="utf-8" indent="no" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="ORDERS02"/>
</xsl:template>
<xsl:template match="ORDERS02">
<ns:Mail>
<Subject>
<xsl:text>Purchase Order: </xsl:text>
</Subject>
<From>
<xsl:text>mail.com</xsl:text>
</From>
<To>
<xsl:text>mail.com</xsl:text>
</To>
<Content_Type>
<xsl:text>multipart/mixed; boundary="b1"</xsl:text>
</Content_Type>
<Content><xsl:text>--b12 </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>Content-Type: text/plain; charset=us-ascii </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>Content-Transfer-Encoding: 7bit </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>My Order</xsl:text>
<xsl:text> </xsl:text>
<xsl:text>--b1</xsl:text>
<xsl:text> </xsl:text>
<xsl:text>Content-Type: text/plain; charset=us-ascii</xsl:text>
<xsl:text> </xsl:text>
<xsl:text>Content-Transfer-Encoding: 7bit</xsl:text>
<xsl:text> </xsl:text>
<xsl:text>Content-Disposition: attachment; filename="order.dc"</xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:value-of select="IDOC/E1EDK01/BELNR"/>
<xsl:text>A </xsl:text>
<xsl:text>ORD 238 </xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:value-of select="IDOC/E1EDK01/BELNR"/>
<xsl:text>B</xsl:text>
<xsl:text>The Wolf Organization </xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:value-of select="IDOC/E1EDK01/BELNR"/>
<xsl:text>C</xsl:text>
<xsl:text>PO Box 2044 </xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>D</xsl:text>
<xsl:text>York, PA 17404-2044 </xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>E</xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>F</xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>G</xsl:text>
<xsl:text> </xsl:text>
<xsl:apply-templates select="IDOC/E1EDP01"/>
<xsl:text> </xsl:text>
</Content>
<xsl:text>--b1--</xsl:text>
</ns:Mail>
</xsl:template>
<xsl:template match="IDOC/E1EDP01">
<xsl:text>Z</xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet> -
I am getting an XSLT compile error on this code:
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("style1.xsl");
Here is the code in it's entirety:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
namespace CSVImporter
public partial class CSVImporter : Form
//const string xmlfilename = @"C:\Users\fenwky\XmlDoc.xml"; - file name and location of xml file
const string xmlfilename = @"C:\Users\fenwky\XmlDoc.xml";
// New code
//const string xmlfilename = @"C:\Users\fenwky\XmlDoc.xml"; - file name and location of xsl file
const string stylesheetsimple = @"C:\Users\fenwky\style1.xsl";
//const string xmlfilecomplex = @"C:\Users\fenwky\XmlDoc2.xml";
const string xmlfilecomplex = @"C:\Users\fenwky\XmlDoc2.xml";
DataSet ds = null;
public CSVImporter()
InitializeComponent();
// Create a Open File Dialog Object.
openFileDialog1.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*";
openFileDialog1.ShowDialog();
string fileName = openFileDialog1.FileName;
//doc.InsertBefore(xDeclare, root);
// Create a CSV Reader object.
CSVReader reader = new CSVReader();
ds = reader.ReadCSVFile(fileName, true);
dataGridView1.DataSource = ds.Tables["Table1"];
private void WXML_Click(object sender, EventArgs e)
WriteXML();
public void WriteXML()
StringWriter stringWriter = new StringWriter();
ds.WriteXml(new XmlTextWriter(stringWriter), XmlWriteMode.WriteSchema);
string xmlStr = stringWriter.ToString();
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlStr);
XmlDeclaration xDeclare = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.InsertBefore(xDeclare, doc.FirstChild);
// Test code //
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("style1.xsl");
// Test code //
// Transform the file and output an HTML string.
string HTMLoutput;
StringWriter writer = new StringWriter();
xslt.Transform("XmlDoc.xml", null, writer);
HTMLoutput = writer.ToString();
writer.Close();
// Create a procesing instruction.
XmlProcessingInstruction newPI;
// Stylesheet
// String PItext = "<abc:stylesheet xmlns:abc=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">";
String PItext = "<xsl:stylesheet xmlns:xls=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">";
// newPI = doc.CreateProcessingInstruction("abc:stylesheet", PItext);
newPI = doc.CreateProcessingInstruction("xls:stylesheet", PItext);
doc.InsertAfter(newPI, doc.FirstChild);
// Save document
doc.Save(xmlfilename);
private void btExportComplexXML_Click(object sender, EventArgs e)
WriteXMLComplex();
public void WriteXMLComplex()
// Creates stringwriter
StringWriter stringWriter = new StringWriter();
ds.WriteXml(new XmlTextWriter(stringWriter), XmlWriteMode.WriteSchema);
string xmlStr = stringWriter.ToString();
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlStr);
XmlDeclaration xDeclare = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.InsertBefore(xDeclare, doc.FirstChild);
// Create a procesing instruction.
XmlProcessingInstruction newPI;
// Uses XML transformation.
String PItext = "<abc:stylesheet xmlns:abc=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">";
newPI = doc.CreateProcessingInstruction("xsl:stylesheet", PItext);
doc.InsertAfter(newPI, doc.FirstChild);
// Saves document.
doc.Save(xmlfilecomplex);
//Creates a CSVReader Class
public class CSVReader
public DataSet ReadCSVFile(string fullPath, bool headerRow)
string path = fullPath.Substring(0, fullPath.LastIndexOf("\\") + 1);
string filename = fullPath.Substring(fullPath.LastIndexOf("\\") + 1);
DataSet ds = new DataSet();
try
if (File.Exists(fullPath))
string ConStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}" + ";Extended Properties=\"Text;HDR={1};FMT=Delimited\\\"", path, headerRow ? "Yes" : "No");
string SQL = string.Format("SELECT * FROM {0}", filename);
OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, ConStr);
adapter.Fill(ds, "TextFile");
ds.Tables[0].TableName = "Table1";
foreach (DataColumn col in ds.Tables["Table1"].Columns)
col.ColumnName = col.ColumnName.Replace(" ", "_");
catch (Exception ex)
MessageBox.Show(ex.Message);
return ds;Hi Kristin,
Yes, the error looks the same:
Here is the style.xsl file:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:apply-templates select="book"/>
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>Item_Code</TD>
<TD>Item_Description</TD>
<TD>Current_Count</TD>
<TD>On_Order</TD>
</TR>
<xsl:template select="book"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="book">
<TR>
<TD><xsl:value-of select="Item_Code"/></TD>
<TD><xsl:value-of select="Item_Description"/></TD>
<TD><xsl:value-of select="Current_Count"/></TD>
<TD><xsl:value-of select="On_Order"/></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
The XML file isn't saving (generating) on Click. Thank for you for your help.
@Kylee,
Here is the right format XSL file, Please check and test again.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="book">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>Item_Code</TD>
<TD>Item_Description</TD>
<TD>Current_Count</TD>
<TD>On_Order</TD>
</TR>
<xsl:apply-templates select="book"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="book">
<TR>
<TD>
<xsl:value-of select="Item_Code"/>
</TD>
<TD>
<xsl:value-of select="Item_Description"/>
</TD>
<TD>
<xsl:value-of select="Current_Count"/>
</TD>
<TD>
<xsl:value-of select="On_Order"/>
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>
By the way, you also could check by yourself. Add a new XLS file in VS2013, It will help you check all the errors.
Best regards,
Kristin
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.
Thanks Kristen. I have checked the file and it now reads. However, I have another error now. The XML file isn't saving and I am getting this error:
Could not find file 'C:\Users\fenwky\documents\visual studio 2013\Projects\CSV Importer\CSV Importer\bin\Debug\XmlDoc.xml'.
For some reason it's not writing the file (but trying to read it?) and I am not sure what I am doing wrong.
Here is the screen shot:
private void WXML_Click(object sender, EventArgs e)
WriteXML();
public void WriteXML()
StringWriter stringWriter = new StringWriter();
ds.WriteXml(new XmlTextWriter(stringWriter), XmlWriteMode.WriteSchema);
string xmlStr = stringWriter.ToString();
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlStr);
XmlDeclaration xDeclare = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.InsertBefore(xDeclare, doc.FirstChild);
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("style1.xsl");
// Transform the file and output an HTML string.
string HTMLoutput;
StringWriter writer = new StringWriter();
xslt.Transform("XmlDoc.xml", null, writer);
HTMLoutput = writer.ToString();
writer.Close();
var piText = "type=\"text/xsl\" href=\"style1.xsl\"";
var newPI = doc.CreateProcessingInstruction("xml-stylesheet", piText);
doc.InsertAfter(newPI, doc.FirstChild);
// Save document
doc.Save(xmlfilename);
Thank you again Kristen. -
Hi,
I am using XSLT to generate a webpage using an XML file and a stylesheet. The HTML page is created fine however any HTML tag i.e. the break line tag comes out in the file as <.;BR>.; rather then <.BR.> (ignore the dots, just there so the form doesnt show them incorrectly). Any suggestions? Here is my code:
XML FILE
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><transcript xsi:noNamespaceSchemaLocation="transcript-internal.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<section title="Outlook">
<question>question<BR></question>
<answer>answer</answer>
</section>
<disclaimer>disclaimer</disclaimer>
</transcript>
TransformerFactory tFactory = TransformerFactory.newInstance();
File stypePathFile = new File(stylePath);
if (!stypePathFile.exists())
logger.severe("cannot transform transcript..stylesheet does not exist at this path " + stylePath);
StreamSource stylesource = new StreamSource(stypePathFile);
Transformer transformer = tFactory.newTransformer(stylesource);
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, charEnc);
transformer.setOutputProperty(OutputKeys.METHOD, "html");
byte bytes[] = dataXML.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
StreamSource dataSource = new StreamSource(bais);
StreamResult outputResult = new StreamResult(new File(outputPath));
transformer.transform(dataSource, outputResult);
} catch (TransformerConfigurationException tce) {
// Error generated by the parser
logger.severe("configuration error while transforming transcript: " + tce.getMessage());
} catch (Exception e) {
// Error generated by the parser
logger.severe("error while transforming transcript: " + e.getMessage());
} The XML file is created using the following code:
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class TranscriptFilter extends XMLFilterImpl {
public static final String SECTION_PREFIX = "+s:";
public static final String QUESTION_PREFIX = "+q:";
public static final String ANSWER_PREFIX = "+a:";
public static final String DISCLAIMER_PREFIX = "+d:";
public static final String IMAGE_PREFIX = "+i:";
public static final String NARRATION_PREFIX = "+n:";
public static final String PREFIX_REG_EXP = "(?m)(?=\\+[sqaidn]:)";
public static final String TRANSCRIPT_TAG = "transcript";
public static final String SECTION_TAG = "section";
public static final String TITLE_TAG = "title";
public static final String NARRATION_TAG = "narration";
public static final String QUESTION_TAG = "question";
public static final String ANSWER_TAG = "answer";
public static final String DISCLAIMER_TAG = "disclaimer";
public static final String IMAGE_TAG = "image";
public static final String URL_TAG = "url";
// schema validation tags
public static final String SCHEMA_LOCATION_TAG = "xsi:noNamespaceSchemaLocation";
public static final String SCHEMA_LOCATION_VALUE = "transcript-internal.xsd";
public static final String SCHEMA_INSTANCE_TAG = "xmlns:xsi";
public static final String SCHEMA_INSTANCE_VALUE = "http://www.w3.org/2001/XMLSchema-instance";
private boolean inSection = false; // is section tag open but not closed
public void parse(String pText) throws SAXException {
String text = pText;
String line = null;
String prefix = null;
if (text != null) {
String[] elements = text.split(PREFIX_REG_EXP);
if (elements != null) {
AttributesImpl mainAtts = new AttributesImpl();
mainAtts.addAttribute("", SCHEMA_LOCATION_TAG, SCHEMA_LOCATION_TAG, null, SCHEMA_LOCATION_VALUE);
mainAtts.addAttribute("", SCHEMA_INSTANCE_TAG, SCHEMA_INSTANCE_TAG, null, SCHEMA_INSTANCE_VALUE);
startElement("", TRANSCRIPT_TAG, TRANSCRIPT_TAG, mainAtts);
for (int i = 0; i < elements.length; i++) {
if (elements[i] != null)
line = elements.trim();
if (line.length() > 3) {
// return prefix to determine line data type
prefix = getPrefix(line);
line = removePrefix(line);
if (prefix != null) {
if (prefix.equalsIgnoreCase(SECTION_PREFIX)) {
closeSection(); // close section if open
AttributesImpl fieldAtts = new AttributesImpl();
fieldAtts.addAttribute("", TITLE_TAG, TITLE_TAG, null, line);
startElement("", SECTION_TAG, SECTION_TAG, fieldAtts);
inSection = true;
else if (prefix.equalsIgnoreCase(NARRATION_PREFIX)) {
startElement("", NARRATION_TAG, NARRATION_TAG, new AttributesImpl());
characters(line);
endElement("", NARRATION_TAG, NARRATION_TAG);
else if (prefix.equalsIgnoreCase(IMAGE_PREFIX)) {
AttributesImpl fieldAtts = new AttributesImpl();
fieldAtts.addAttribute("", URL_TAG, URL_TAG, null, line);
startElement("", IMAGE_TAG, IMAGE_TAG, fieldAtts);
endElement("", IMAGE_TAG, IMAGE_TAG);
else if (prefix.equalsIgnoreCase(QUESTION_PREFIX)) {
startElement("", QUESTION_TAG, QUESTION_TAG, new AttributesImpl());
characters(line);
endElement("", QUESTION_TAG, QUESTION_TAG);
else if (prefix.equalsIgnoreCase(ANSWER_PREFIX)) {
startElement("", ANSWER_TAG, ANSWER_TAG, new AttributesImpl());
characters(line);
endElement("", ANSWER_TAG, ANSWER_TAG);
else if (prefix.equalsIgnoreCase(DISCLAIMER_PREFIX)) {
closeSection(); // close section if open
startElement("", DISCLAIMER_TAG, DISCLAIMER_TAG, new AttributesImpl());
characters(line);
endElement("", DISCLAIMER_TAG, DISCLAIMER_TAG);
closeSection(); // close section if open
endElement("", TRANSCRIPT_TAG, TRANSCRIPT_TAG);
// closes the section tag if open
private void closeSection() throws SAXException {
if (inSection)
endElement("", SECTION_TAG, SECTION_TAG);
inSection = false;
// overrides super class method
private void characters(String pLine) throws SAXException {
if (pLine != null) {
char[] chars = pLine.toCharArray();
super.characters(chars, 0, chars.length);
// returns the prefix for a line
private String getPrefix(String pLine) {
String line = pLine;
String prefix = null;
if (validLine(line))
prefix = line.substring(0,3);
return prefix;
private String removePrefix(String pLine) {
String line = pLine;
String newLine = "";
if (validLine(line))
newLine = line.substring(3, line.length()).trim();
return newLine;
private boolean validLine(String pLine) {
if (pLine != null && pLine.length() > 3)
return true;
else
return false;Your 1,000 lines of code were indented so deeply that they scrolled off the right side of my screen and were extremely inconvenient to read. So I didn't read it.
However. Your question claimed to be about XSLT but I didn't see any XSLT posted. That was sort of strange. Anyway, if you are generating character strings containing <BR> then what you see is what you have to expect. If you want a <BR> element then generate a <BR> element. Like the one you see in the XML example you posted. (What was the relevance of that example, anyway? I didn't get that either. Was it supposed to represent the input you hoped that code was generating, or something?) -
Hi
Using <b>XSLT</b> and <b>Call transformation</b> (XSLT scheme) to convert XML file to html the problem is that line breaks in xml are ignored when passing the call tranformation.
<b>Note in xml look like:</b>
<com:Note><![CDATA[
Serie 87% 0,000000
Amount in this period 01-01-2006 - 01-07-2006 - 180 days
Currency 16.267.117,38 DKK
Loan DKK 14.332.700,00
Debt 7.358.534,23
Indexsfactor 226,230
]]></com:Note>
<b>When HTML displayed in sap, - note is just a long string which continue out of the screen. Note looks like:</b>Serie 87% 0,000000Amount in this period 01-01-2006 - 01-07-2006 - 180 daysCurrency 16.267.117,38 DKKDebt 7.358.534,23Indexsfactor 226,230
What to do ? Any ideas ?hi Jan,
Check out the link
http://www.topxml.com/code/default.asp?p=3&id=v20031025170911&ms=20&l=xsl&sw=categ
This link contains a file that contains an importable xslt stylesheet with two templates. The first is a text wrap template that breaks texts at carriage returns. You need to modify the xslt.
[code]<xsl:template name="text.wrap">
<xsl:param name="texttowrap"/>
<xsl:variable name="textlength" select="string-length($texttowrap)"/>
<!-- don't waste time if no text supplied or remaining from recursion-->
<xsl:if test="$textlength > 0">
<xsl:choose>
<xsl:when test="contains($texttowrap,$CR)">
<!-- get the text before the first instance of a carriage return character-->
<xsl:variable name="<span style="background-color:yellow;color:red;font-weight:bold;">line</span>beforefirst<span style="background-color:yellow;color:red;font-weight:bold;">break</span>" select="substring-before($texttowrap,$CR)"/>
.................[/code]
Hope this helps.
Regards,
Richa
Maybe you are looking for
-
Opening a report designed in Report 10g in Excel format
I have passed the desformat parameter as spreadsheet but still i find unnecessary blank cells between columns and rows. The report is created in Report Builder 10g manually without using the Report wizard. I have tried to remove all the spaces betwee
-
Hi Mac friends, I'm having trouble getting my VPA connection to stay connected on my iPhone 4. I pay for this service and it works great on my desktop/laptop. I entered my correct PPTP settings and it connects and holds the connection just fine. Then
-
PURCHASE REQUISITION FOR SERVICE
HELLO IN THE TRANSACTION ME21N FOR PURCHASE REQUISITION FOR SERVICE. IN THE SERVICE VIEW AT ITEM LEVEL, THERE IS A LIST DISPLAYED, SO I NEED TO ADD A FIELD WITH INFORMATION OF THE MATERIAL GROUP. ANYBODY KNOW HOW TO DO THAT? THANK YOU ELENA
-
Where is the file for flasher player for windows mobile 6.5?
Where do I find the download for flash player update for my new HTC HD2 phone? Thanks.
-
Does 9720 support the screen reader app
Hello, I havent bought a Blackberry yet but i am looking for a phone which has a hardware keyboard and also talks back to you, for my wife who recently became blind. Can i install the screenreader app on a 9720? I want a SIM free phone which has a ke