2014-11-22 55 views
0

我得到graphml文件的不同@source屬性值:不同的值,包含函數失敗

<xsl:variable name="sources" 
    select="distinct-values(root()//gml:edge/@source)"/> 

然後,我嘗試檢查這是否字符串包含搜索詞或犯規:

<xsl:value-of select="contains($sources, 'N')"/> 

但是,轉換失敗,出現錯誤:

Error in XPath 2.0 expression 
Too many items 

是什麼原因?

PS:FN:匹配導致了同樣的結果(誤差)

回答

0

我找到解決辦法

<xsl:variable name="sources"> 
    <xsl:for-each select="distinct-values(root()//gml:edge/@source)"> 
     <xsl:value-of select="."/><xsl:text>;</xsl:text> 
</xsl:for-each> 

這樣,FN:含有細微的作品

2

的理由讓你的錯誤是contains函數是一個字符串函數,並且需要一個字符串作爲第一個參數。 distinct-values函數返回一個序列,如果該序列包含多個值,那麼contains函數將會出錯。

檢查,如果您的不同值的方式包含特定值如下:

<xsl:value-of select="$sources[. ='N']"/> 
+1

這是一個非常常見的錯誤,人們認爲包含(X,Y)測試是否X是包含一個序列項目Y.不要試圖猜測他們的名字有什麼功能! – 2014-11-23 10:46:04