XSL中删除变量

时间:2018-10-14 02:04:26

标签: xslt

我正在使用氧气,正在使用撒克逊语。

我正在搜索一堆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”)。

因为我不知道我在做什么,所以我不知道我在做什么错。谁能帮我解决这个问题?

1 个答案:

答案 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()] "/>