2016-11-04 2 views
0

XSL:Как изменить значения в XSL расщеплению запятой

<xsl:value-of select="theName" /> 

Примеры значений (Последние, Имя Отчество, должность):

- Fitzerald, John K., MBBS 
- Keane, Mike 

Как я могу разделить theName, принимая значения образцов выше, так что он показывает, как это:

- John K. Fitzerald MBBS 
- Mike Keane 
+0

Какую версию XSLT? –

+1

Я использую 2.0. – Si8

+0

Версия 1.0 сейчас это выглядит – Si8

ответ

1

Вот XSLT 2.0 вариант с использованием tokenize() ...

XML Input

<doc> 
    <theName>Fitzerald, John K., MBBS</theName> 
    <theName> Fitzerald , John K. , MBBS </theName> 
    <theName>Keane, Mike</theName> 
</doc> 

XSLT 2,0

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="theName"> 
    <xsl:variable name="tokens" 
     select="for $token in tokenize(.,',') return normalize-space($token)"/> 
    <xsl:copy> 
     <xsl:value-of select="($tokens[2],$tokens[1],$tokens[3])" separator=" "/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

Выход

<doc> 
    <theName>John K. Fitzerald MBBS</theName> 
    <theName>John K. Fitzerald MBBS</theName> 
    <theName>Mike Keane</theName> 
</doc> 
+0

У меня есть ' 'внутри XSLT-файла, так что просто используйте шаблон? – Si8

+1

@ Si8 - Единственное, что отличается от контекста. Вы можете либо добавить шаблон, либо сделать '' вместо 'xsl: value-of' или вы можете просто добавить' xsl: variable' (изменить 'tokenize (., ',') 'to:' tokenize (theName, ',') ') и заменить значение' xsl: value-of' тем, что я использую. Если это все еще не работает, обновите свой вопрос с примера ввода и вывода XML. –

+0

Моя версия 'xml' на вершине говорит 1.0, поэтому я предполагаю, что ошибался, когда я сказал, что это 2.0? :/ – Si8

Смежные вопросы