编码为 uri 和绝对 Windows 路径

2024-04-11

我有一个 XML 文件,其中包含以文件名开头的部分:

<madcapfile filename="C:\1\Outputpath\The 7% solution.xlf">

每个部分必须保存到单独的文件中。 这是我的 XSLT:

<xsl:template match="madcapfile">
  <xsl:variable name="file1" select="concat('file:///',@filename)"/>
  <xsl:variable name="file2" select="encode-for-uri($file1)"/>
  <xsl:variable name="file3" select="concat('file:///',replace(@filename,'%','%25'))"/>
  <xsl:result-document method="xml" href="{$file2}">  
    <xsl:apply-templates select="node()"/>
  </xsl:result-document>
</xsl:template>

变量 file1、file2、file3 是我迄今为止的尝试。 变量 file1 在所有文件的正确位置创建文件(文件名中带有 % 的文件除外)。
变量 file3 在所有文件的正确位置创建文件,因此这是一个可行的解决方案。

使用变量 file2 会出现错误:XSLT 处理器 (Saxon 9.7) 尝试将文件写入

C:\Path-to-XSLT\C:\1\Outputpath\The 7% solution.xlf  

即它看起来像encode-for-uri 将其输入视为相对路径,即使它以“C:\”开头
我还尝试将“file:///”添加到路径的开头,这不会改变encode-for-uri的行为。

有没有办法强制encode-for-uri 将其输入视为绝对路径?


有两个问题,href属性需要一个 URI,并且在 URI 中分隔符是/并不是\用于 Windows 文件路径。此外,使用encode-for-uri转义任何反斜杠。

因此,要解决这个问题,您应该用正斜杠替换任何反斜杠,然后您可以使用encode-for-uri转义百分号:

concat('file:///', encode-for-uri(replace(@filename, '\\', '/')))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编码为 uri 和绝对 Windows 路径 的相关文章

随机推荐

  • Nginx:如何仅将主域与 server_name 匹配

    我的目标是重定向example com into www example com不重定向any子域到www 这就是我所拥有的 server listen 443 server name example com return 301 http
  • 使用 Phonegap 安装 Cordova 插件 - 无 Cordova.plist

    我正在尝试为我的应用程序安装一个插件 运行良好 该插件使用 Cordova 和 PhoneGap 框架在 XCode 中编译 根据插件的说明 我应该添加一个密钥Cordova plist文件 但我在我的层次结构中找不到它 这是我的 XCod
  • 如何使用 pincode 作为输入查找纬度和经度列表

    有什么方法可以使用 zip pincode 找到纬度和经度列表吗 Input 560103 Output 12 123456 72 123456 12 123654 72 366666 12 123456 72 123456 on goog
  • 用于将 DataTable 替换为集合的最佳 C# 泛型类?

    我正在尝试将遗留的 C NET 1 1 应用程序带入现代时代 我们使用 DataTable 来收集可能是业务对象的内容 鉴于大多数代码认为它正在与 DataRow 的接口进行通信 那么哪种通用集合可以实现最不痛苦的转换 如果我正确地阅读了您
  • std::stack 是否公开迭代器?

    是否std stack在 C STL 中公开底层容器的任何迭代器 还是应该直接使用该容器 根据堆栈的定义 堆栈没有迭代器 如果您需要带有迭代器的堆栈 则需要自己在其他容器 std list std vector 等 之上实现它 堆栈文档在这
  • Python 导入:导入不带 .py 扩展名的模块?

    在我开发的Python系统中 我们通常有这种模块结构 mymodule mymodule mymodule feature py mymodule test feature py 这使得我们的小测试框架可以轻松导入 test feature
  • 我们如何使用 hibernate criteria API 将列排序为 int?

    您好 我想使用 hibernate Criteria API 从数据库中获取数据 该数据应按某些列作为数字排序 该列在 DB 中定义为 varchar 但我必须以数字形式获取 我在使用标准 API 时遇到问题 因为它仅像字符串一样排序 前任
  • SQLite 中的 IF 语句:更新还是插入?

    我无法使用 SQLite 运行此查询 if 0 lt select COUNT from Repetition where Word behnam and Topic mine begin update Repetition set Cou
  • jqplot:分离刻度和系列值

    我有一项 Web 服务 可以在一个数组中发送日期值 针对 x 轴 它将 y 轴值发送到另一个数组中 是否可以让 jqPlot 创建一个包含 2 个这样的数组的图表 文档似乎表明这是可能的 我知道将日期和系列值组合在一个数组中是有效的 希望避
  • 无法使用 phpexcel 上传文件文件路径问题

    我目前正在使用 phpexcel 库来读取我的 excel 文件 该文件将由用户上传 但我现在不能 我正在使用这段代码 我现在无法获得文件路径 如果有人可以告诉我 如何覆盖现有文件并重命名输入文件 文件正在传输到文件夹 但我无法在这一行中获
  • 如何在不运行docker镜像的情况下查看其中的文件? (注意:这个问题是如何在不运行容器的情况下读取文件)[重复]

    这个问题在这里已经有答案了 有时运行 docker 镜像会失败 因此无法通过 ssh 进入容器 在这种情况下 我们如何查看容器内的内容 存在一个问题 但被错误地标记为重复 如何在不运行docker镜像的情况下浏览它 https stacko
  • Android 中的 main() 在哪里?

    我是 Android 新手 正在研究框架 这迫使我问这个问题 由于我们要在 Android 中扩展 Activity 因此必须有main某处Activity或者有一个隐藏类Activity包含的工具main 我到处找 但没找到 如果有人能对
  • MySQL auto_increment步长是如何确定的

    我有一个网页表 主键作为 URL 的哈希值 还有一个 auto increment ID 列 它也是一个唯一键 我有点困惑的是为什么连续插入不会将 ID 字段增加 1 当我第一次创建表并执行一次插入时 第一个 id 是 1 第二次插入生成的
  • 需要用C#创建一个动画GIF

    我尝试过各种解决方案 例如 http bloggingabout net blogs rick archive 2005 05 10 3830 aspx http bloggingabout net blogs rick archive 2
  • 数组数组上的 ng-repeat,按子数组索引排序

    假设我有这个对象 var rows 1 2 3 4 11 222 3333 4444 鉴于此 以及这个模板 tr td cell td tr 我怎样才能订购ng repeat通过每行的第二个 列 索引处的值1给定的row元素 我是否正确地认
  • 用Python计算稀疏矩阵的N个最小特征值

    我想在Python中找到稀疏矩阵的N个最小特征值 我尝试过使用scipy sparse linalg eigen arpack包 但计算最小特征值的速度非常慢 我在某处读到有一个移位反转模式 但是当我尝试使用它时 我收到一条错误消息 告诉我
  • 将 WordPress 站点从本地主机移动到实时服务器

    我已将 WordPress 网站从本地主机服务器移至实时服务器 我已经很好地编辑了 wp config php 文件 并将站点 url 添加到数据库中的 home 和 SiteURL 列 但我仍然无法在线访问我的管理页面 并且我的站点仍然显
  • 如何从 iOS 以编程方式访问 Safari 的阅读列表

    是否可以从 iOS 以编程方式访问 Safari 的 阅读列表 我知道可以从 Mac 上执行此操作 如下所述 谢谢 国标 iOS 7 添加了一个 API 来将项目添加到阅读列表中 import
  • 将事件传递给父视图?

    我有一个包含五个 TextView 的布局 当用户单击五个 TextView 中的任何一个时 它将执行相同的操作 打开另一个 Activity 因此 五个 TextView 的 OnClickerListener 行为是相同的 我是否可能只
  • 编码为 uri 和绝对 Windows 路径

    我有一个 XML 文件 其中包含以文件名开头的部分