如何在 XSD 限制中允许换行?

How do I allow newlines in an XSD restriction?

我正在解析一些 XML 文件,其中某些元素具有内部 CDATA 文本(并且必须包含非空数量的非空白),其中包含需要保留的换行符。我试图写一个 XSD 来验证这一点,但我最初尝试 .* 作为限制失败了,因为至少在我使用的 Python xmlschema 库中,一个“。”不匹配换行符。

The solution was to use "\S", which matches up against any non-whitespace and "\s", which matches up against any whitespace。以下表示此“脚本”元素类型必须至少有一个非空白字符,可以用任意数量的空白或非空白字符括起来:

<xs:simpleType name="script">
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="preserve"/>
    <xs:pattern value="[\s\S]*\S[\s\S]*"/>
  </xs:restriction>
</xs:simpleType>