Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

XSLT/XML debug

0 Kudos

Hi,

Using XSLT_TOOL to debug XSLT/XML processing, I cant figure out why the node <LOB><VALUE) wont get any data from the XML doc. I'm able to populate data into the <detail> node.

<?xml version="1.0" encoding="UTF-8"?>
<measure xmlns="http://xxxxx.xxxxxx.com/types">
  <quality realtime="1" bad="0"/>
  <ts>2014-11-24T15:18:09.533000+01:00</ts>
  <pbs  native="my-native-code">My Native Code</pbs>
  <sign code="JB" prog="05"/>
  <sender>Test</sender>
  <lob>
    <detail samp="120000" unit="Km" min="0" max="999999"/>
    <value>11.000000</value>
    <value>12.000000</value>
    <value>13.000000</value>
    <value>14.000000</value>
    <value>15.500000</value>
    <value>16.000000</value>
    <value>17.000000</value>
    <value>20.000000</value>
    <value>21.000000</value>
    <value>22.000000</value>
  </lob>
</measure>

XSLT schema looks like this:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:zz="http://commons.ansaldo-sts.com/types" version="1.0">
  <xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/">
    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
      <asx:values>
        <IMEASURE>
          <xsl:apply-templates select="/zz:measure"/>
        </IMEASURE>
      </asx:values>
    </asx:abap>
  </xsl:template>

  <xsl:template match="/zz:measure">
    <item>
      <QUALITY_BAD>
        <xsl:value-of select="zz:quality/@bad"/>
      </QUALITY_BAD>
      <QUALITY_REALTIME>
        <xsl:value-of select="zz:quality/@realtime"/>
      </QUALITY_REALTIME>
      <TS>
        <xsl:value-of select="zz:ts"/>
      </TS>
      <NATIVE>
        <xsl:value-of select="zz:pbs/@native"/>
      </NATIVE>
      <AREA>
        <xsl:value-of select="zz:pbs/@a1"/>
      </AREA>
      <LOCATION_A2>
        <xsl:value-of select="zz:pbs/@a2"/>
      </LOCATION_A2>
      <LOCATION_A3>
        <xsl:value-of select="zz:pbs/@a3"/>
      </LOCATION_A3>
      <LOCATION_A4>
        <xsl:value-of select="zz:pbs/@a4"/>
      </LOCATION_A4>
      <SYSTEM_T>
        <xsl:value-of select="zz:pbs/@t"/>
      </SYSTEM_T>
      <SYSTEM_S>
        <xsl:value-of select="zz:pbs/@s"/>
      </SYSTEM_S>
      <FUNCTION>
        <xsl:value-of select="zz:pbs/@r"/>
      </FUNCTION>
      <SIGN_PROG>
        <xsl:value-of select="zz:sign/@prog"/>
      </SIGN_PROG>
      <SIGN_CODE>
        <xsl:value-of select="zz:sign/@code"/>
      </SIGN_CODE>
      <SENDER>
        <xsl:value-of select="zz:sender"/>
      </SENDER>
      <MOBILE_TID>
        <xsl:value-of select="zz:mobile/@tid"/>
      </MOBILE_TID>
      <MOBILE_CB>
        <xsl:value-of select="zz:mobile/@cb"/>
      </MOBILE_CB>
      <MOBILE_DID>
        <xsl:value-of select="zz:mobile/@did"/>
      </MOBILE_DID>
      <PROP_AUTOGEN>
        <xsl:value-of select="zz:property/@autogen"/>
      </PROP_AUTOGEN>
      <PROP_INTERNAL>
        <xsl:value-of select="zz:property/@internal"/>
      </PROP_INTERNAL>
      <PROP_PRIO>
        <xsl:value-of select="zz:property/@prio"/>
      </PROP_PRIO>

      <LOB>
        <xsl:for-each select="zz:lob">
          <item>

            <DETAIL>
              <xsl:for-each select="zz:detail">
                <item>
                  <OFS>
                    <xsl:value-of select="@ofs"/>
                  </OFS>
                  <SAMP>
                    <xsl:value-of select="@samp"/>
                  </SAMP>
                  <UNIT>
                    <xsl:value-of select="@unit"/>
                  </UNIT>
                  <MIN>
                    <xsl:value-of select="@min"/>
                  </MIN>
                  <MAX>
                    <xsl:value-of select="@max"/>
                  </MAX>
                </item>
              </xsl:for-each>
            </DETAIL>

            <SIGN>
              <xsl:for-each select="zz:sign">
                <item>
                  <NAME>
                    <xsl:for-each select="zz:name">
                      <item>
                        <LANG>
                          <xsl:value-of select="@lang"/>
                        </LANG>
                        <VALUE>
                          <xsl:value-of select="@value"/>
                        </VALUE>
                      </item>
                    </xsl:for-each>
                  </NAME>
                </item>
              </xsl:for-each>
            </SIGN>

            <PBS>
              <xsl:for-each select="zz:pbs">
                <item>
                  <NAME>
                    <xsl:for-each select="zz:name">
                      <item>
                        <LANG>
                          <xsl:value-of select="@lang"/>
                        </LANG>
                        <VALUE>
                          <xsl:value-of select="@value"/>
                        </VALUE>
                      </item>
                    </xsl:for-each>
                  </NAME>
                </item>
              </xsl:for-each>
            </PBS>

            <BP>
              <xsl:for-each select="zz:bp">
                <item>
                  <VALUE>
                    <xsl:value-of select="zz:bp"/>
                  </VALUE>
                </item>
              </xsl:for-each>
            </BP>

           <VALUE>
              <xsl:for-each select="zz:value">
                <item>
                  <VALUE>
                    <xsl:value-of select="zz:value"/>
                  </VALUE>
                </item>
              </xsl:for-each>
           </VALUE>
          </item>
        </xsl:for-each>

      </LOB>
    </item>
  </xsl:template>
</xsl:transform>

I tried to remove the for-each indside <VALUE> but then I only get the first value populated.

<value>11.000000</value>

It is only the <VALUE> node I cant get populated, rest is working correct.

3 REPLIES 3

0 Kudos

The result I recieve regarding VALUES are the following:

 <VALUES>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
   <item>¶
     <VALUE></VALUE>¶
   </item>¶
 </VALUES>¶<br>

Pretty much empty !!

0 Kudos

Please "Convert into Comment" your "answer", under your original question / Or delete it and add it again using "Comment on this question".

Sandra_Rossi
Active Contributor
0 Kudos

Delete the 2 lines mentioned below :

            <VALUE> <!-- delete this line -->
              <xsl:for-each select="zz:value">
                <item>
                  <VALUE>
                    <xsl:value-of select="zz:value"/>
                  </VALUE>
                </item>
              </xsl:for-each>
           </VALUE> <!-- delete this line -->

PS: Simple Transformation is recommend when it's about converting XML to ABAP variables (or vice versa), because it's approximatively ten times faster.