2010-11-11 52 views
1

嗨,您是否知道如何聲明一個鏈接(即:http://www.google.com)作爲變量,然後將該變量用於其他if?這個?如何將變量聲明爲XSLT中的鏈接

<xsl:element name="a"> 
<xsl:attribute name="href">http://www.google.com</xsl:attribute>// first get the link 
<xsl:choose> 
<xsl:when test="http://www.google.com"> 
    Do something 1 
</xsl:when> 
<xsl:otherwise> 
    Do something 2 
</xsl:choose> 
</xsl:element> 

這是可能的嗎?我應該看什麼?

+0

你要匹配的字符串的內容,即「HTTP:// WWW谷歌融爲一體」,或做某種分辨率或驗證第一? – dlanod 2010-11-11 02:26:32

+0

如果你想提供你的輸入XML和你想要輸出的樣子,這將會很有幫助。否則,我們只是猜測你想要什麼。 – 2010-11-11 03:26:12

+0

好問題,+1。查看我的答案以獲得完整的工作示例。 – 2010-11-11 03:33:36

回答

3

有外出如何聲明 鏈接(即:HTTP://www.google.com)作爲 變量,然後使用變量 爲別的,如果?

使用此代碼作爲工作實例 - 當然,你需要學習XSLT的至少基礎:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:variable name="vLink" select="'http://www.google.com'"/> 

<xsl:template match="/"> 
    <xsl:choose> 
    <xsl:when test="$vLink = 'http://www.google.com'"> 
     It is the Google link... 
    </xsl:when> 
    <xsl:otherwise> 
    It is not (exactly) the Google link... 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

當這種轉變是在任何XML文檔應用(未使用),想要的結果產生:

It is the Google link... 

你也可以使用一個全局<xsl:param>這可以由轉換的調用者在外部設置。

+0

+1好的答案。 – 2010-11-11 14:18:31

0

直接匹配內容,並將URL聲明爲變量。

-1

這在某種程度上是可能的,但XSL中沒有if-else結構。這是我測試過的一個版本,您可能能夠適應您的需求。我使用的輸入是:

<?xml-stylesheet type="text/xsl" href="test.xsl"?> 
<xml> 
    <LinkValue>http://www.google.com/</LinkValue> 
</xml> 

是呈現「做點1」,如果LinkValue是上面的字符串或「做點2:」如果我修改它是XSL:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <xsl:variable name="LinkValue" select="//LinkValue"/> 
     <xsl:element name="a"> 
      <xsl:attribute name="href"><xsl:value-of select="$LinkValue"/></xsl:attribute> 
      <xsl:if test="$LinkValue = 'http://www.google.com/'"> 
       Do something 1 
      </xsl:if> 
      <xsl:if test="$LinkValue != 'http://www.google.com/'"> 
       Do something 2 
      </xsl:if> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

希望你可以使用這些示例來確定您需要爲您的場景實施的內容。

+0

嗯,不知道爲什麼我使用XSLT的引用說沒有,如果 - 否則當選擇 - 當存在。 Dimitre的回答比較好。 – dlanod 2010-11-11 03:35:25

+0

感謝您的幫助 – someguy 2010-11-11 05:13:14

0

如果你更需要在全球範圍試試這個:

... 
<xsl:apply-templates select="a" /> 
... 

<xsl:template match="a"> 
    Just a link 
</xsl:template> 

<xsl:template match="a[starts-with(@href, 'http://google.com/') or starts-with(@href, 'http://www.google.com/')]"> 
    Link to google.com 
</xsl:template>