如何在 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>
我正在解析一些 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>