我正在使用氧气,正在使用撒克逊语。
我正在搜索一堆xml文件,以搜索jpg名称。我在创造 变量如下:
<xsl:variable name="allxml"
select="collection('..//xml/?select=*.xml;recurse=yes')"/>
<xsl:variable name="jpgs" select="$allxml//element/@n"/>
$ jpgs看起来像:
dir1 / jpg001.jpg dir1 / jpg002.jpg dir1 / jpg003.jpg
等
我想删除目录信息,但是我很难。我试过使用
tokenize()
和substring-after()
,但都返回相似的错误。
“不允许将一个以上项目的序列作为的第一个参数 fn:tokenize()(“ dir1 / jpg001.jpg”,“ dir1 / jpg002.jpg”“ dir1 / jpg003.jpg”)。
因为我不知道我在做什么,所以我不知道我在做什么错。谁能帮我解决这个问题?
答案 0 :(得分:0)
您没有显示代码,但是从错误消息中听起来好像您尝试应用tokenize($jpgs)
。
错误消息告诉您tokenize()
的第一个参数必须是单个字符串,但是您要给它提供一系列字符串。
您需要将tokenize()
应用于$jpgs
值序列中的每个项目。
您可以使用xsl:for-each
对序列中的项目进行迭代:
<xsl:for-each select="$jpgs">
<xsl:sequence select="tokenize(., '/')[last()] "/>
</xsl:for-each>
或者您可以使用for表达式:
<xsl:sequence select="for $path in $jpgs return tokenize($path, '/')[last()] "/>