如何使用XSLT获取多个文件的文件名

huangapple go评论54阅读模式
英文:

How to get multiple files name using xslt

问题

如何使用XSLT获取多个文件名

我正在使用集合函数

<xsl:for-each select="collection('file:///D:/Xlst/Session 06/05-collection/?select=*.xml;recurse=yes')">

英文:

How to get multiple files name using xslt

I am using collection function

        &lt;xsl:for-each select=&quot;collection(&#39;file:///D:/Xlst/Session 06/05-collection/?select=*.xml;recurse=yes&#39;)&quot;&gt;    

答案1

得分: 1

鉴于您使用的collection查询参数是Saxon特定的,我假设您使用的是某个版本的Saxon。自从Saxon 9.8/2017版本以来,它支持带有XPath 3.1函数的XSLT 3.0,此外还有一个名为uri-collection的函数,因此在这里可能更容易使用:

<xsl:for-each select="uri-collection('file:///D:/Xlst/Session 06/05-collection/?select=*.xml;recurse=yes')"> 
   <xsl:message expand-text="yes">当前URI:{.};文件名:{tokenize(., '/')[last()]}</xsl:message>
   ..
   <xsl:apply-templates select="doc(.)"/>
   ..
</xsl:for-each>

但您尚未详细解释您要查找哪些文件名,以及您发布的代码如何失败或使用集合。

英文:

Given that the query parameters to collection you use are Saxon specific I assume you use some version of Saxon. Saxon since 9.8/2017 supports XSLT 3.0 with XPath 3.1 functions where you additionally have a function uri-collection so there it might be easier to use

    &lt;xsl:for-each select=&quot;uri-collection(&#39;file:///D:/Xlst/Session 06/05-collection/?select=*.xml;recurse=yes&#39;)&quot;&gt; 
       &lt;xsl:message expand-text=&quot;yes&quot;&gt;Current URI: {.}; file name: {tokenize(., &#39;/&#39;)[last()]}&lt;/xsl:message&gt;
       ..
       &lt;xsl:apply-templates select=&quot;doc(.)&quot;/&gt;
       ..
    &lt;/xsl:for-each&gt; 

But you haven't explained in detail which file names you are looking for and how your posted code fails or uses the collection.

huangapple
  • 本文由 发表于 2023年2月23日 20:30:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/75544860.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定