通八洲科技

XSD的xs:whiteSpace facet怎么控制空白处理

日期:2025-12-14 00:00 / 作者:幻夢星雲
xs:whiteSpace facet 用于控制XML元素文本中空白字符的处理,仅适用于simpleType且须配合xs:restriction;取值为preserve(原样保留)、replace(换行制表符转空格)、collapse(默认,先replace再压缩首尾及连续空白)。

xs:whiteSpace facet 用于控制 XML 元素文本内容中空白字符(空格、制表符、换行符等)的处理方式,它只适用于简单类型(simpleType),且必须配合 xs:restriction 使用。

三种取值及其效果

xs:whiteSpace 只接受以下三个字符串值,每种都会改变解析器对空白的“保留”或“归一化”行为:

实际写法示例

下面定义一个姓名字段,要求严格保留用户输入的换行和缩进:


  
    
      
    
  

而如果用于普通地址字段,希望忽略多余空格,可显式写为:


  

注意事项

这个 facet 不能用在属性上,仅限元素的内容;也不能和 xs:pattern 或其他 facet 冲突使用——例如,若已用 xs:pattern 要求“非空字符串”,又设 whiteSpace="collapse",那输入纯空白会被压缩为空串,导致校验失败。

另外,它影响的是验证阶段的值归一化行为,不是序列化输出格式。也就是说,XML 实际怎么存,还是看文档本身;XSD 只规定“解析时该怎么理解这些空白”。

基本上就这些。