我需要循环使用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>
</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中返回第一个节点的值。
非常感谢你!这绝对有效! –
我怎么会把这个表格格式?两列,1.用户名2.文件名? –
“表格格式”可能意味着很多东西。请张贴你想要得到的确切结果(如代码)。 –