2013-04-08 4 views
0

У меня есть xslt, где нет пробелов в качестве символов.Простой URL-адрес в XSLT

В этом случае показать только %.

URL:

http://localhost:8888/tire/details/Bridgestone/ECOPIA%EP001S/Bridgestone,ECOPIA%EP001S,195--65%R15%91H,TL,ECO,0 

XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:x="http://www.w3.org/1999/xhtml" version="1.0"> 
    <xsl:param name="extractorHost" /> 
    <xsl:template match="/"> 
    <links> 
     <xsl:apply-templates /> 
    </links> 
    </xsl:template> 
    <xsl:template match="//x:form/x:a[@class='arrow-link forward']"> 
    <xsl:variable name="url" select="translate(@href, ' ', '%20')"/> 
    <link href="{concat($extractorHost, $url)}" /> 
    </xsl:template> 
    <xsl:template match="text()" /> 
</xsl:stylesheet> 

Правильный URL должен быть:

http://localhost:8888/tire/details/Bridgestone/ECOPIA%20EP001S/Bridgestone,ECOPIA%20EP001S,195--65%20R15%2091H,TL,ECO,0 

ли это неправильно XSLT формируется ?. Благодарю.

ответ

1

Посмотрите здесь: XSLT string replace

Вы можете использовать уже существующие шаблоны, которые позволят вам использовать «заменить» функцию.

+0

Проблема в:

+0

Это решает мою проблему. Спасибо. –

2

Функция XPath translate не работает так, как вы думаете. То есть, это не функция замены строки.

Он отображает отдельные символы из одного списка в соответствующие символы в другом списке.

Так что,

translate(@href, ' ', '%20') 

средства, переводят пространство в %. Часть третьего аргумента 20 игнорируется.

+0

ОК, Вы правы. Сделайте это с помощью «подстроки» ?. –

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