xsd验证

ztmd8pv5  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(328)

在我的应用程序中,我们使用xsd验证来检查给定的文本输入是否大于或等于0。这很好,但当我们输入000或001这样的数字时,它也会验证它。因此,当我们写入文件时,它会写入000和001,但我们不想验证它们。我们希望它们是0或1,而不是000或001。
如何启用它并在开始时修剪00?是否有xsd类型或限制?
如何解决这个问题?

7lrncoxx

7lrncoxx1#

我不确定您是否只想验证从文件中写入或读取的内容,或者同时更改它。xml架构无法更改数据。假设要验证的内容是字符串类型。可以使用regex模式检查内容是否正确。下面的示例检查字符串中的最后一个字符是0还是1,并且它之前的所有字符都必须是0。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="root">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="input">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:pattern value="(0*[0-1])?[0-1]"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

收到评论后更新
如果您只想批准单个数字在0到9之间的xml结构,可以使用下面的示例。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="root">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="input">
                    <xs:simpleType>
                        <xs:restriction base="xs:int">
                            <xs:pattern value="[0-9]"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

相关问题