2013-11-27 3 views
2

Я в тупике, и любая помощь очень ценится. Я пытаюсь захватить значение электронной почты из поля XML, но я не получаю желаемый результат.Преобразование XSL: использование перевода и подстрока в XSL

У меня есть это поле XML:

<Rmk>EMAIL-FIRST.LAST*ABX.COM</Rmk> 

У меня есть этот XSL заявление:

<xsl:for-each select="//Rmk[starts-with(.,'EMAIL-')]"> 
<Email> 
<xsl:value-of select="translate(substring-after(.,'EMAIL-'),'*','@')"/> 
</Email> 
</xsl:for-each> 

Выход он производит FIRST.LAST*ABX.COM, а требуемый выход [email protected]. Любой вход?

+1

Вызов 'translate' выглядит корректно для меня. Какой процессор XSLT вы используете? –

ответ

3

Использование данных о http://xslfiddle.net и:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <xsl:for-each select="//Rmk[starts-with(.,'EMAIL-')]"> 
      <Email> 
       <xsl:value-of select="translate(substring-after(.,'EMAIL-'),'*','@')"/> 
      </Email> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

для выходов преобразовывают результат

<Email>[email protected]</Email> 

, который, кажется, результат вы хотите. Что еще не так?

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