2014-02-25 82 views
1

我有這樣2個XML節點,例如:XSLT 1.0子,後忽略大小寫

<Model>GRAND MODUS</Model> 
<QualifiedDescription>2008 58 Reg Renault Grand Modus 1.2 TCE Dynamique 5drMetallic Flame Red</QualifiedDescription> 

我想,後子使用大MODUS後到QualifiedDescription分裂像這樣:

<xsl:variable name="something"><xsl:value-of select='substring-after(QualifiedDescription, Model)' /></xsl:variable> 

但是很明顯,它不是在工作,因爲它是區分大小寫的。是否有可能得到子字符串後工作不區分大小寫,但仍然返回與案例保存EG的輸出。

1.2 TCE Dynamique 5drMetallic Flame Red 

謝謝。

substring-after(upper-case(QualifiedDescription), upper-case(Model)) 

回答

3

你可以在兩個字符串轉換爲以制定出性格中的第一個偏移使用translate相同的情況:

+0

很棒。像夢一樣工作。感謝您的幫助。 –

0

如果你大寫的所有第一和子上大寫您可以不分大小寫第二,然後從該位置取原始QualifiedDescriptionsubstring

<xsl:variable name="uc" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
<xsl:variable name="lc" select="'abcdefghijklmnopqrstuvwxyz'" /> 

<xsl:variable name="substrStart" select=" 
     string-length(substring-before(translate(QualifiedDescription, $uc, $lc), 
             translate(Model, $uc, $lc))) 
    + string-length(Model) 
    + 1" /><!-- +1 because string indexes in XPath are 1-based --> 

<xsl:variable name="something" 
       select="substring(QualifiedDescription, $substrStart)" /> 

你會需要稍微更復雜的邏輯取其中QualifiedDescription不包括模型(因爲在這種情況下,兩個substring-beforesubstring-after返回空字符串),但你的想法的情況下考慮。

+0

嗯。我得到大寫()'是一個未知的XSLT函數。 –

+0

'upper-case'是一個XPath 2.0函數,它不適用於1.0 –