【发布时间】:2021-06-06 15:31:55
【问题描述】:
我正在为现有的 XML 格式创建一个 XML 模式。该架构基于已经生成 XML 的代码和示例输出。
有没有办法在模式限制中使用现有数据类型?
示例一
日期以现有 XML 格式编码为 YYYYMMDD(例如“20210308”)。这与使用 YYYY-MM-DD 的现有 XML Schema date type definition 不匹配(例如“2021-03-08”)。定义类型的最佳方法似乎是具有模式限制的字符串。我可以引用模式中的其他类型,例如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>
这可能吗?最好的定义方式是什么?
【问题讨论】: