应用于SDL XLIFF文件的CSS无法隐藏sdl:value元素问题咨询
问题原因与修复方案
不生效的核心原因
- 缺失命名空间声明:CSS要识别XML命名空间下的元素,必须先通过
@namespace规则显式声明前缀对应的命名空间URI,和XML里的xmlns:sdl声明完全匹配,否则带前缀的选择器不会生效。 - 无效选择器错误:你写的
sdl{display:none}是错误语法,sdl是命名空间前缀而非元素名,不存在名为sdl的元素,这条规则完全不生效。 - 规则覆盖不全:你只单独声明了部分sdl前缀元素的隐藏规则,漏掉了
sdl:seg-defs等父元素,也没有统一匹配所有sdl命名空间元素的规则,导致部分元素漏隐藏。
修复后的完整CSS代码
/* 先声明命名空间,和XML中的声明完全对应 */ @namespace "urn:oasis:names:tc:xliff:document:1.2"; @namespace sdl "http://sdl.com/FileTypes/SdlXliff/1.0"; xliff{ font-family: "Segoe UI", Roboto; font-size:12pt; line-height:1.5; background-color: red;} xliff{ margin-top:2cm; margin-left:2cm; margin-right:2cm; } /* 一次性隐藏所有sdl命名空间下的元素 */ sdl|* {display:none} body{display:table} internal-file{display:none} header{display:none} source{display:none} trans-unit{display:table-row} seg-source {display:table-cell; color: lightblue;padding:10px; } target {display:table-cell; color: yellowgreen; padding:10px; } trans-unit { width: 100%; }
补充说明
CSS命名空间选择器的标准语法为前缀|元素名,用sdl|*可以匹配所有sdl命名空间下的元素,比老旧的冒号转义写法 sdl\:value更规范,也不用逐个声明每个sdl前缀元素的隐藏规则,避免遗漏。
内容的提问来源于stack exchange,提问作者Pocket Lawyer
相关产品推荐
相关产品推荐

