You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XSLT转换子目录HTML文件去空白?Oxygen权限问题求助

Oxygen Editor批量处理HTML空白去除及权限问题解决

一、批量执行XSLT转换的操作步骤

  1. 打开Oxygen,顶部菜单栏点Tools > XSLT/XQuery > Transformation Scenarios
  2. 弹出窗口里点New,选XSLT Transformation
  3. 配置窗口里按以下设置:
    • XML URL:点右侧文件夹图标,选父目录S9ml,勾选窗口底部的Recurse through subdirectories,文件类型选HTML files (*.html)
    • XSL URL:选中你写的XSLT样式表文件
    • Output:选Save as,指定输出目录(要么选原目录覆盖,要么新建目录存转换后的文件,原目录操作前记得备份)
    • 切到Options标签页,勾选Batch processing,开启批量模式
  4. 点Save保存这个转换场景,再点Run就开始批量处理所有HTML文件了

二、${cfdu}变量“访问被拒绝”的解决办法

${cfdu}是Oxygen的内置变量,指向当前文件的父目录,出问题大概率是这几个原因:

  • 权限不够:Oxygen没权限读写S9ml目录。Windows右键Oxygen图标选“以管理员身份运行”,Mac/Linux用sudo启动Oxygen试试
  • 路径有特殊字符:如果目录路径里有空格、中文或者其他非ASCII字符,容易出问题。把S9ml移到简单路径下,比如D:/S9ml或者~/S9ml
  • 文件被占用:检查那些HTML文件有没有被浏览器、其他编辑器打开,被占用的文件写不进去,就会提示访问拒绝
  • 变量用错场景:${cfdu}适合单个文件转换时用,批量处理的时候直接选S9ml目录并开启递归就行,没必要依赖这个变量

补充:优化你的XSLT样式表(真正实现空白去除)

你原来的样式表只是关闭了输出缩进,但没处理HTML里的空白文本节点,等于没真正去掉空白。要彻底去除空白,加上这两个文本节点处理模板:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" indent="no" />

<!-- 匹配纯空白的文本节点,直接忽略 -->
<xsl:template match="text()[normalize-space()='']"/>
<!-- 保留非空白文本,同时去掉前后空白 -->
<xsl:template match="text()">
  <xsl:value-of select="normalize-space()"/>
</xsl:template>

<xsl:template match="*">
   <xsl:copy>
      <xsl:copy-of select="@*" />
      <xsl:apply-templates />
   </xsl:copy>
</xsl:template>

<xsl:template match="comment()|processing-instruction()">
   <xsl:copy />
</xsl:template>

</xsl:stylesheet>

内容的提问来源于stack exchange,提问作者Anudeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:15:30