我当前正在创建XSD文件。根据XSD的XML文件应包含一个用于捕获文件名的元素,例如<filename> This is a fancy file with a name that contains spaces + an Ümlaut (and additional challenging characters like brackets and a plus sign).pdf </filename>
。
为避免文件名会给典型的文件系统带来麻烦,我想对<filename>
的类型使用适当的限制。
什么是适合该类型的实用限制?
<xs:whiteSpace value="collapse" />
是一个好的开始。显然,这不能防止换行符,禁止的Windows旧文件名(例如CON,PRN等),可能破坏文件名的精美Unicode字符等。
那么,这里还有什么进一步的限制呢?
<xs:element name="filename">
<xs:simpleType>
<xs:restriction base="xs:string"> <!-- what to use as base? -->
<xs:whiteSpace value="collapse" />
<!-- how to further restrict here? -->
</xs:restriction>
</xs:simpleType>
</xs:element>