我想编写一个 XSD 来限制 xsd:token 类型的有效 XML 元素的内容,以便在验证时它们与包装在 xsd:string 中的相同内容无法区分。
即它们不包含回车符 (#xD)、换行符 (#xA) 或制表符 (#x9),以空格 (#x20) 字符开头或结尾,并且不包含两个或多个相邻字符的序列空格字符。
我认为要使用的正则表达式是这样的:
\S+( \S+)*
(一些非空格,可选[一个或多个非空格旁边的单个空格],包括始终关闭的非空格)
这适用于各种正则表达式测试工具,但我似乎无法使用 oXygen XML 编辑器进行检查;字符串中的双空格、前导和尾随空格、制表符和换行符似乎允许 XML 实例仍然通过验证。
这是 XSD 的实现:
<xs:simpleType name="Tokenized500Type">
<xs:restriction base="xs:token">
<xs:maxLength value="500"/>
<xs:minLength value="1"/>
<xs:pattern value="\S+( \S+)*"/>
</xs:restriction>
</xs:simpleType>
有没有什么特点
- XML
或者
- XSD
或者
- oXygen XML 编辑器
这阻止了这个工作?