Во входном XML-файле у меня отдельно Имя и Фамилия:
<ClientList>
<Client>
<Name>Jan</Name>
<Surname>Kowalski</Surname>
</Client>
</ClientList>
В выходном XML-файле я хочу получить такой результат:
<NameSurname>Jan Kowalski</NameSurname>
Мой XSL-файл работает не так, как я хочу:
<xsl:for-each select = "ClientList/Client">
<xsl:element name = "NameSurname">
<xsl:value-of select = "Name"/>
<xsl:value-of select = "Surname"/>
</xsl:element>
Как я могу объединить имя и фамилию вместе?
Ваш XSLT выглядит нормально. Добавьте <xsl:text> </xsl:text>
, чтобы вставить пробел между именами.
Кстати, <xsl:element name = "NameSurname">
- это очень обтекаемый способ обозначить <NameSurname>
. Не используйте <xsl:element>
, если имя вашего элемента не является результатом вычислений.
<xsl:template match = "/">
<xsl:for-each select = "ClientList/Client">
<xsl:element name = "Name_Surname">
<xsl:value-of select = "concat(Name,' ',Surname)"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
Вместо '<xsl: value-of select = "concat (Name,' ', Surname)" />' вы можете использовать '<xsl: value-of select = "." />', Если это XSLT 2.0.
Так что же мне использовать вместо
<xsl:element name = "NameSurname">
?