Xml 限制XSD中没有自定义类型的属性

Xml 限制XSD中没有自定义类型的属性,xml,xsd,custom-attributes,restriction,Xml,Xsd,Custom Attributes,Restriction,我正在寻找一种使xs:string类型的属性具有最小长度的方法。我已经找到了一种方法,但解决方案是引入一种新类型。当我使用XML映射/绑定时,它会导致一个闪亮的新类,它的存在和额外的方法调用会使代码变得混乱,这是完全无用的——它仍然只是一个普通的旧字符串 有没有办法避免引入自定义类型?您不需要声明新的命名类型-只需将限制放在属性定义中即可: <xs:element name="foo"> <xs:complexType> <xs:attrib

我正在寻找一种使xs:string类型的属性具有最小长度的方法。我已经找到了一种方法,但解决方案是引入一种新类型。当我使用XML映射/绑定时,它会导致一个闪亮的新类,它的存在和额外的方法调用会使代码变得混乱,这是完全无用的——它仍然只是一个普通的旧字符串


有没有办法避免引入自定义类型?

您不需要声明新的命名类型-只需将限制放在属性定义中即可:

<xs:element name="foo">
    <xs:complexType>
        <xs:attribute name="bar">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:minLength value="5" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
</xs:element>

您不需要声明新的命名类型-只需将限制放在属性定义中即可:

<xs:element name="foo">
    <xs:complexType>
        <xs:attribute name="bar">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:minLength value="5" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
</xs:element>

谢谢你,费尔伯特。这样我就不需要介绍一种新的类型。不幸的是,在为Java生成JAXB类XML绑定时,限制只保留在注释中,而没有在代码本身中实施,因此取消/编组无效对象仍然有效。但是在验证过程中会发现违规行为,因此有一种方法可以强制执行限制,而不必在生成代码后调整代码本身,这是一种痛苦,因为代码是在每次生成过程中生成的。谢谢你,Filburt。这样我就不需要介绍一种新的类型。不幸的是,在为Java生成JAXB类XML绑定时,限制只保留在注释中,而没有在代码本身中实施,因此取消/编组无效对象仍然有效。但是,在验证过程中会发现违规行为,因此有一种方法可以强制执行限制,而不必在生成代码后对代码本身进行调整,这是一种痛苦,因为代码是在每次生成过程中生成的。Filburt,我真的为我的长期AFK感到抱歉。但这是有原因的。我知道你的贡献被忽略时的感觉,所以请原谅给你带来的不便。但这是有原因的。我知道当你的贡献被忽略时的感觉,所以请原谅给你带来的不便。