Сокращение Фамилия, Имя в XSLT - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь отформатировать имя игрока в LAST, F., а не в полное имя.
Поэтому я хочу вырезать строку через 2 пробела после каждой запятой и добавить. (Точка)

Вот пример XML:

<fbgame>
 <team>
   <player name="LASTNAME, FIRSTNAME"></player>
</team>
 </fbgame>

это кодовый блок xslt

<name>
  <xsl:value-of select="@name"/>
</name>

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

XSLT 1.0

<xsl:template match="player">
    <name>
        <xsl:value-of select="substring-before(@name, ', ')" />
        <xsl:text>, </xsl:text>
        <xsl:value-of select="substring(substring-after(@name, ', '), 1, 1)" />
        <xsl:text>.</xsl:text>
    </name>
</xsl:template>

Или, если вы предпочитаете:

<xsl:template match="player">
    <name>
        <xsl:variable name="last" select="substring-before(@name, ', ')" />
        <xsl:value-of select="substring(@name, 1, string-length($last) + 3)" />
        <xsl:text>.</xsl:text>
    </name>
</xsl:template>
0 голосов
/ 06 ноября 2018

Другая опция XSLT 2.0:

<xsl:template match="player">
  <name>
    <xsl:value-of select="replace(@name,'([^,]+, .).*','$1.')"/>
  </name>
</xsl:template>
0 голосов
/ 06 ноября 2018

Использование xslt 2.0,

<name>
  <xsl:variable name="fullname" select="tokenize(@name, ',')" />
  <xsl:value-of select="concat($fullname[1], ',',substring($fullname[2],1,2),'.')"/>
</name>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...