我有一些XML,我给XSLT样式表做了一些转换,但不知怎的,xsl:for-each只通过第一个节点循环...
我期待它循环通过所有节点并转换它们,但不知何故它只会循环通过第一个值,不知道我在这里做错了什么..
这是我的XML:
<?xml version="1.0"?>
<email>
<uid>66</uid>
<subject>You have been added to a Priooo project</subject>
<message/>
<arguments>
<argument>
<name>
-url-
</name>
<value>
http://localhost/iaf4asap/#/resetpassword/c0a82001--6b0373de_15eb8270a5e_-7fea</value>
</argument>
<argument>
<name>
-inviteBy-
</name>
<value>Laurens Makel</value>
</argument>
<argument>
<name>
-project-
</name>
<value>junkspam0003@outlook.com</value>
</argument>
</arguments>
<templateId>
c02f1e50-d569-41d9-87ec-933cded8a330
</templateId>
</email>
这是我的XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method="xml"/>
<xsl:template match="/email">
<email>
<uniqueArguments>
<xsl:for-each select="arguments">
<uniqueArgument>
<name><xsl:value-of select="argument/name"/></name>
<value><xsl:value-of select="argument/value"/></value>
</uniqueArgument>
</xsl:for-each>
</uniqueArguments>
<templateId>
<xsl:value-of select="templateId"></xsl:value-of>
</templateId>
</email>
</xsl:template>
</xsl:stylesheet>
这给了我以下输出..:
<?xml version="1.0"?>
<email>
<uniqueArguments>
<uniqueArgument>
<name>
-url-
</name>
<value>
http://localhost/iaf4asap/#/resetpassword/c0a82001--6b0373de_15eb8270a5e_-7fea</value>
</uniqueArgument>
</uniqueArguments>
<templateId>
c02f1e50-d569-41d9-87ec-933cded8a330
</templateId>
</email>
答案 0 :(得分:1)
您只在一个节点<xsl:for-each select="arguments/argument">
上循环,xsl:for-each需要在结果中包含许多节点的XPath,而是使用:
15 52 27 0.00
15 52 37 0.2
15 52 50 0.00
15 53 12 2.55
15 54 21 10.00
15 55 15 13.55