2013-10-03 4 views
1

Я пытаюсь заменить XXXXX на выход xml партнерской ссылкой. Я думал, что функция замены была вариантом, но я не мог заставить ее работать правильно.Как использовать fn: заменить на XSL

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>PayDotCom (By Popularity)</h2> 
    <table border="1"> 
    <tr bgcolor="#9acd32"> 
     <th>Score</th> 
     <th>Affiliate Link</th> 
     <th>Name</th> 
    </tr> 
    <xsl:for-each select="marketplace/Product"> 
    <tr> 
     <td><xsl:value-of select="aps"/></td> 
     <td><xsl:value-of select="salespage"/></td> 
     <td><xsl:value-of select="name"/></td> 
    </tr> 
    </xsl:for-each> 
    </table> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

Ниже приведен фрагмент XML-вывода, который показывает XXXXX в разделе Affiliate Link.

PayDotCom (By Popularity) 

Score  Affiliate Link       Name 
52949.7 http://paydotcom.com/r/95330/XXXXX/  The Best Spinner 
27828.8 http://paydotcom.com/r/10031/XXXXX/  My Data Team Global Data Entry &  Traditional Data Entry Jobs 
12750.9 http://paydotcom.com/r/16329/XXXXX/  3WayLinks.net Subscription 
10380.4 http://paydotcom.com/r/9912/XXXXX/  Instant Article Wizard 
9438.49 http://paydotcom.com/r/98870/XXXXX/  The Smart Cash System - Make $4000 Per Week From Home 

Сообщите мне, если мне нужно уточнить больше. Заранее спасибо.

ответ

1

replace() - это функция XPath 2.0 и доступна только в XSLT 2.0 (и 3.0).

Ваша таблица стилей XSLT 1.0.

substring-before() является XPath 1.0 функция, которая доступна в XSLT 1.0:

<xsl:value-of select="substring-before(salespage, 'XXXXX')"/> 
+0

Как с помощью будет подстрока-раньше() работать? У меня не было бы возможности переключить XXXXX с другой строкой. Должно ли быть изменено на XSLT 2.0 или 3.0? Если да, может ли он работать с replace()? –

+0

Конечно, перейдите к XSLT 2.0, если сможете. Единственная причина не в том, что вы работаете на платформе, где нет процессора XSLT 2.0. –

+0

При переключении на XSLT 2.0 '' - это единственное изменение в коде, который необходим? Если он совместим с 2.0, как я могу заставить функцию replace() работать правильно? Еще раз спасибо. –

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