Xslt transformation - series of tags to unbounded element in target schema

I am fairly new to xslt. I am trying to do this xsl transformation in JDev in my BPEL process. Any pointers to similar samples would help as well. Can you please help me achieve the below:
I have a source xml as below:
<calloffs>
<calloff_dt1>100520</calloff_dt1>
<calloff_qty1>20</calloff_qty1>
<calloff_dt2>100625</calloff_dt2>
<calloff_qty2>10</calloff_qty2>
<calloff_dt3>100710</calloff_dt3>
<calloff_qty3>1</calloff_qty3>
</calloffs>
I need to create a target xml as below:
<schedulelist>
<schedule>
<schqty>20 </schqty>
<schdate>100520 </schdate>
</schedule>
<schedule>
<schqty>10 </schqty>
<schdate>100625 </schdate>
</schedule>
<schedule>
<schqty>1 </schqty>
<schdate>100710 </schdate>
</schedule>
</schedulelist>

Hello Folks,
I have a similar issue. I have a particular unbounded element which i have to display multiple times ( mapping it to different source tags from the source schema) . I am able to do it in the source view and my transformation works fine when i test it. I am able to get the XML what i need. How ever when i switch to the design view, i get this error
Transformation_1.xsl
Error: This node is already mapped, repeating nodes not supported : "/mstns:OrderCreate/mstns:OrderCreateProperties/mstns:PartnerInformation/@partnerRoleIndicator"
Error: This node is already mapped, repeating nodes not supported : "/mstns:OrderCreate/mstns:OrderCreateProperties/mstns:PartnerInformation/mstns:PartnerIdentifier/@partnerIdentifierIndicator"
Is it ok to proceed and deploy with the current code? Or should i modify my source schema (which is in my control) to fetch multiple rows, use a for-each to achieve this functionality?
Thanks

Similar Messages

  • Xslt transformation - single tag to unbounded element in target schema

    I am trying xslt in JDev11g. My source has tags like soldTo, shipTo and BillTo customer details. I need to map these in the target schema <PARTIES> unbounded element in the 2nd, 4th and 5th iteration. I am unable to map multiple times into the target. Can this be done? Target example is below:
    <PARTNERS/>
    <PARTNERS>
    <PARTYTYPE>ShipTo</PARTYTYPE>
    <PARTNRNDX>BMW1702</PARTNRNDX>
    </PARTNERS>
    <PARTNERS/>
    <PARTNERS>
    <PARTYTYPE>SoldTo</PARTYTYPE>
    <PARTNRNDX>BMW2521</PARTNRNDX>
    </PARTNERS> ....
    Thanks
    Shanthi

    Hello Folks,
    I have a similar issue. I have a particular unbounded element which i have to display multiple times ( mapping it to different source tags from the source schema) . I am able to do it in the source view and my transformation works fine when i test it. I am able to get the XML what i need. How ever when i switch to the design view, i get this error
    Transformation_1.xsl
    Error: This node is already mapped, repeating nodes not supported : "/mstns:OrderCreate/mstns:OrderCreateProperties/mstns:PartnerInformation/@partnerRoleIndicator"
    Error: This node is already mapped, repeating nodes not supported : "/mstns:OrderCreate/mstns:OrderCreateProperties/mstns:PartnerInformation/mstns:PartnerIdentifier/@partnerIdentifierIndicator"
    Is it ok to proceed and deploy with the current code? Or should i modify my source schema (which is in my control) to fetch multiple rows, use a for-each to achieve this functionality?
    Thanks

  • XSLT Transformation error:  Non-canonical structure of element name

    Good day experts,
    I have recently started using xslt, and came upon the following demo in the sdn.
    http://wiki.sdn.sap.com/wiki/display/ABAP/XMLXSLTwith+ABAP
    I have retrieved the example xml files from airplus.com, as per the instructions, and implemented the code.
    When I test the xslt transformation in se80, it transforms correctly.
    However, when I run the program, I get the following error.
    CX_XSLT_FORMAT_ERROR
    Transformation error:  Non-canonical structure of element name XML_OUTPUT   
    Is there an error in the example that I am not aware of?
    Thanks in advance,
    Johan Kriek

    Found the solution.
    You rename the tag <XML_OUTPUT> to anything else like <TEST>. And Hurray!!! it works.
    It looks like SAP is using this name internally somewhere so we are getting error when we are using same name.
    Anyways the problem is solved.
    Regards,
    Jai

  • Oracle XSLT Transformation not preserving space in text element

    If we have a BPEL process which is calling a XSLT transformation contains the code similar as below:
    for Populating an element with white space only
    <tns:TargetField>
    <xsl:text disable-output-escaping="yes"> </xsl:text> <!--Note the whitespace , also tried with disable-output-escaping =”no” -->
    </tns: TargetField>
    Our expected result / output would be:
    <tns:TargetField> </tns: TargetField> <!--Note the whitespace -->
    But, we get:
    <tns:TargetField/>
    Oracle XSLT is ignoring the white space even if we try with preserve space in XSD, or in XSLT this is not producing the expected output.
    This looks a BUG with Oracle XSLT Transformation .
    For a workaround solution we can use below XSLT snippet:
    *<tns:TargetField>*
    *<xsl:value-of select="string(' ')"/> <!--Note the whitespace -->*
    *</tns:TargetField>*
    This is returning Output:
    *<tns:TargetField> </tns:TargetField> <!--Note the whitespace -->*
    Any other work around do you find?
    Edited by: panks on Jul 29, 2011 12:37 PM

    The workaround only works with one white space, if one put more white spaces, it do not work.
    <tns:TargetField>
    <xsl:value-of select="string(' ')"/> <!--Note the whitespaces -->
    </tns:TargetField>
    This is returning Output:
    <tns:TargetField> </tns:TargetField> <!--Note the only one whitespace -->
    Edited by: user10697506 on Aug 10, 2011 3:27 PM

  • How to unmarshall list tags/unbounded elements using jax-ws auto generated classes in weblogic 12c

    hi
    i have a need wherein i need to create/host jax-ws webservice ( starting from wsdl) and in that service translate the xml using xsl to a different structure and call another webservice hosted to another server ( non-weblogic).
    so my approach is as soon as request comes to the service impl, i marshal the object to a xml then apply the required xsl transformation and then unmarshal the transformed xml to the object which can be used to trigger another webservice.
    This approach works fine for the xmls without list tags/unbounded elements , however it gives marshal exception whenever the xmls has list/unbounded elements.
    i am using jaxb and jax-ws generated class for marshalling and unmarshalling.
    so need some help on how to deal in this scenario?
    any help is appreciated

    hi
    i have a need wherein i need to create/host jax-ws webservice ( starting from wsdl) and in that service translate the xml using xsl to a different structure and call another webservice hosted to another server ( non-weblogic).
    so my approach is as soon as request comes to the service impl, i marshal the object to a xml then apply the required xsl transformation and then unmarshal the transformed xml to the object which can be used to trigger another webservice.
    This approach works fine for the xmls without list tags/unbounded elements , however it gives marshal exception whenever the xmls has list/unbounded elements.
    i am using jaxb and jax-ws generated class for marshalling and unmarshalling.
    so need some help on how to deal in this scenario?
    any help is appreciated

  • 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

  • Genereting JSTL tags with an XSLT transformation question

    Hi there!
    I have some XML datas to display in a jsp file.
    XML content is of this type:
    <message>
    <title>A message</title>
    </message>
    The most elegent way to present them is to transform XML via xslt into xhtml.
    (that way I can externally change with ease the message formatting output without changing the jsp)
    For that, I use the cool tag
    <x:transform>
    on each xml file i want to display (with x:foreEach)
    The output produced for each xml file is:
    <div class="message">
    <h2>A message</h2>
    </div>
    My problem is now that I want to include custom tags in the generated content!
    For exemple:
    <div class="message">
    <h2>A message<c:out ...></h2>
    </div>
    My question is:
    how can I make that xslt generated tag to be executed???
    Since it is the product of an xslt transformation ,I suppose it won't be executed at all...
    Advices greatly appreciated! :)

    I'm not sure I understand what you mean when you say "how can I make that xslt generated tag to be executed???"
    You've got your XML input and the XSL-T stylesheet that will transform the XML input into an XHTML stream containing JSTL tags.
    I'm assuming that you're going to ask a servlet to pass the XML input to the XSL transformer and get the XHTML output stream. Once you have that, the servlet will write the XHTML to the HTTP response output stream, where it'll be rendered by the browser.
    I think the key is to make sure that you tell the browser that response type is a JSP (that's the only document type in which it makes sense to put JSTL tags). When the browser gets that JSP, it'll treat it like any other: generate .java code, compile that to a .class file, and then render.
    I'm not sure about efficiency, but it sure is an elegant solution. - MOD

  • Tags not printed when outputting XML after XSLT transformation

    Hi!
    I want my to perform an XSLT transformation on requests to my web service.
    This is the style of a typical request:
    <app:aRequest xmlns:app="http://myNamespace">
      <app:firstTag>value1</app:firstTag>
      <app:secondTag>value2</app:secondTag>
      <app:thirdTag>value3</app:thirdTag>
    </app:aRequest>I want to transform it into something like this:
    <app:aRequest xmlns:app="http://myNamespace">
      <app:firstTag>A hard coded, completely different value!</app:firstTag>
      <app:secondTag>value2</app:secondTag>
      <app:thirdTag>value3</app:thirdTag>
    </app:aRequest>To do that, I use the following XSLT:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
                    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:app="http://myNamespace">
    <xsl:template match="/">
    <app:aRequest>
      <app:firstTag>A hard coded, completely different value!</app:firstTag>
      <app:secondTag><xsl:value-of select="app:aRequest/app:secondTag" /></app:secondTag>
      <app:thirdTag><xsl:value-of select="app:aRequest/app:thirdTag" /></app:thirdTag>
    </app:aRequest>
    </xsl:template>
    </xsl:stylesheet>And I use the following code to execute the transformation:
    public Object unmarshal(Source source) throws XmlMappingException, IOException {
      TransformerFactory factory = TransformerFactory.newInstance();
        // Does this factory support SAX features?
        if(factory.getFeature(SAXSource.FEATURE)) {
          SAXTransformerFactory saxTransformerFactory = (SAXTransformerFactory)factory;
        // Read xslt file.
        InputStream inputStream = getClass().getResourceAsStream("/META-INF/xsltTransformation.xsl");
        if(inputStream == null) {
          throw new RuntimeException("No XSLT transformation file present at " + location);
        Templates xsltOutputTemplate = saxTransformerFactory.newTemplates(new StreamSource(inputStream));
        Transformer transformer = xsltTemplate.newTransformer();
        // Perform transformation.
        StringWriter stringWriter = new StringWriter();
        StreamResult result = new StreamResult(stringWriter);
        transformer.transform(source, result);
        // Print result.
        String xmlString = stringWriter.toString();
        System.out.println(xmlString);
        // Proceed with unmarshalling.
        StringReader stringReader = new StringReader(xmlString);
        StreamSource transformedSource = new StreamSource(stringReader);
        return oxMapper.getUnmarshaller().unmarshal(transformedSource);
    }However, the System.out.println(xmlString); produces the following result:
    <?xml version="1.0" encoding="UTF-8"?>
      value1
      value2
      value3The tags are not printed and the hard coded value is not present.
    What am I doing wrong? Please help!

    Following up on what the good Dr said,
    Are you sure that you are using the stylesheet that you think you are?
    I tried your stylesheet and input and got more or less what you wanted and not what you actually got.
    Note that I did not use your code.

  • UTF-8 encoding in XSLT transformation

    Hello,
    I have a problem with a transformation of an ABAP structure into XML. I use the XSLT transformation for this.
    My XSLT starts like this:
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:strip-space elements="*"/>
      <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
        <asx:values>
    I tried many settings I could find posted on the internet, but I did not find one that would allow encoding to UTF-8.
    It always encodes to iso-8859-1 which my interface partner cannot read.
    Does anyone know a way to force encoding to UTF-8?
    Adding a command like <xsl:output encoding="utf-8"/> did not help.
    Thanks a lot!
           J. Euler

    Hello!
    I think I just solved the problem taking a different approach.
    In a note here on SDN, a guy from SAP wrote, that the SAP XSLT processor is not able to code anything but the system's default to a string, BUT that it is able to code it to an xstring.
    All I did now is add the tag  
    <xsl:output encoding="utf-8" indent="yes" method="xml"/>
    to my xslt program and change the coding in the program accordingly.
    The program code is now:
      DATA: tempxstring TYPE xstring,
            temp_length TYPE i,
            conv      TYPE REF TO cl_abap_conv_in_ce.
      CLEAR tempxstring.
      TRY.
          CALL TRANSFORMATION
              zxxje_tst_xslt
            SOURCE omsregdatawebservice = wa_data
            RESULT XML tempxstring.
        CATCH cx_sy_conversion_base64.
        CATCH cx_sy_conv_illegal_date_time.
      ENDTRY.
      IF tempxstring IS NOT INITIAL.
        CLEAR: conv, temp_length, string_xml_result.
        conv = cl_abap_conv_in_ce=>create( input = tempxstring ).
        conv->read( IMPORTING data = string_xml_result len = temp_length ).
      ENDIF.
    Thanks anyways for all your help!
    regards,
          Johannes Euler

  • Xslt transformation to list

    Hi,
    i have a query that returns 4 telephone numbers, and i want to map the result to a list using xsl transform in mediator.
    Source
    <xs:element name="telefoneDeContato1" type="xs:string/>
    <xs:element name="telefoneDeContato2" type="xs:string/>
    <xs:element name="telefoneComercial" type="xs:string/>
    <xs:element name="telefoneFax" type="xs:string/>
    Target
    <xs:element name="PhoneContact" type="TelephoneNumber" maxOccurs="unbounded"/>
    <xs:complexType name="TelephoneNumber">
    <xs:sequence>
    <xs:element name="number" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    Example:
    Source
    <telefoneDeContato1>1111111111<telefoneDeContato1/>
    <telefoneDeContato2>2222222222<telefoneDeContato2/>
    <telefoneComercial>333333333<telefoneComercial/>
    <telefoneFax>44444444444<telefoneFax>
    Target:
    <PhoneContact>
    <number>1111111111<number/>
    <number>2222222222<number/>
    <number>333333333<number/>
    <number>44444444444<number/>
    <PhoneContact/>
    Here is my code, i coul not map this, any help
    <xsl:for-each select="/top:VSittelCustomerBaseCollection/top:VSittelCustomerBase">
    <CustomerAccount>
    <CustomerAccountContact>
    <PhoneContact>
    <number>
    <xsl:value-of select="top:telefoneDeContato1"/>
    </number>
    </PhoneContact>
    </CustomerAccountContact>
    </CustomerAccount>
    </xsl:for-each>

    Hello,
    To make this work you need to adjust the following:
    give your source schema at least a root tag e.g Numbers and group the underlying elements in a complexType and a sequence:
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xs:element name="Numbers">
             <xs:complexType>
                 <xs:sequence>
                     <xs:element name="telefoneDeContato1" type="xs:string"/>
                     <xs:element name="telefoneDeContato2" type="xs:string"/>
                     <xs:element name="telefoneComercial" type="xs:string"/>
                     <xs:element name="telefoneFax" type="xs:string"/>
                 </xs:sequence>
             </xs:complexType>
         </xs:element>
    </xs:schema>
    correct your input xml to (pay attention to the closing tags) :
                   <Numbers>
                        <telefoneDeContato1>1111111111</telefoneDeContato1>
                        <telefoneDeContato2>2222222222</telefoneDeContato2>
                        <telefoneComercial>333333333</telefoneComercial>
                        <telefoneFax>44444444444</telefoneFax>
                   </Numbers>
    After this you can use the following transformation to create the output:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:template match="/">
             <PhoneContact>
                 <xsl:apply-templates select="*[local-name() = 'TelefoneNumbers']/*"/>
             </PhoneContact>
         </xsl:template>
         <xsl:template match="*[local-name() = 'telefoneDeContato1']|
                              *[local-name() = 'telefoneDeContato2']|
                              *[local-name() = 'telefoneComercial']|
                              *[local-name() = 'telefoneFax']">
           <number>
             <xsl:value-of select="."/>
           </number>
         </xsl:template>
         <xsl:template match="@*|node()">
             <xsl:copy>
                 <xsl:apply-templates select="@*|node()"/>
             </xsl:copy>
         </xsl:template>
    </xsl:stylesheet>
    Good luck!
    Melvin

  • Start to learn XSLT transformation

    Hi,
    i started to learn XSLT transformation, but i get the first problems very soon.
    Here is my coding :
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
      <xsl:strip-space elements="*"/>
      <xsl:template match="/">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <EXPORT>
              <xsl:for-each select="BUT000">
                <BUT000>
                  <PARTNER>
                    <xsl:value-of select="PARTNER"/>
                  </PARTNER>
                </BUT000>
              </xsl:for-each>
            </EXPORT>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    My problem is, that the transformation exit on the tag "for-each" and do nothing.
    My source is a internal table from type BUT000.
    In the internal table are two entries.
    Where is my fault?
    Regards,
    Anton

    Check those tutorials:
    XSLT Tutorial - http://www.w3schools.com/xsl/
    XPath Tutorial - http://www.w3schools.com/xpath/
    XQuery Tutorial - http://www.w3schools.com/xquery/default.asp
    Regards.
    Liang

  • Automatic insert of xmlns:xsl during XSLT transformation

    I am using the xmlparserv2.jar of dated "12/10/00" to perform a XSLT transformation. I need to insert a xml:space="preserve" attribute to a generated tag. However, there is an addition attribute added : xmlns:xml="http://www.w3/org/XML/1998/namespace". How can I suppress the generation of this attribute ?
    Here is my XML :
    <?xml version = '1.0' standalone = 'no'?>
    <COLDdoc>
    <Page template="bkgnd1" num="1">
    <Line num="1"> CN011A021C 1A021</Line>
    <Line num="2"> 1954.90 7713.36</Line>
    </Page>
    </COLDdoc>
    My XSL is :
    <?xml version = '1.0' standalone = 'yes'?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="no" doctype-system="svg-20000303-stylable.dtd"/>
    <xsl:template match="Line">
    <text>
    <xsl:attribute name="x">0</xsl:attribute>
    <xsl:attribute name="y">
    <xsl:value-of select="@num*10"/>
    </xsl:attribute>
    <xsl:attribute name="xml:space">preserve</xsl:attribute>
    <xsl:value-of select="."/>
    </text>
    </xsl:template>
    </xsl:stylesheet>
    The result XSLT Transformation :
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <!DOCTYPE text SYSTEM "svg-20000303-stylable.dtd">
    <text x="0" y="10" xmlns:xml="http://www.w3/org/XML/1998/namespace" xml:space="preserve"> CN011A021C 1A021</text>
    <text x="0" y="20" xmlns:xml="http://www.w3/org/XML/1998/namespace" xml:space="preserve"> "> 1954.90 7713.36</text>
    Regards.
    Jeffrey
    null

    Hi Greg,
    please try it with the following (just slightly) modified transformation (works fine for me):
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                   xmlns:asx="http://www.sap.com/abapxml"
                   xmlns:sap="http://www.sap.com/sapxsl"
                   version="1.0">
      <xsl:strip-space elements="*"/>
      <xsl:template match="/PEXR2002/IDOC">
        <asx:abap version="1.0">
          <asx:values>
            <HEADER_DATA>
              <SNDPRN>
                <xsl:value-of select="EDI_DC40/SNDPRN"/>
              </SNDPRN>
              <BGMREF>
                <xsl:value-of select="E1IDKU1/BGMREF"/>
              </BGMREF>
              <MOABETR>
                <xsl:value-of select="E1IDKU5/MOABETR"/>
              </MOABETR>
              <CREDAT>
                <xsl:value-of select="EDI_DC40/CREDAT"/>
              </CREDAT>
              <DATUM>
                <xsl:value-of select="E1EDK03/DATUM"/>
              </DATUM>
            </HEADER_DATA>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    I recommend to test all transformations that you define on a sample source and check the output. If you apply your original transformation you would see that it basically doesn't select anything and therefore you just get an XML document with the field names but no values.
    Cheers, harald

  • XSLT transformation help

    Hi ,
    Source data :-
    <root xmlns="http://TargetNamespace.com/">
    <header>
            <C2> </C2>
             <C3></C3>
            <C4></C4>
            <C5></C5>
    </header>
    <body>
        <a></a>
        <b></b>
    </body>
    <body>
        <a></a>
        <b></b>
    </body>
    <body>
        <a></a>
        <b></b>
    </body>
    <header>
            <C2> </C2>
             <C3></C3>
            <C4></C4>
            <C5></C5>
    </header>
    <body>
        <a></a>
        <b></b>
    </body>
    <body>
        <a></a>
        <b></b>
    </body>
    the above input needs to be transformed to
    <Root>
         <child>
                <header>  ..... </header>
                 <body>   ..  </body>
                 <body>   ..  </body>
                 <body>   ..  </body>
         </child>
         <child>
             <header>.......</header>
              <body>........</body>
               <body>........</body>
          </child>
    </Root>
    (... ) here are the actual elements I jus represented them as ( .... )
    can some one tell me how can we write xslt for the above transformation ..

    You need to create a target schema with below heirarchy.
    Root
         Child(unbounded)
                body.(unbounded)
    In .xsl file from source to target,
    use mapping this way:
    <Root>
    for each on <Child>
      for each on < body>
    thanks

  • Problem getting xslt transform to work

    I have the following ABAP Xslt  transformation
    <xsl:transform
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:sap="http://www.sap.com/sapxsl" version="1.0"
    >
    <xsl:strip-space elements="*"/>
         <xsl:template match="/">
              <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
                   <asx:values>
                        <ALLIR_REIKNINGAR>
                             <xsl:apply-templates select="//Invoice"/>   
                        </ALLIR_REIKNINGAR>
                   </asx:values>
              </asx:abap>
         </xsl:template>
        <xsl:template match="Invoice">
        <REIKNINGUR>
            <REIKN_NUMER>
                <xsl:value-of select="cbc:ID"/>           
            </REIKN_NUMER>
            <REIKN_AFRIT>
                <xsl:value-of select="cbc:CopyIndicator"/>
            </REIKN_AFRIT>
            <REIKN_UTGAFUDAGS>
                <xsl:value-of select="cbc:IssueDate"/>
            </REIKN_UTGAFUDAGS>
            <REIKN_MYNT>
                <xsl:value-of select="cbc:DocumentCurrencyCode"/>
            </REIKN_MYNT>
            <REIKN_TIMABIL_FRA>
                <xsl:value-of select="cac:InvoicePeriod/cbc:StartDate"/>
            </REIKN_TIMABIL_FRA>
            <REIKN_TIMABIL_TIL>
                <xsl:value-of select="cac:InvoicePeriod/cbc:EndDate"/>
            </REIKN_TIMABIL_TIL>
        </REIKNINGUR>
        </xsl:template>
    </xsl:transform>
    And the following XML input file
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="vodafone_xslt_namespace.xslt"?>
    <Invoice
    xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
    xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
    xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
    xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2"
    xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ccts="urn:un:unece:uncefact:documentation:2"
    xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
    xmlns:clm5639="urn:un:unece:uncefact:codelist:specification:5639:1988"
    xmlns:clm54217="urn:un:unece:uncefact:codelist:specification:54217:2001"
    xmlns:clm66411="urn:un:unece:uncefact:codelist:specification:66411:2001"
    xmlns:clmIANAMIMEMediaType="urn:un:unece:uncefact:codelist:specification:IANAMIMEMediaType:2003"
    >
         <cbc:UBLVersionID>2.0</cbc:UBLVersionID>
         <cbc:CustomizationID>NES</cbc:CustomizationID>
         <cbc:ProfileID schemeID="Profile"
         schemeAgencyID="NES">urn:www.nesubl.eu:profiles:profile4:ver1.1</cbc:ProfileID>
         <cbc:ID>PB1554421</cbc:ID>
         <cbc:CopyIndicator>false</cbc:CopyIndicator>
         <cbc:IssueDate>2011-12-31</cbc:IssueDate>
         <cbc:InvoiceTypeCode listID="UN/ECE 1001 Restricted" listAgencyID="NES">380</cbc:InvoiceTypeCode>
         <cbc:Note languageID="IS">Company name</cbc:Note>
         <cbc:DocumentCurrencyCode listID="ISO 4217 Alpha">ISK</cbc:DocumentCurrencyCode>
         <cbc:AccountingCost>2001523</cbc:AccountingCost>
         <cac:InvoicePeriod>
              <cbc:StartDate>2011-12-01</cbc:StartDate>
              <cbc:EndDate>2011-12-31</cbc:EndDate>
         </cac:InvoicePeriod>
    </Invoice>
    My problem is that this transformation does not work unless I completly strip out the namespace parts i.e. cbc:
    How can I get the parser to read the tags with namespace part. And if the parser can not handle namespace in XML how can I go about reding the data into sap ?

    I think you are trying convert the xml to an internal table because of // in apply-templates, then you need to change last XSLT program and include <item> tag inside the <xsl:template match="inv:Invoice">  template, see updated XSLT bellow.
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:inv="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
    xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
    xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
    xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2"
    xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ccts="urn:un:unece:uncefact:documentation:2"
    xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
    xmlns:clm5639="urn:un:unece:uncefact:codelist:specification:5639:1988"
    xmlns:clm54217="urn:un:unece:uncefact:codelist:specification:54217:2001"
    xmlns:clm66411="urn:un:unece:uncefact:codelist:specification:66411:2001"
    xmlns:clmIANAMIMEMediaType="urn:un:unece:uncefact:codelist:specification:IANAMIMEMediaType:2003"
    xmlns:sapxsl="http://www.sap.com/sapxsl"
    version="1.0">
      <xsl:strip-space elements="*"/>
      <xsl:strip-space elements="*"/>
      <xsl:template match="/">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <ALLIR_REIKNINGAR>
              <xsl:apply-templates select="//inv:Invoice"/>
            </ALLIR_REIKNINGAR>
          </asx:values>
        </asx:abap>
      </xsl:template>
      <xsl:template match="inv:Invoice">
        <item>
        <REIKNINGUR>
          <REIKN_NUMER>
            <xsl:value-of select="cbc:ID"/>
          </REIKN_NUMER>
          <REIKN_AFRIT>
            <xsl:value-of select="cbc:CopyIndicator"/>
          </REIKN_AFRIT>
          <REIKN_UTGAFUDAGS>
            <xsl:value-of select="cbc:IssueDate"/>
          </REIKN_UTGAFUDAGS>
          <REIKN_MYNT>
            <xsl:value-of select="cbc:DocumentCurrencyCode"/>
          </REIKN_MYNT>
          <REIKN_TIMABIL_FRA>
            <xsl:value-of select="cac:InvoicePeriod/cbc:StartDate"/>
          </REIKN_TIMABIL_FRA>
          <REIKN_TIMABIL_TIL>
            <xsl:value-of select="cac:InvoicePeriod/cbc:EndDate"/>
          </REIKN_TIMABIL_TIL>
        </REIKNINGUR>
       </item>
      </xsl:template>
    </xsl:transform>
    According to the XSLT program you need dclare an itab like this:
    DATA: BEGIN OF ls_reikningur,
          reikn_numer(10) TYPE c,
          END OF ls_reikningur.
    DATA: BEGIN OF ls_invoice,
          reikningur LIKE ls_reikningur,
          END OF ls_invoice.
    DATA: lt_invoice LIKE TABLE OF ls_invoice.
    And finally you need a call transformation in your abap code like this:
    DATA: root_error TYPE REF TO cx_root.
    DATA: lv_mess TYPE string.
    TRY.
        CALL TRANSFORMATION  zinvoice
           SOURCE XML lv_xml
           RESULT allir_reikningar = lt_invoice.
      CATCH cx_root INTO root_error.
        lv_mess = root_error->if_message~get_text( ).
        WRITE lv_mess.
    ENDTRY.

  • Error in ABAP XSLT transformation

    Hi,
    Im trying to upload some data from XML to abap. But Im getting an error while transforming xml data to internal table.
    Here are the details.
    XML:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
      <!--  Edited by XMLSpy® -->
    <?xml-stylesheet type="text/xsl" href="ABAP1.xsl"?>
    <conceptRevDecisionXml>
    <projectInfo>
    <projectId>P000755</projectId>
    <stage>CON</stage>
    <country>Ethiopia</country>
    <region>AFRICA</region>
    <teamleader>Priya Agarwal</teamleader>
    <teamleaderfirstname>Priya</teamleaderfirstname>
    <teamleaderlastname>Agarwal</teamleaderlastname>
    <actionType>X</actionType>
    </projectInfo>
    </conceptRevDecisionXml>
    XSLT: Transformation
    <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:strip-space>
    <xsl:template match="/">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <PROJID>
              <xsl:apply-templates select="//conceptRevDecisionXml"></xsl:apply-templates>
            </PROJID>
          </asx:values>
        </asx:abap>
    </xsl:template>
    <xsl:template match="conceptRevDecisionXml">
          <xsl:for-each select="projectInfo">
           <xsl:value-of select="projectId"></xsl:value-of>
           <xsl:value-of select="stage"></xsl:value-of>
           <xsl:value-of select="country "></xsl:value-of>
           <xsl:value-of select="region"></xsl:value-of>
           <xsl:value-of select="teamleader"></xsl:value-of>
           <xsl:value-of select="teamleaderfirstname"></xsl:value-of>
           <xsl:value-of select="teamleaderlastname"></xsl:value-of>
            <xsl:value-of select="actionType"></xsl:value-of>
            </xsl:for-each>
        </xsl:template>
    </xsl:transform>
    Once I run the program...Im getting an error saying...ABAP XML Formatting error in XML node..
    Im new to ABAP-XML parsing..Pls help me where Im going wrong..
    Thanks in advance.
    Regards,
    Priya

    Hi Priya,
    you can try with the below,
    1) Create a local ITAB with the structure of the XML,
    TYPES: BEGIN OF t_data,
            projectid           TYPE char30,
            stage               TYPE char30,
            country             TYPE char30,
            region              TYPE char30,
            teamleader          TYPE char30,
            teamleaderfirstname TYPE char30,
            teamleaderlastname  TYPE char30,
            actiontype          TYPE char30,
           END OF t_data.
    2) Create an XSLT prog in "STRANS" with the below code,
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
    <xsl:strip-space elements="*"/>
    <xsl:template match="/">
    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    <asx:values>
    <L_DATA>
    <xsl:apply-templates select="//projectInfo"/>
    </L_DATA>
    </asx:values>
    </asx:abap>
    </xsl:template>
    <xsl:template match="projectInfo">
    <conceptRevDecisionXml>
    <PROJECTID>
    <xsl:value-of select="projectId"/>
    </PROJECTID>
    <STAGE>
    <xsl:value-of select="stage"/>
    </STAGE>
    <COUNTRY>
    <xsl:value-of select="country"/>
    </COUNTRY>
    <REGION>
    <xsl:value-of select="region"/>
    </REGION>
    <TEAMLEADER>
    <xsl:value-of select="teamleader"/>
    </TEAMLEADER>
    <TEAMLEADERFIRSTNAME>
    <xsl:value-of select="teamleaderfirstname"/>
    </TEAMLEADERFIRSTNAME>
    <TEAMLEADERLASTNAME>
    <xsl:value-of select="teamleaderlastname"/>
    </TEAMLEADERLASTNAME>
    <ACTIONTYPE>
    <xsl:value-of select="actionType"/>
    </ACTIONTYPE>
    </conceptRevDecisionXml>
    </xsl:template>
    </xsl:transform>
    3) Call the transformation as shown below,
    CALL TRANSFORMATION zxslt_project ---> "Name of the XSLT prog created above
    SOURCE XML l_xml_str                           ---> Source XML string
    RESULT l_data = l_data.                          ---> ITAB as in step 1 above
    Regards,
    Chen

Maybe you are looking for

  • Reports Server - dynamic reconfiguration needed for long-running reports

    We have a need to permit users to submit large reports via scheduler from the hours of 8 pm to 2 am. These reports currently fail due to the daytime configuration limits on the row count and the elapsed time. I guess effectively we need to stop, chan

  • HP Laserjet ProP1102 will not connect with my MacBook Pro

    My new Macbook Pro with Yosemite will not print on this printer. It did do so a few days ago but not anymore. In wireless mode it will not communicate with the printer (or the printer will not communicate with it.) When connected with a wire the prin

  • Pro*c errors in 11g. -- Compiles fine in 10g.

    Hi, We are planning to migrate from 10g to 11g so started compiling our Pro*c code in to 11g. Got several errors and couldn't trace. So to investigate further I have written a basic pro*c program as follows: #include <stdio.h> #include <sqlca.h> /*#i

  • Payment method not permitted

    while performing automatic payment transaction, there's a message in the payment run log "payment method "S" not permitted for the vendor". I have double checked these points : the payment methods in the payment transaction accounting tab of the     

  • Sample results to one inspection lot

    Hi, Please confirm if the following is possible: Record result for samples say 5 samples by today and then assign those sample result to one inspection lots after one week. It yes then how ? Regards