Removing all \n\r characters from a node XSLT?

前端 未结 2 1818
鱼传尺愫
鱼传尺愫 2020-12-10 20:51

wondered if you could help me please? I have node in xml that is as followed

$LOG: 08880xbpnd $
fhdsafidsfsd
df
sd
fsd
f
2条回答
  •  臣服心动
    2020-12-10 21:38

    Unfortunately, the normalize-space() function (used in the answer of andynormancx) does more than deleting newlines.

    It deletes all leading and trailing whitespace and it replaces any group of inner contigious whitespace with a single space character.

    In many cases we want to deleteonly one type of a white-space character (as in the current case -- new lines (CR+LF is automatically normalized on reading by the XML parser to just LF).

    The correct and safe way to do so is by using the standard XPath translate() function:

    translate(., '
    ', '')
    

    returns a string obtained from the string-value of the current node in which any newline character is deleted.

    Here is an example:

    
     
    
      
        
          
        
      
    
      
        
      
    
    

    When the above transformation is applied on this source XML document:

    
    $LOG: 08880xbpnd $
    "embedded    blanks    must    stay"
    df
    sd
    fsd
    f
    sd
    fsd
    
    

    The result is on one line only, as required, and all embedded spaces are left intact:

    $LOG: 08880xbpnd $"embedded    blanks    must    stay"dfsdfsdfsdfsd
    

提交回复
热议问题