gpt4 book ai didi

具有属性和限制的 XSD 自定义类型

转载 作者:行者123 更新时间:2023-12-04 21:25:44 25 4
gpt4 key购买 nike

我正在开发一个 XSD 文档来验证 XML 导入文件。导入文件的几乎所有元素都“可以”具有 ID 属性 (UPDATE)。 UPDATE 属性必须限制为 4 个可能的值,因此我将此预设类型用于属性限制...

<xs:simpleType name="MyUpDir">
<xs:restriction base="xs:string">
<xs:enumeration value="OVERWRITE"/>
<xs:enumeration value="ADDONLY" />
<xs:enumeration value="NOERASE" />
<xs:enumeration value="IGNORE" />
</xs:restriction>
</xs:simpleType>

除了属性限制,每个元素的值都受到多种预设自定义类型的限制
例子:
<xs:simpleType name="MyChar50">
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>

为了将两者结合起来,我知道我可以对每个元素进行内联操作,如下所示:
<xs:element name="FullName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="MyChar50">
<xs:attribute name="UPDATE" type="MyUpDir" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

问题是导入文件中有 1000 多个元素,每个元素都有不同的长度/regEx/精度限制(大约 20 个自定义类型),并且具有 UPDATE 属性的潜力。如果没有 UPDATE 属性,我可以通过使用自定义类型在自己的行中处理每个元素,从而大大减少 XSD 的“内容”部分。但是从我读到的内容来看,似乎为了适应自定义类型和提到的属性的潜力,我被迫使用扩展示例(最后一个示例)而不是能够为每个这样的元素保留一行.有没有办法通过创建将两者结合起来的自定义类型来进一步减少这种情况?

最佳答案

我认为您可以多做 20 种自定义类型(总共 40 种),然后使用适当的类型(w/或 w/o 属性)。在你的情况下:

<xs:complexType name="MyChar50Attr"><!-- This one has attributes -->
<xs:simpleContent>
<xs:extension base="MyChar50">
<xs:attribute name="UPDATE" type="MyUpDir"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="FullName" type="MyChar50Attr"/>

关于具有属性和限制的 XSD 自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com