【问题标题】:Read remote csv file in xsl在 xsl 中读取远程 csv 文件
【发布时间】:2013-03-21 14:56:40
【问题描述】:

我正在尝试使用 Saxon 9 将 csv 文件转换为 xml 文件。 但是当我尝试使用 xslt 函数检查存在并读取 csv 文件时遇到问题: 未解析的文本可用(), 未解析的文本()

它们对本地文件工作正常,但是当我将远程文件作为参数传递时,unparsed-text-available() 返回 false。

例如, 当我通过“D:\test\test.csv”时,它可以工作。 当我通过“\\remote-computer\test\test.csv”时,它找不到它。

这是我的 xsl 文件的一部分:

<xsl:template match="/" name="main">
  <xsl:choose>
    <xsl:when test="unparsed-text-available($pathToCSV)">
        <xsl:variable name="csv" select="unparsed-text($pathToCSV)"/>                    
            ....
    </xsl:when>
    <xsl:otherwise>
        <xsl:text>Cannot locate : </xsl:text><xsl:value-of select="$pathToCSV"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

看来 document() 可以读取远程文件,但只能读取 xml 文件。

您知道我可以在这种情况下使用的其他一些功能吗?在 xslt 或撒克逊语中?

【问题讨论】:

  • 是否可以将网络共享映射为驱动器?
  • 感谢您的回复,文件路径是别人用两个反斜杠自动生成的。如果没有其他解决方案,我会考虑这个。

标签: xslt saxon


【解决方案1】:

您必须将该路径转换为有效的 URI。

类似:

unparsed-text(concat('file://',translate($pathToCSV,'\','/')))

【讨论】:

  • 没错。但是,将 UNC 文件名转换为 URI 是一种魔法。它似乎在交替的星期二工作。更具体地说,这取决于您使用的操作系统/文件服务器软件的版本(不要问我详细信息)。
  • @MichaelKay - 非常好的观点。此外,OP 可能会派上用场的另一个功能是encode-for-uri()
猜你喜欢
  • 2010-09-30
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多