微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在模式限制中使用现有的 XML 模式类型定义

如何解决在模式限制中使用现有的 XML 模式类型定义

我正在为现有的 XML 格式创建一个 XML 架构。该架构基于已生成 XML 的代码和示例输出

有没有办法在模式限制中使用现有的数据类型?

示例一

日期以现有的 XML 格式编码为 YYYYMMDD(例如“20210308”)。这与使用 YYYY-MM-DD(例如“2021-03-08”)的现有 XML Schema date type definition 不匹配。定义类型的最佳方法似乎是具有模式限制的字符串。我可以在模式中引用其他类型,例如 gYearyearFrag 吗?那会让我写

<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 举报,一经查实,本站将立刻删除。