xml - XML 模式:如何更改文档中所有字符串的 maxLength
问题描述
我想在一个地方设置架构范围的maxLength
值,xsd:string
并让它适用于任何xsd:string
使用的地方。例如,我想将所有字符串限制为 50 个字符。
我知道我可以做到这一点...
<xsd:simpleType name="MaxLen50">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
...
<xsd:element name="Foo" type="MaxLen50" />
<xsd:element name="Bar" type="MaxLen50" />
<xsd:element name="Baz" type="MaxLen50" />
...但问题是我必须转到 XSD 中的每个字符串并将其xsd:string
从MaxLen50
. 我只想设置默认值xsd:string
并将其应用于所有元素type="xsd:string"
解决方案
您混淆了内置类型和用户定义类型。
内置/原始类型是用于创建用户定义类型的基本构建块。您不会直接更改内置类型。
您有正确的想法将 a 定义xsd:simpleType
为 a xsd:restriction
ofxsd:string
并在需要时使用该用户定义的类型。只是不要将长度烘焙到类型的名称中。(此外,类型名称应该是基于域的,而不是基于实现的。)这样您就可以50
根据要求在一个地方进行调整。
最后,请注意,如果您真的想50
在已发布的 XSD 中更改 XSD 现有文档、代码、API 等的版本,更值得您关注的维护问题。
推荐阅读
- javascript - 使用 ES6 编写的 npm 模块和 react-scripts
- delphi - 检查时间段是否重叠
- typescript - 是否有任何其他语言支持 Typescript 的映射类型和条件类型功能?
- react-native - 为什么我的变量没有在 React Native 中正确传递?
- postgresql - PGAdmin / Postgres:无法将时间戳数据写入 Postgres (2018-04-18 05:40:28)
- verilog - 将 3 个触发器分配给敏感度列表
- ruby-on-rails - 在 Ubuntu 16.04 上安装 bcrypt (gcc: 错误:)
- ios - Alamofire 4.7 中的自定义 SessionManager 立即取消
- webpack - 将 THREE.js json 加载器与 webpack 一起使用
- javascript - 将数据从子组件传递给父组件和另一个子组件 React Js