如何解决在模式限制中使用现有的 XML 模式类型定义
我正在为现有的 XML 格式创建一个 XML 架构。该架构基于已生成 XML 的代码和示例输出。
有没有办法在模式限制中使用现有的数据类型?
示例一
日期以现有的 XML 格式编码为 YYYYMMDD(例如“20210308”)。这与使用 YYYY-MM-DD(例如“2021-03-08”)的现有 XML Schema date type definition 不匹配。定义类型的最佳方法似乎是具有模式限制的字符串。我可以在模式中引用其他类型,例如 gYear 或 yearFrag 吗?那会让我写
<xs:pattern value="&yearFrag;&monthFrag;&dayFrag;" />
代替
<xs:pattern value="-?([1-9][0-9]{3,}|0[0-9]{3})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])" />
这可能吗?定义这种类型的最佳方法是什么?
示例二
有一个以 XML 格式编码的字符串,其中包含先前定义的自定义简单类型。我可以在新模式中引用吗?
例如第一种类型:
<xs:simpleType name="myCustomId">
<xs:restriction base="xs:string">
<xs:pattern value="m[0-5]t[0-9]{0,10}" />
</xs:restriction>
</xs:simpleType>
预期重复使用的示例:
<xs:simpleType name="idBasedname">
<xs:restriction base="xs:string">
<xs:pattern value="export_&myCustomId;_[crs]\.csv" />
</xs:restriction>
</xs:simpleType>
这可能吗?定义它的最佳方式是什么?
解决方法
我可以在模式中引用其他类型,例如 gYear 或 yearFrag 吗?
不,XML Schema 正则表达式子集在此处定义:https://www.w3.org/TR/xmlschema-2/#regexs 它不包括对 XSD 语法片段的任何特殊支持。
有一个以 XML 格式编码的字符串,其中包含先前定义的自定义简单类型。我可以在新模式中引用吗?
我没有比这更好的了:https://www.w3.org/TR/xmlschema-2/#rf-pattern 特别注意标题为“多种模式”的部分
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。