2013-08-29 46 views
1

我需要測試一個xsl變量是否包含xslt中的一個單詞或多個逗號分隔的單詞。如何檢查字符串變量是否在XSL中用逗號分隔?

自變量是動態的,它映射到URL查詢字符串它可以是某事像這樣的參數:

index.aspx?role=manager 

index.aspx?role=manager,director 

在XSLT,我需要的,如果找出$角色參數只是一個單詞或多個逗號分隔的單詞。如果多的話,那麼我需要提取每一個字,並以此爲基礎進行的那些話XSLT過濾像

/rows/row[role=extractedWord[1] or role = extractedWord[2] 

因此只有那些經理或主管的角色匹配的行返回。

這可能嗎?

更新: 我有這樣一個過濾器:

<xsl:variable name="AllPerRole"select="/dsQueryResponse/Rows/Row[contains(@EmployeeRoles,$Role)]" />

如果角色只有一個價值像index.aspx?role=manager則上述工作正常。 但如果角色是多重的話就像這些, index.aspx?role=manager,director 然後我需要一些提取物,字符串「經理,CEO」,並能夠做到以下幾點:

<xsl:variable name="AllPerRole"select="/dsQueryResponse/Rows/Row[contains(@EmployeeRoles,$Role{firstRole}) or contains(@EmployeeRoles,$Role{2ndRole})]" />

+1

XSLT哪個版本的? XSLT 2有正則表達式,XSLT 1沒有。 – FrankPl

+0

對於XSL 1.0,請 – Athapali

回答

1

你可以設置一個變量在$角色的第一個角色如下:

​​

然後設置一個變量role2所的第二個角色(如果有的話),使用substring-after()代替substring-before()

然後:

<xsl:variable name="AllPerRole" 
    select="/dsQueryResponse/Rows/Row[ 
    contains(@EmployeeRoles,$Role1) or contains(@EmployeeRoles,$Role2)]" /> 
+0

謝謝,雖然只有問題是$ Role參數中可能有多達5個或更多逗號分隔的單詞。我們可以爲 - $ Role中的每個單詞保存每個單詞,並將它們保存爲$ Role [0],$ Role [1]等等。 – Athapali

+0

@SarikaThapaliya:爲此,您可能希望使用'tokenize()'的XSLT 1.0實現。這可以在XSLT處理器中作爲擴展使用,或者通過http://www.exslt.org/str/functions/tokenize/提供XSLT 1.0實現。 – LarsH

相關問題