Как получить начальную строку String и другие строки как есть - PullRequest
1 голос
/ 15 октября 2019

Я хочу, чтобы вы получили имя и фамилию.

Ввод:

<root>
  <ele name="Samp Huwani"/>
  <ele name="Laura McKay (J)"/>
  <ele name="Dery Wertnu"/>
</root>

Выход

<names>S Huwani</name>
<names>L McKay (J)</name>
<names>D Wertnu</name>

Пробный код:

<xsl:template match="root/ele">
  <names>
    <xsl:value-of select="replace(@name, '^(.{1}).* (.*)', '$1 $2')" />
  </name>
</xsl:template>

Результат, который я получаю:

<names>S Huwani</name>
<names>L (J)</name>
<names>D Wertnu</name>

Согласно моему коду, я получаю L (J). это должно быть L McKay (J). Но два других результата работают как ожидалось

Я использую XSLT 2.0. Спасибо

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Если вы хотите использовать регулярные выражения для этого, попробуйте:

<xsl:value-of select="replace(@name, '^(.{1})[^ ]* (.*)', '$1 $2')" />
1 голос
/ 15 октября 2019

Вы можете использовать подстрока и подстрока после:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="root/ele">
        <names>
            <xsl:value-of select="concat(substring(@name, 1, 1), ' ', substring-after(@name, ' '))"/>
         </names>
    </xsl:template>
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...