我从@XmlElement
的JAXB文档中得到了这个如果required()为true,那么Javabean property被映射到XML模式 元素声明 的minOccurs = “1”。对于a,maxOccurs为“1” 单值财产和“无界” 对于多值财产。
然而,当我说
时@XmlElement(name = "Name", required = true, nillable = false)
我在.xsd
中得到以下内容<xs:element name="Name" type="xs:string"/>
我想知道如何让minOccurs等于1.似乎required = true
导致minOccurs
消失
修改 我意识到默认值是1.无论如何,minOccurs在.xsd中显示为1
EDIT2 我正在使用JAXBContext.generateSchema来生成架构(FYI)
答案 0 :(得分:2)
JAXB规范定义了行为:
如果required()为true,那么Javabean property被映射到XML模式 元素声明 的minOccurs = “1”。对于a,maxOccurs为“1” 单值财产和“无界” 对于多值财产。
根据此规则,个人实施(Metro,EclipseLink MOXy,Apache JaxMe)可根据需要自由生成XML模式。 Metro和MOXy(我是技术主管)选择使用缺少minOccurs属性来指示minOccurs =“1”。
答案 1 :(得分:1)
我不是JAXB专家,但我相信“minOccurs”默认情况下使用xs:element标记设置为1。换句话说,如果标记中缺少“minOccurs”属性,则其默认值为1.
编辑抱歉,在为时已晚之前没有看到您的编辑!
答案 2 :(得分:0)
xs:element的默认值是minOccurs = 1。 所以它可以省略属性并且仍然具有相同的含义,这可能就是jaxb正在做的事情。
编辑:太晚看你的编辑了。我从未见过如何做到这一点,但这并不意味着它不可能。