2017-06-22 107 views
0

我很難循環這個。我需要循環使用XSLT代碼?

XML代碼:

<ProcessData> 
    <Messages> 
     <MessageIds/> 
     <MessageNames> 
      <MessageName>tpname1_abc.txt</MessageName>     
      <MessageName>tpname2_def.txt</MessageName> 
      <MessageName>tpname3_pqr.txt</MessageName> 
      <MessageName>tpname4_xyz.txt</MessageName> 
     </MessageNames> 
    </Messages> 
</ProcessData> 

XSLT代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 
    <xsl:template match="/"> 
    Invalid File Received for Enrollments Inbound process in mailbox /sftptps/enrollments/deadletter 


       <xsl:for-each select="/ProcessData/Messages/MessageNames/MessageName"> 
         Username: <xsl:value-of select="substring-before(/ProcessData/Messages/MessageNames/MessageName/text(),'_')"/>  File Name:<xsl:value-of select="substring-after(/ProcessData/Messages/MessageNames/MessageName/text(),'_')"/> 

         <xsl:text>&#xd;</xsl:text> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

這是到目前爲止我的輸出:

Invalid File Received for Enrollments Inbound process in mailbox /sftptps/enrollments/deadletter 



         Username: tpname1  File Name:abc.txt 
         Username: tpname1  File Name:abc.txt 
         Username: tpname1  File Name:abc.txt 
         Username: tpname1  File Name:abc.txt 

我需要它是這樣的:

Invalid File Received for Enrollments Inbound process in mailbox /sftptps/enrollments/deadletter 



         Username: tpname1  File Name:abc.txt 
         Username: tpname2  File Name:def.txt 
         Username: tpname3  File Name:pqr.txt 
         Username: tpname4  File Name:xyz.txt 

我在這裏做錯了什麼?我敢肯定,我錯過了一些東西來循環它。

回答

0

你已經在那裏 - 不要從頂部開始。變化:

<xsl:value-of select="substring-before(/ProcessData/Messages/MessageNames/MessageName/text(),'_')"/> 

到:

<xsl:value-of select="substring-before(.,'_')"/> 

和:

<xsl:value-of select="substring-after(/ProcessData/Messages/MessageNames/MessageName/text(),'_')"/> 

到:

<xsl:value-of select="substring-after(.,'_')"/> 

你有什麼現在選擇全部MessageName節點從文檔的根節點開始,並在XSLT 1.0中返回第一個節點的值。

+0

非常感謝你!這絕對有效! –

+0

我怎麼會把這個表格格式?兩列,1.用戶名2.文件名? –

+0

「表格格式」可能意味着很多東西。請張貼你想要得到的確切結果(如代碼)。 –