我需要循环使用XSLT代码?

问题描述:

我很难循环这个。我需要循环使用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 

我在这里做错了什么?我敢肯定,我错过了一些东西来循环它。

你已经在那里 - 不要从顶部开始。变化:

<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

“表格格式”可能意味着很多东西。请张贴你想要得到的确切结果(如代码)。 –