gpt4 book ai didi

xsd - 如何使用 XML 模式允许输入的值为空?

转载 作者:行者123 更新时间:2023-12-02 12:19:52 27 4
gpt4 key购买 nike

我有一些我无法控制的 XML 文档。它们的结构定义明确,但在一堆 PDF 中进行了描述,尽管这些 PDF 非常精确,但并不会使自动验证变得非常容易处理。我正在尝试编写一个 XML 模式以使这些 PDF 中的(大部分)规则可执行。

所有元素都是强制性的。但其中大约一半可以是空的或具有简单的键入内容。

在为这些元素定义数据类型时,我为每个元素定义了两个版本:一个“正常”版本,另一个可以为空。我通过使用数据类型定义联合来做到这一点:

<xs:simpleType name="empty">
<xs:restriction base="xs:string">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="codPostal">
<xs:restriction base="xs:string">
<xs:pattern value="^[0-9]{4}-[0-9]{3}$"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="opt_codPostal">
<xs:union memberTypes="empty codPostal"/>
</xs:simpleType>

是否有一种重复性较低的方法?

最佳答案

您可以使用 xs:nillable。

在 XSD 中

<xs:simpleType name="codPostal">
<xs:restriction base="xs:string">
<xs:pattern value="^[0-9]{4}-[0-9]{3}$"/>
</xs:restriction>
</xs:simpleType>

<xs:element name="OptionalString" type="codPostal" nillable="true" />

在文档中

<OptionalString xsi:nil="true" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

这对于非字符串类型(例如日期时间等)最有用,因为对于字符串,您可以只使用零长度。

<OptionalString /> 

不幸的是,您需要在文档上指定“nil”属性。据我所知,执行您想要的操作的唯一非侵入性方法是您已经选择的联合类型方法。

关于xsd - 如何使用 XML 模式允许输入的值为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816862/

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