DBMS_XMLGEN, Carriage Returns XSLT to HTML

Hi,
I am facing an issue using the DBMS_XMLGEN. I have written a function (see under) that receive A SYS_REFCURSOR and return as a CLOB the XML with eventually transformed using a CLOB containing the passed XSLT code.
The goal is to reuse several time this functions being called by other function/procedure (see under a sample of one of my procedure) of my package. Those procure/function being called by the front-end (Cold fusion) to retrieve and output the results. My purpose is to make independent of the front end solution the output generation. Any language that can call an Oracle Procedure/Function would be able to process the result with or without a XSLT.
The issue is the CRLF (chr(10)+chr(13) seems to be lost in the process of the varchar2/clob data type used to generate the XML.
A solution, is to modify the select statement and adding when necessary select ... replace(thefield,chr(10),'<br/>') thefield ... but this would request a post processing which I am trying to avoid.
FUNCTION GEN_SYSTEM_GENEXML(
    INQUERYSTRING IN SYS_REFCURSOR,
    inStartRow    IN NUMBER,
    inMaxRows     IN NUMBER,
    inXsltString  IN CLOB)
  RETURN CLOB
AS
  LHTMLOUTPUT XMLTYPE;
  xmlResult CLOB;
  CTX DBMS_XMLGEN.CTXHANDLE;
  lXMLData XMLType;
BEGIN
  CTX := DBMS_XMLGEN.NEWCONTEXT(INQUERYSTRING);
  dbms_xmlgen.setNullHandling(ctx, 2);
  dbms_xmlgen.setIndentationWidth(ctx, 0);
  dbms_xmlgen.setRowSetTag(ctx, 'ROOT');
  dbms_xmlgen.setRowTag(ctx, 'item');
  dbms_xmlgen.setskiprows(ctx,inStartRow);
  DBMS_XMLGEN.SETMAXROWS(CTX,INMAXROWS);
  IF LENGTH(INXSLTSTRING) <> 0 AND INXSLTSTRING <>'[none]' THEN
    LXMLDATA              := DBMS_XMLGEN.GETXMLTYPE(CTX,DBMS_XMLGEN.NONE);
    LHTMLOUTPUT           :=LXMLDATA.TRANSFORM(XMLTYPE(INXSLTSTRING));
  ELSE
    xmlResult := dbms_xmlgen.getxml(ctx);
  END IF;
  DBMS_XMLGEN.CLOSECONTEXT(CTX);
  IF LENGTH(INXSLTSTRING) <> 0 AND INXSLTSTRING <>'[none]' THEN
    RETURN LHTMLOUTPUT.GETCLOBVAL();
  ELSE
    RETURN XMLRESULT;
  END IF;
END gen_system_genexml;
PROCEDURE PRC_GET_CF_CNS(
    inadonis IN NUMBER,
    inyear   IN NUMBER,
    INXSLT   IN CLOB,
    OUTRETURNED OUT CLOB)
IS
  C1 SYS_REFCURSOR;
BEGIN
  CASE INYEAR
  WHEN 2008 THEN
    OPEN C1 FOR SELECT ADONIS,
    CRIT_AA_MARKS,
    CRIT_AA_COMMENTS
  END CASE;
  OUTRETURNED :=GEN_SYSTEM_GENEXML(C1,0,10000,INXSLT);
END PRC_GET_CF_CNS;

(I mix my accounts, I posted with an outdated email)
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
"CORE     10.2.0.1.0     Production"
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - ProductionIf I run without XLST I get (DBMSOUTPUT in SQLDevelopper) the CR/LF
DECLARE
  INADONIS NUMBER;
  INYEAR NUMBER;
  INXSLT CLOB;
  OUTRETURNED CLOB;
BEGIN
  INADONIS := 100858;
  INYEAR := 2010;
  INXSLT := '[none]';
  PKG_GENERAL.PRC_GET_CF_CNS(
    INADONIS => INADONIS,
    INYEAR => INYEAR,
    INXSLT => INXSLT,
    OUTRETURNED => OUTRETURNED
  DBMS_OUTPUT.PUT_LINE('OUTRETURNED = ' || OUTRETURNED);
END;if I replace the '[none]' by the xslt string it looks, still in the dbms_output, being there...
if I
DBMS_OUTPUT.PUT_LINE('OUTRETURNED = ' || replace(OUTRETURNED,chr(10),'<br/>'));the result is broken...
For the moment, I do this to avoid post-processing Cold Fusion
FUNCTION GEN_SYSTEM_GENEXML(
    INQUERYSTRING IN SYS_REFCURSOR,
    inStartRow    IN NUMBER,
    inMaxRows     IN NUMBER,
    inXsltString  IN CLOB)
  RETURN CLOB
AS
  LHTMLOUTPUT XMLTYPE;
  xmlResult CLOB;
  CTX DBMS_XMLGEN.CTXHANDLE;
  lXMLData XMLType;
BEGIN
  CTX := DBMS_XMLGEN.NEWCONTEXT(INQUERYSTRING);
  dbms_xmlgen.setNullHandling(ctx, 2);
  dbms_xmlgen.setIndentationWidth(ctx, 0);
  dbms_xmlgen.setRowSetTag(ctx, 'ROOT');
  dbms_xmlgen.setRowTag(ctx, 'item');
  dbms_xmlgen.setskiprows(ctx,inStartRow);
  DBMS_XMLGEN.SETMAXROWS(CTX,INMAXROWS);
  dbms_xmlgen.setConvertSpecialChars(ctx, TRUE);
  IF LENGTH(INXSLTSTRING) <> 0 AND INXSLTSTRING <>'[none]' THEN
    LXMLDATA              := DBMS_XMLGEN.GETXMLTYPE(CTX,DBMS_XMLGEN.NONE);
    LHTMLOUTPUT           :=LXMLDATA.TRANSFORM(XMLTYPE(INXSLTSTRING));
  ELSE
    xmlResult := dbms_xmlgen.getxml(ctx);
  END IF;
  DBMS_XMLGEN.CLOSECONTEXT(CTX);
  IF LENGTH(INXSLTSTRING) <> 0 AND INXSLTSTRING <>'[none]' THEN
    RETURN replace(LHTMLOUTPUT.GETCLOBVAL(),'& l t ; br/ & g t ;','<br/>');
  ELSE
    RETURN XMLRESULT;
  END IF;
END gen_system_genexml;& l t ; br/ & g t ; without the extract spaces
Edited by: user4882594 on Jan 20, 2011 7:06 AM
Edited by: user4882594 on Jan 20, 2011 7:06 AM

Similar Messages

  • Carriage return  in a HTML AREA

    i have an HTML where i have put some line of text.
    But in the BOX of creation AREA i vie the line feed (carriage return =, but whe i see it on running it write all without carriage return .
    There ia way to soove this problem ??
    Thank's !

    ok, work very well !!
    Thank's'!

  • Outputting XML carriage return in HTML via XSLT

    Hi,
    I have a scenario where I execute a View Object query in ADF to retrieve results from a particular table in the Database. I then iterate through the results in my Java managed bean and manually construct an XML file with all the appropriate tags. I then pass the XML file through a Transformer class in the Java bean based on an XSLT I have created to produce an HTML page. However I have an issue when it comes to handling carriage returns. One of the database table columns can contain carriage returns within its value but in the final HTML page the carriage returns don't have any effect and the text just displays on one line.
    In the database, the values are stored with the carriage return and in SQL Developer, Toad etc this can be seen e.g. Text1 Text2 Text3 Text4 will display on separate lines. In the XML, the carriage return seems to still be there as when I open the file my element which contains the carriage returns shows each part on a new line e.g. <textElement>Text1
                                                           Text2
                                                           Text3
                                                           Text4</textElement>     (The Text2, Text3 and Text4 all start on a new line at the beginning and there's no prior white space as shown in this post)
    The XML file in JDeveloper also shows carriage return arrow symbols where there is one.
    The HTML page just shows them as Text1 Text2 Text3 Text4 all on one line. Inspecting the source of the HTML shows that the carriage return is in fact there as it also displays as per the XML with the values on separate lines.
    Outputting the value from the View Object in Java to the log shows the value coming out like this - Text1 Text2Text3Text4, which is strange but I know the carriage returns are there so I'm not too fussed about this.
    I have tried escaping the characters in the Java by doing str.replaceAll("[\\r\\n]", ""); (but replacing the "" with &#xD; &#xA; or &x0A;) so in the XML it replaces carriage returns and line feeds with these escaped characters. However, when the XSLT parses the XML it doesn't pick these up and instead actually outputs these actual characters as they are e.g. Text1&x0A;Text2&x0A;Text3&x0A;Text4
    So I can confirm that the carriage return is carrying all the way through to the XSL but I can't help but think that maybe I need to do something in the XSL to process this somehow, e.g. doing the equivalent of the 'replace' in Java but I don't know what I need to search for in the XML and also what to actually replace it with..Do I just replace it with a </BR> in HTML?
    We also parse the XML using PDF and Excel XSL Transformer class and see the same results.
    Any help would be appreciated.
    Thanks

    That's a very commonly asked question.
    HTML doesn't preserve linefeeds, except for the <pre> tag.
    You'll have to replace those characters with <BR/> tags in the XSLT.
    Search the Internet for terms like "XSLT HTML LF", you'll find some XSLT sample templates to handle the replacement.

  • Converting carriage return in HTML spool

    I've written an sql for spooling the result of a Select in HTML format by using "set markup html on spool on head".
    The problem is that when I open the HTML file I no longer find the carriage returns. I mean the carriage returns that were in CLOB field of the table now miss. Could you help me?
    This is the script:
    set pagesize 10000
    set scan off
    set markup html on spool on head ' - '
    column text heading "TEXT"
    spool c:\temp\report.html
    select dbms_lob.substr (t.field, 5000, 1)     text
    from table t;
    spool off;
    exit;
    The "field" contains a long text with carriage returns that aren't in the report.html anymore

    user12180597 wrote:
    I've written an sql for spooling the result of a Select in HTML format by using "set markup html on spool on head".
    The problem is that when I open the HTML file I no longer find the carriage returns. I mean the carriage returns that were in CLOB field of the table now miss. Could you help me?
    This is the script:
    set pagesize 10000
    set scan off
    set markup html on spool on head ' - '
    column text heading "TEXT"
    spool c:\temp\report.html
    select dbms_lob.substr (t.field, 5000, 1)     text
    from table t;
    spool off;
    exit;
    The "field" contains a long text with carriage returns that aren't in the report.html anymoreset preformat to ON:
    set markup html on spool on head ' - ' PRE ON

  • - How do you refer to an HTML carriage return in PHP?

    Someone sent me a php script that replaces foul language with
    kinder words
    in message board postings. I'd like the same script to weed
    out carriage
    returns, but we can't find the correct syntax for it.
    We're using :
    $patterns[0] = '/\n\r/';
    What's the correct syntax to use in this situation?
    Thanks!

    "David Powers" <[email protected]> wrote in message
    news:[email protected]...
    > Reese wrote:
    >> "David Powers" <[email protected]> wrote in
    message
    >>>
    >>>$patterns[0] = '/[\n\r]/';
    >>>
    >>>That searches for either a newline character or a
    carriage return.
    >>
    >> I'm told this will only work in Windows. That Macs
    would require a
    >> different string. Two, even.
    >>
    >> Anyone know if this is true?
    >
    > What you have been told is only partly correct. Windows
    uses a carriage
    > return followed by a newline character (\r\n). Macs just
    use a newline
    > character (\n).
    >
    > The pattern I have given you search for either a newline
    character or
    > carriage return. So if it's applied in such a way as to
    remove all
    > instances, it will work on both Windows and Mac. An
    alternative pattern
    > which would also work on both is this:
    >
    > $patterns[0] = '/\r?\n/';
    >
    > It looks for an optional carriage return followed by a
    newline character.
    > In other words, it still matches if there isn't a
    carriage return.
    The response of my know-it-all roumanian programmer with an
    ego the size of
    Texas to that was :
    http://www.regular-expressions.info/characters.html
    (bottom of the page)
    \r\n = windows
    \n = Linux (not Mac)
    \r = Mac
    http://www.regular-expressions.info/optional.html
    (tells you what the '?'
    does)
    (it means that the character before it can be there 0 or 1
    times)
    \r?\n = \n (Linux) or \r\n (windows)
    It leaves out the \r all alone, like added by the Mac.
    So, it will not delete the Mac new lines (might delete the
    Mac OSX ones
    since that one is passed on Linux, but not the older ones.)
    Now, you can contradict me all you want and have a busted
    code (then you
    will say it doesn't work because I made it wrong), or do it
    like I told you
    and get it working like it should.
    To this, I told him I would present this to you for a
    rebuttal, but not
    before asking him why he used only the '/\r?\n/' model as an
    example, and
    not the recommended '/[\n\r]/'. Something tells me he has no
    idea what [
    and ] do in this context, so he's avoiding it altogether --
    even though it
    may very well solve the problem on its own the way you claim
    it does.

  • How to replace an html br tag in the field to a carriage return?

    Hi All,
    I have a requirement to replace the <<br>> tag in the text field with a carriage return character "
    Currently the data in the Comments field looks like :
    "20100627 -115541 SECURITY WILL MEET AT MAIN ENTERANCE"<<<br>>"20100627 -115605 Officer notified: ALPHA : DF-10-011891; ST VINCENTS HOSPITAL, ST VINCENTS HOSPITAL, SAINT VINCENTS HOSP, MERRION RD, MERRION, BOOTERSTOWN, DUBLIN; FIRE/ALARM ACTIVATION;'<<br>>'20100627 -115609 PDA MOBILISED AFTER AMENDMENT VIN1'<<br>>'20100627 -"
    The <<br>> break tag was used for HTML purpose and now I would like to replace it with a carriage return character for BI Publisher report.
    Appreciate3 your help.
    Regards
    B
    Edited by: Bees on Jul 21, 2010 4:36 AM

    I downloaded your html template and it works fine for that template and the xml, but in my case it is not working. I need to assign the template just for one field called "Comments" where I need <<br>> tag to work.
    I modified the html as you suggested with the Tidy software, here is what I have done may be you can help me here. I very much appreciate your help.
    1. I have imported the template with the tag <<?import:file:///C:/dfb/biPub/code/htmlmarkup.xsl?>> and it works fine.
    2. Assigned the xsl - assign-template to the comments field.
    <xsl:apply-templates select="Fact._COMMENTS_" />
    *** IncidentsFact_._COMMENTS is the field name where it has <<br>><</br>> embedded into the comments data.
    Edited by: Bees on Jul 30, 2010 6:29 AM

  • XSLT - New Line/Carriage Return not displaying when deployed

    Hello everyone,
    I have an XSL Style Sheet that is supposed to transform an XML into plain text using Oracle SOA 11g BPEL transformation. The plain text transformation is working fine, but whenever I try to add a new line or carriage return, the text output doesn't reflect that. I've tried several ways of adding the line break but none of them have worked. This is the XSLT I'm using for testing purposes:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:oracle:b2b:X12/V4010/850" version="1.0">
    <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
    <xsl:template match="/a:Transaction-850">
    <!-- New line -->
    <xsl:variable name='newline'><xsl:text>
    </xsl:text></xsl:variable>
    <xsl:value-of select="a:Internal-Properties/a:Data-Structure/a:Property[@Name='InterchangeUsageIndicator']" />
    <xsl:text>&#xd;</xsl:text>
    <xsl:value-of select="$newline" />
    <xsl:text>&#xA;</xsl:text>
    <xsl:text>&#13;</xsl:text>
    <xsl:text>&#10;</xsl:text>
    <xsl:text>2000ITITM</xsl:text>
    </xsl:template>
    </xsl:stylesheet>
    When I try it out in an online XSLT test tool, it gives the output as expected:
    P
    2000ITITM
    When I deploy the composite, I noticed that the XSLT in the MDS repository ignores the line breaks, *#xAs, etc. and just closes the <xsl:text/> tags:
    <?xml version='1.0' encoding='UTF-8'?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:oracle:b2b:X12/V4010/850" version="1.0">
    <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
    <xsl:template match="/a:Transaction-850">
    <xsl:variable name="newline">
    <xsl:text/>
    </xsl:variable>
    <xsl:value-of select="a:Internal-Properties/a:Data-Structure/a:Property[@Name='InterchangeUsageIndicator']"/>
    <xsl:text/>
    <xsl:value-of select="$newline"/>
    <xsl:text/>
    <xsl:text/>
    <xsl:text>2000ITITM</xsl:text>
    </xsl:template>
    </xsl:stylesheet>
    And so, because of that, it just gives me the following output:
    P2000ITITM
    I have no idea why it's ignoring the new line characters, so any guidance would be appreciated.
    Thank you all for your help and time!
    Edit: I tried concatenating as follows:
    <xsl:value-of select="concat('36','&#xA;')"/>
    <xsl:value-of select="concat('24','&#xD;')"/>
    ...which shows up as is when I look at it in the MDS repository, however the text output still shows no line breaks...
    Message was edited by: dany36

    Ah I'm such a newbie. I was able to get it displayed by doing the following:
    <xsl:variable name="newline" select="'&#xD;&#xA;'" />
    This would show up correctly in the MDS repository, too.

  • Carriage Returns in XSLT output

    I need to output a text file with CRLF characters at the end of each line. I've explicitly put both characters into the XSLT file ( &lt;xsl:text&gt;&amp;#xD;&amp;#xA;&lt;/xsl:text&gt; ) but the default oracle.xml.parser.v2 in JDeveloper keeps converting the CR to LF. How can I force the parser to output the CR?

    This is incorrect. You can tell the processor to keep and output whitespace nodes if you use the character encodings (&amp;#xA; &amp;#xD; &amp;#x20; &amp;#x9;) and the output method is text. I am getting the correct output for space-only nodes (&amp;#x20;) and the linefeed character (&amp;#xA;). I am also getting a whitespace-only character for the carriage return (&amp;#xD;) node, it is just the <em>wrong</em> character - the parser is converting it to &amp;#xA;, so I am getting two linefeed characters where my stylesheet specifies &amp;#xD;&amp;#xA;.

  • Carriage Return ignored in ABAP Created HTML?

    We are in the pre-production box for an upgrade.
    We have ABAP source code that generates HTML logic. It worked fine in 4.6.
    The carriage return/line feeds are being ignored.
    I have already tried all the cl_abap_char_utilities=>NEWLINE
                                              cl_abap_char_utilities=>CR_LF
                                              cl_abap_char_utilities=>FORMFEED.....and more
    I've tried the conversion utilities also.
    When we look in the debugger we see the cr_lf values as ##, and 0d000a00 in hex, which should work, right?
    But, when we view the source code on the web page - where arrays are not being built because the crlfs are being ignored- we can see that when the html is being written, the crlfs are ignored and the html is all over the place, unformatted.
    I am thinking there must be a another HTML Function Module that might be available to format the html table before sending it out thru WWW_HTML_MERGER. Again, even in debug everything look good, but when it writes it to the URL the crlfs are ignored?
         Any suggestions?

    Becuase you enter your patterns as expressions where some characters are used as control characters, and then have to esacpe some of the control characters in the expressions when you enter them as java strings.
    So the expression is actually \r\n if you let a user enter it into a textfield, but you have to escape the \ if you write it as a String in the source code (since \ is an escape characters in strings)
    /Kaj

  • HTML Textarea removing Carriage Returns

    Hi,
    Hoping someone can assist, I am retrieving some data from a table that currently consists of carriage returns but when I try and retrieve this information via Ajax and pass it back into the HTML page textarea field within ApEx, the value returned is one continuous string.
    All my carriage returns are removed.
    Can someone please assist, possibly using a javascript solution or some other type as to how I can preserve the carriage returns.
    Thanks.
    Tony.

    Hi Tony,
    I suspect the problem is simply due to the way HTML handles line breaks, which is to say, it generally ignores them. For example, this html:
    <p>To be or not to be, that is the question;
    Whether 'tis nobler in the mind to suffer
    The slings and arrows of outrageous fortune,
    Or to take arms against a sea of troubles,
    And by opposing, end them. To die, to sleep;
    No more; </p>would be displayed in a browser as:
    To be or not to be, that is the question; Whether 'tis nobler in the mind to suffer The slings and arrows of outrageous fortune, Or to take arms against a sea of troubles, And by opposing, end them. To die, to sleep; No more;
    One way to get around this is to wrap the string in {font:Courier}&lt;pre&gt;&lt;/pre&gt;{font} tags; another would be to replace the carriage returns with {font:Courier}&lt;br&gt;{font}
    Hope this helps.
    tx, --Jen                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Carriage Returns in HTML Code Creating Extra Spaces Between Elements

    I've looked online all over and can't find the solution to my issue. I've found several pages explaining a similar event, but no solution.
    When placing many divs next to each other, I would like to visually view the code as one div per line: (see image) To get this, I have to use hard returns in my code (this method makes editing a lot easier visually). But doing so adds extra spacing between the divs which turns a 3 column set of thumbnails to 2 colums. I can fix this if I adjust the physical margins between the divs, but this can't be the only fix.
    The other fix is if I place the code back to back to back (see image): This makes the div's behave and appear as they should, but now the code is a visual mess because it's all cluttered.
    What I want is to be able to use as many carriage returns in my code and for browsers to disregard these types of line breaks in the code. So essentially, how can I get away from these extra spaces when using hard returns in code?

    I think that both your pages have a missing </div> at the end somewhere.
    Opps... that happened when I was stripping down the page to create a working example of my issue. I've fixed the missing div and re-uploaded both pages. The problem is still there.
    Change display: inline; to float: left; and add margin: 0 0 4px 4px; (as shown below)
    I had already tried using float, but something else in the code was forcing the columns to 2 instead of 3.
    Have you used "Apply Source Formatting" ?
    I use that religiously. I'm quite anal about visually clean code.
    Well, I just fixed the problem while replying... funny... I removed the margins from the actual img element (.imageThumb img) and placed it on the div which surrounds the img (.imageThumb). I also reapplied the float. Thanks all for the help - it helped me rethink. But I could have sworn I had once placed the margins on .imageThumb before and it didn't work.
    .imageThumb {
        width: 100px;
        height: 75px;
        display: inline;
        float: left;   
        margin: 0px 10px 10px 0px;
        cursor: pointer;
    .imageThumb img {
        /*margin: 0px 10px 10px 0px;*/

  • Carriage Returns and Tabs in XML element

    I have a number of carriage returns and tabs within an xml element. When I take that element I would like it to transform to html in which I am then displaying within a JEditorPane. However, when I do this it is one long string. I have tried the xml:space="preserve" within that element and this still is not working.
    Here is part of the xml with the carriage return line feeds. The element that I am talking about is called pseudocode. You can see it is displayed correctly below.
    Design Document XML : <?xml version="1.0" encoding="ISO-8859-1"?><design-doc><title-page><title>Testing Document</title><class-prepared-for>Lloyd</class-prepared-for><authors>Ben Garbers</authors><date-created>September 23, 2004</date-created></title-page><introduction text="This is the introduction. This is the introduction."/><class-definitions><class-definition class-name="ClassOne" visibility="public" class-complexity="not complex"><global-variables><variable visibility="public" name="VariableOne" object="String" comments="This is a String."/><variable visibility="public" name="VariableTwo" object="Integer" comments="This is an Integer."/></global-variables><methods><method name="MethodOne" synopsis="This will do some things." purpose="public" visibility="public"><input-parms><variable visibility="null" name="firstName" object="String" comments="null"/></input-parms><output-parms><variable visibility="null" name="lastName" object="String" comments="null"/></output-parms><local-variables><variable visibility="null" name="age" object="int" comments="null"/></local-variables><pseudocode xml:space="preserve">/* Ensure that player name exist in the system*/
    if (player =null)
         NullPlayerException;
              if (NOT (isPlayerNameExist(player)))
                   throw PlayerNameNotExistException;
              /* Ensure player name exist in the team already*/
              i ? 1;
              while (i <= length(mPlayers)) {
                   if (mPlayers.mPlayerName != playerName)
                        throw PlayerNameNotExistInTeamException;
    this.mPlayers ? this.mPlayers - player;</pseudocode>
    However, when I do the transformation I get the following with the pseudocode:
    /* Ensure that player name exist in the system*/if (player =null)     NullPlayerException;          if (NOT (isPlayerNameExist(player)))               throw PlayerNameNotExistException;          /* Ensure player name exist in the team already*/          i ? 1;          while (i <= length(mPlayers)) {               if (mPlayers[i].mPlayerName != playerName)                    throw PlayerNameNotExistInTeamException;}this.mPlayers ? this.mPlayers - player;
    It looks like it adds some spaces but no carriage returns or line feeds.
    My transformation code is the following:
         public ParseFile(String xmlString) {
              try {
              //Here we will load the correct style sheet for the message
              //that will be formatted.
              String urlString = "DesignDocument.xsl";
              URL url = this.getClass().getResource(urlString);
              System.out.println("URL to style sheet = " + url.toString());
              String styleSheetName = url.getFile();
              System.out.println("Style sheet name : " + styleSheetName);
              InputStream styleSheetInputStream = this.getClass().getResourceAsStream(urlString);
              //We will than load our SAXParerFactory and parse the message.
              SAXParserFactory SPFactory = SAXParserFactory.newInstance();
              SPFactory.setValidating(true);
              SAXParser sp = SPFactory.newSAXParser();
              XMLReader sax2parser = sp.getXMLReader();
              //NO Validation done on for this because we do NOT have a DTD.
              sax2parser.setFeature(
                   "http://xml.org/sax/features/validation",
                   false);
              sax2parser.setContentHandler(new FileContentHandler());
              //we create a character array of the length of the xml message String
              char[] messageCharacterArray =
                   new char[xmlString.length()];
              // we then put the xml string into the character array.
              messageCharacterArray = xmlString.toCharArray();
              // after this ew end up creating a CharArrayReader that will be used by the Sax
              // parser to parse the xml.
              CharArrayReader xmlCharArrayReader =
                   new CharArrayReader(messageCharacterArray);
              // we put the xml character array within the Input Source which will then be parsed
              // by the Sax2 parser.
              InputSource in = new InputSource(xmlCharArrayReader);
              // Use a Transformer for outputting the message into our formatted xml using
              // the stylesheet defined up in a messages own sxl stylesheet file.
              TransformerFactory tFactory = TransformerFactory.newInstance();
              tFactory.setURIResolver(new BasicURIResolver());
              StreamSource stylesource = new StreamSource(styleSheetInputStream);
              Transformer transformer = tFactory.newTransformer(stylesource);
    //          transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    //          transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
    //          Properties properties = new Properties();
    //          properties.setProperty("indent", "yes");
    //          properties.setProperty("{http://xml.apache.org/xslt}indent-amount", "2");
    //          transformer.setOutputProperties(properties);
              // We will use a ByteArrayOutputStream to put our transformed xml.
              ByteArrayOutputStream bos = new ByteArrayOutputStream();
              StreamResult result = new StreamResult(bos);
              SAXSource source = new SAXSource(in);
              transformer.transform(source, result);
              String s = bos.toString();
              StringBuffer sb = new StringBuffer();
              //This will make sure the Version Line is not shown.
              BufferedReader br = new BufferedReader(new StringReader(s));
              String line = "";
              while ((line = br.readLine()) != null) {
                        sb.append(line);
              bos.close();
              br.close();
              formattedXmlString = sb.toString();
              System.out.println("--------------------------------");
              System.out.println(formattedXmlString);
              System.out.println("--------------------------------");
              } catch (Exception e) {
                   e.printStackTrace();
    I have been searching and trying to figure this out forever. Any help would be greatly appreciated. Bottom line is that I want carriage returns and tabs to work when transferring from the xml to xsl.

    I get the following line when adding the <pre> tags.
    /* Ensure that player name exist in the system*/if (player =null)     NullPlayerException;          if (NOT (isPlayerNameExist(player)))               throw PlayerNameNotExistException;          /* Ensure player name exist in the team already*/          i ? 1;          while (i <= length(mPlayers)) {               if (mPlayers[i].mPlayerName != playerName)                    throw PlayerNameNotExistInTeamException;}this.mPlayers ? this.mPlayers - player;
    On the screen this is shown on 1 line. It looks like the tabs are working correctly. However, the carriage return, line feeds do not seem to be working. The xml that is pushed into the transformation has the carriage returns and line feeds and is formatted correctly. There has to be something happening when the xsl takes the xml String. When I add <BR></BR> within the xml that doesn't seem to work either.
    I am really sumpted. If you could help DrClap I would really be appreciated.

  • JAXP && Carriage Return Persistence, Reconstitution

    Gang,
    I'm using JAXP libaries, ie, DocumentBuilderFactory, DocumentBuidler, the org.w3c.dom.Document, Transformer, etc. to persist data that contains carriage returns...written as "data<CRLF-character-here>" when persisted.
    I'm wanting to then reconstitue this data for HTML presentation, via the TransformerFactory/Transformer objects via an XSL stylesheet and treat those charactes as actual breaks in the presentation. Is there any way I can do this via either the Transform object when I persist or the Transform object when I reconstitute...or am I just going to have to hack it via XSL?
    Anyone had any experience in this domain?
    Thanks,
    Cory

    This looks like the FAQ where people want to turn their line breaks into the string
    for HTML presentation. There's nothing that does this automatically for you, you have to do it in XSLT. That isn't as easy as it sounds for XSLT beginners, but you'll find more information here:
    http://www.dpawson.co.uk/xsl/xslfaq.html

  • On Windows 8.1 and Firefox 36.0.1 the textarea in forms has no carriage returns. Earlier versions the forms work. Is there a fix for this?

    Prior to this version of Firefox 36.0.1, the <textarea> in my HTML forms was working; displaying carriage returns. In version 36.0.1 they no longer function properly. Instead when I enter a carriage return, it displays a space instead of a newline. I went to the most basic textarea testing
    &lt;textarea&gt; name="comments" cols=20 rows=10 &lt;/textarea&gt;
    to make sure I wasn't introducing anything with other languages.
    I am using Windows 8.1 Pro. I rolled back to Firefox 35.0 and everything works fine. I install 36.0.1 and it stops working.
    I have access to another Laptop also running the same version of windows and Firefox and it appears to be doing strange things as well. I am suspicious in that I started noticing this immediately after a windows upgrade last night. The laptop also experienced the issues it is having immediately after a windows update yesterday evening.
    I have yet another PC running a different version of windows and Firefox and it too works fine. It looks like the issue is where there is windows 8.1 Pro and Firefox 36.0.1.
    Do you guys have any idea what is going on here?
    Thanks
    JMRAUPE57

    The current release supports the white-space property for a text area and it is possible that the website uses white-space: pre instead of white-space: pre-wrap.
    The former will prevent Firefox from wrapping the text.
    You can check that in the Inspector via the right-click context menu.
    *https://developer.mozilla.org/Tools/Page_Inspector
    See:
    *https://developer.mozilla.org/en-US/Firefox/Releases/36#CSS
    <blockquote>The white-space property is now working on <textarea> HTML elements (bug 82711).</blockquote>
    See also:
    *[[/questions/1050456]] Word wrap problems in 36.0

  • Help needed with Carriage Return in Unicode system

    Hi Experts,
    we have an issue with one of our programs regarding the carriage return that is used when creating a csv file. This issue has only came about because of the recent upgrade to ECC6.
    The main change to the program was the redefinition of the line feed variable.
    Existing statement was --> DATA: v_lf TYPE x VALUE '0D'.
    This was then replaced with
    New statement --> DATA: v_lf type c VALUE cl_abap_char_utilities=>cr_lf.
    Since this change has been implemented, the csv file that is created and sent on as an attachment via the function SO_NEW_DOCUMENT_ATT_SEND_API1 is now not displayed correctly.
    When looking at the attachment in trn SOST, a message is also displayed saying the file is not in a recognizable format when selecting the file to view.
    The hex value for cl_abap_char_utilities=>cr_lf is 000D000A and this seems to be causing the issue.
    I've also tried using Function FI_DME_CHARATERS as I only really want to use the CR. However, the hex value for this is 000D and not 0D.
    Is there any way of converting this to have a hex value of 0D?
    Thanks in advance,
    Chris

    HI,
    Sorry it is not the CONTENTS_TXT it is CONTENTS_BIN. Instead of CONTENTS_BIN you need to pass to CONTENTS_HEX
    Check my Code..i have used the CONTENTS_HEX instead of CONTENTS_BIN
    DATA: l_tab_lines TYPE i,
            l_string TYPE char300,
            l_line TYPE string.
      CONSTANTS : l_c_255(255)  TYPE c VALUE '255',
                  l_c_txt(3)    TYPE c VALUE 'TXT'.
      DATA: lt_reclist  TYPE STANDARD TABLE OF somlreci1,       "Recipients
            lt_objpack  TYPE STANDARD TABLE OF sopcklsti1,
            lt_objhead  TYPE STANDARD TABLE OF solisti1,
            lt_objtxt   TYPE STANDARD TABLE OF solisti1,     "Body of EMail
            lt_objbin   TYPE STANDARD TABLE OF solisti1."Attachment of EMail
      DATA: l_doc_chng TYPE sodocchgi1,     "attributes of document to send
            l_reclist  LIKE LINE OF lt_reclist,
            l_objpack  LIKE LINE OF lt_objpack,
            l_obj      LIKE LINE OF lt_objhead.
      DATA :
        l_hex LIKE solix,
        lt_contents_hex LIKE STANDARD TABLE OF solix ,
        conv TYPE REF TO cl_abap_conv_out_ce,
        l_buffer TYPE xstring,
        l_hexa(510) TYPE x.
    * Completing the recipient list
      l_reclist-receiver = p_emailid.
      l_reclist-express  = 'X'.
      l_reclist-rec_type = 'U'.
      APPEND l_reclist TO lt_reclist.
      CLEAR  l_reclist.
    * Body of Email Message
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      l_obj-line = '<html>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = '<body>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<p><code>Hello,</p></code>'(t04).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      CONCATENATE
       '<p><code>'(f01)
       'Please click the link to access the Confirmation Form.'(t01)
       'Kindly complete the same and return it to the HR contact 15 days' &
       ' prior to the date of confirmation of the employee.'(t02)
       '</p></code>'(f02) INTO l_obj-line SEPARATED BY space.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      CONCATENATE '<a href="' text-l01 text-l02 '">'
             INTO l_obj-line.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      CONCATENATE  '<p><code>'(f01)
                   'Link to Confirmation Forms'(034)
                   '</p></code>'(f02)
                   '</a>'
             INTO l_obj-line.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      l_obj-line = '<p><code>The details of the employees ' &
                   'are as follows:</p></code>'(017).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
    * Table headings in the Mail Body
      l_obj-line =  '<table border="1">'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<tr>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =   '<th><p><code>Name</p></code></th>'(030).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<th><p><code>Department</p></code></th>'(031).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<th><p><code>DOJ</p></code></th>'(032).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<th><p><code>Confirmation Date</p></code></th>'(033).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '</tr>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
    ** Body of Email Message
    * Email Attachment
    * Append headings
      CONCATENATE 'Employee No.'(002)
                  'Employee Group'(016)
                  'Employee Name'(001)
                  'Designation'(003)
                  'Joining Date'(004)
                  'Department'(005)
                  'Branch/Location'(006)
                  'Unit'(007)
                  'Confirmation Due'(008)
                  'Form sent on'(009)
                  'Form Return by'(010)
                  'Employee Group'(016)
                  'Qualification'(012)
                  'Trainee Category'(013)
                INTO l_string
           SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
      APPEND l_string TO lt_objbin.
      CLEAR l_string.
      APPEND INITIAL LINE TO lt_objbin.
      LOOP AT p_emp_details INTO i_emp_details_line.
        CONCATENATE i_emp_details_line-pnalt
                    i_emp_details_line-egroup
                    i_emp_details_line-ename
                    i_emp_details_line-stext
                    i_emp_details_line-srvdt
                    i_emp_details_line-ltext
                    i_emp_details_line-pbtxt
                    i_emp_details_line-btrtx
                    i_emp_details_line-mndat
                    i_emp_details_line-fsdate
                    i_emp_details_line-frdate
                    i_emp_details_line-egroup
                    i_emp_details_line-ptext
                    i_emp_details_line-ftext
               INTO l_string
          SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
        APPEND l_string TO lt_objbin.
        CLEAR l_string.
        l_obj-line =  '<tr>'.
        APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
        CONCATENATE '<td>' '<p><code>'(f01)
                     i_emp_details_line-ename '</p></code>'(f02) '</td>'
                     INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        CONCATENATE '<td>' '<p><code>'(f01)
                    i_emp_details_line-ltext '</p></code>'(f02) '</td>'
                    INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        CONCATENATE '<td>' '<p><code>'(f01)
                    i_emp_details_line-srvdt '</p></code>'(f02) '</td>'
                    INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        CONCATENATE '<td>' '<p><code>'(f01)
                    i_emp_details_line-mndat '</p></code>'(f02) '</td>'
                    INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        l_obj-line =  '</tr>'.
        APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      ENDLOOP.
      l_obj-line = '  </table>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = '</body>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = '</html>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      IF r_cprob EQ 'X'.
        l_string = 'Completion of probation List'(018).
      ELSE.
        l_string = 'Completion of extension of probation List'(035).
      ENDIF.
      APPEND l_string TO lt_objhead.
    * APPEND object_header.
      CALL FUNCTION 'SO_RAW_TO_RTF'
        TABLES
          objcont_old = lt_objbin
          objcont_new = lt_objbin.
      LOOP AT lt_objbin INTO l_line.
       conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' endian = 'B').
        CALL METHOD conv->write( data = l_line ).
        l_buffer = conv->get_buffer( ).
        MOVE l_buffer TO l_hexa.
        MOVE l_hexa TO l_hex-line.
        APPEND l_hex TO lt_contents_hex.
      ENDLOOP.
    * File name for attachment
      CONCATENATE 'Completion of probation List'(018)
                   sy-datum '.XLS' INTO l_obj SEPARATED BY space.
      APPEND l_obj TO lt_objhead.
    * Email Body Details
      CLEAR l_tab_lines.
      DESCRIBE TABLE lt_objtxt LINES l_tab_lines.
      l_doc_chng-doc_size = ( l_tab_lines - 1 ) * 255 +
                              STRLEN( l_string ).  "size of doc in bytes
      l_doc_chng-obj_name = sy-repid.
      l_doc_chng-obj_langu = sy-langu.
      l_doc_chng-obj_descr = l_string.
      l_doc_chng-sensitivty = 'P'.          "  Send mail as a confidential
      l_objpack-head_start = 1.
      l_objpack-head_num   = 1.
      l_objpack-body_start = 1.
      l_objpack-body_num   = l_tab_lines.
      l_objpack-doc_type   = 'HTML'. "l_c_txt.
      APPEND l_objpack TO lt_objpack.
      CLEAR  l_objpack.
    * Email Attachment Details
      CLEAR l_tab_lines.
      DESCRIBE TABLE lt_objbin LINES l_tab_lines.
    * Creation of the entry for the compressed attachment
      l_objpack-transf_bin = 'X'.
      l_objpack-head_start = 1.
      l_objpack-head_num   = 1.
      l_objpack-body_start = 1.
      l_objpack-doc_type   = 'XLS'.
      l_objpack-obj_name   = l_obj.
      l_objpack-obj_descr  = l_obj.
      l_objpack-body_num   = l_tab_lines.
      l_objpack-doc_size   = l_tab_lines * l_c_255.
      APPEND l_objpack TO lt_objpack.
      CLEAR  l_objpack.
    * Send the document
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          document_data              = l_doc_chng
          put_in_outbox              = ' '
          commit_work                = 'X'
        TABLES
          packing_list               = lt_objpack
          object_header              = lt_objhead
    *      contents_bin               = lt_objbin
          contents_txt               = lt_objtxt
          contents_hex               = lt_contents_hex
          receivers                  = lt_reclist
        EXCEPTIONS
          too_many_receivers         = 1
          document_not_sent          = 2
          document_type_not_exist    = 3
          operation_no_authorization = 4
          parameter_error            = 5
          x_error                    = 6
          enqueue_error              = 7
          OTHERS                     = 8.

Maybe you are looking for

  • Adobe creative cloud say i'm not connected to the internet, but I am

    adobe creative cloud says i'm not connected to the internet, but I am

  • Exception:java.io.UTFDataFormatException: invalid byte 2 of 2-byte UTF-8 se

    While feeding the parser with the xml string returned , the present data found contains some invalid UTF-8 characters(e.g, "�"). This would amount to a "java.io.UTFDataFormatException" exception. This is the code where I initialize the parser & feed

  • Question about statement for all entries

    Hi Abap experts, I have a question concerning the ABAP statement for all entries. Explanations: Let's say that my source package (Source table) contains 2 types of data: -type1 -type2 I would like to use the statement select from table into internal

  • Help with "Error 7"

    Just recently iTunes has been giving me this error message: "iTunes helper was not installed correctly." And then another message on top of that: "iTunes was not installed correctly. Please reinstall iTunes. Error 7 (Windows error 14001) I've tried d

  • Financial Reporting Charts and Legend in horizontal row

    Hi all, In the knowledge browser there is a "how to" enchancement on how to show legend in one horizontal row ([ID 794882.1]). In a few words, the solution was to edit the resulting XML file (*.des) as follows: A. Search for the string "OTHERPROPERTI