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,
    Martien

    Can 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
    Ramesh

    HI,
    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
    Sagnik

    Yes, 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 Sam

    Hello 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 ?
    regards

    first 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

  • Java xslt mapping

    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.
    Jack

    Just 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 helpful

    Thank 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&#10;</xsl:text>
                   <xsl:text>&#10;</xsl:text>
                   <xsl:text>Content-Type: text/plain; charset=us-ascii </xsl:text>
                   <xsl:text>&#10;</xsl:text>
                   <xsl:text>Content-Transfer-Encoding: 7bit </xsl:text>
                   <xsl:text>&#10;</xsl:text>
                   <xsl:text>My Order</xsl:text>
                   <xsl:text>&#10;</xsl:text>
                   <xsl:text>--b1</xsl:text>
                   <xsl:text>&#10;</xsl:text>
                   <xsl:text>Content-Type: text/plain; charset=us-ascii</xsl:text>
                   <xsl:text>&#10;</xsl:text>
                   <xsl:text>Content-Transfer-Encoding: 7bit</xsl:text>
                   <xsl:text>&#10;</xsl:text>
                   <xsl:text>Content-Disposition: attachment; filename="order.dc"</xsl:text>
                   <xsl:text>&#10;</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>&#10;</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>&#10;</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>&#10;</xsl:text>
                        <xsl:text> </xsl:text>
                        <xsl:text>D</xsl:text>
                        <xsl:text>York, PA  17404-2044         </xsl:text>
                        <xsl:text>&#10;</xsl:text>
                        <xsl:text> </xsl:text>
                        <xsl:text>E</xsl:text>
                        <xsl:text>&#10;</xsl:text>
                        <xsl:text> </xsl:text>
                        <xsl:text>F</xsl:text>
                        <xsl:text>&#10;</xsl:text>
                        <xsl:text> </xsl:text>
                        <xsl:text>G</xsl:text>
                        <xsl:text>&#10;</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>&#10;</xsl:text>
         </xsl:template>
    </xsl:stylesheet>

  • XSLT compile error.

    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.

  • XSLT, problem with HTML

    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 &lt.;BR&gt.; 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?)

  • XSLT and Call transformation

    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

  • VPA drops connection

    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