我们有一个GivenName字段,它在输入中作为多个标记。例如:
<PersonName>
<Surname>BNWHBQQ</Surname>
<GivenName>Adam</GivenName>
<GivenName>Sam</GivenName>
<GivenName>Peter</GivenName>
</PersonName>
我们需要连接输入中存在的所有GivenName,并将其传递给一个标记,例如:
<db:PR_OFFENDER>
<db:SURNAME>BNWHBQQ</db:SURNAME>
<db:GIVEN_NAME>Adam Sam Peter</db:GIVEN_NAME>
</db:PR_OFFENDER>
我试过了: 我尝试使用for循环,但这没有用,因为我在输出中也得到多个,如:
<xsl:if test="out:PartyEntity/out:Person/out:PersonName/out:GivenName">
<xsl:for-each select="out:PartyEntity/out:Person/out:PersonName/out:GivenName">
< db:GIVEN_NAME>
<xsl:value-of select="normalize-space(.)"/>
</db:GIVEN_NAME>
</xsl:for-each>
</xsl:if>
我可以使用类似下面的内容,但输出看起来不太好,我可以在输入中有多个给定的名称,所以这种格式也不会有效。
<xsl:value-of select="concat(out:PartyEntity/out:Person/out:PersonName/out:GivenName[1],' ',out:PartyEntity/out:Person/out:PersonName/out:GivenName[2], ' ')"/>
先谢谢, 的Vivek
答案 0 :(得分:1)
这样的模板应该正常工作:
<xsl:if test="out:GivenName">
<db:GIVEN_NAME>
<xsl:for-each select="out:GivenName">
<xsl:value-of select="normalize-space(.)"/>
<xsl:if test="position() != last()">
<xsl:text> </xsl:text>
</xsl:if>
</xsl:for-each>
</db:GIVEN_NAME>
</xsl:if>
您可以在此处看到它:http://xsltransform.net/pNmBxZz/1