2013-10-03 80 views
1

我想用一個會員鏈接替換xml輸出中的XXXXX。我在想,替換功能是一種選擇,但我無法讓它正常工作。如何使用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的片段。

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()函數正常工作?再次感謝。 –