java - 元素中的 xsd 验证抛出内容类型异常

标签 java xml validation xsd

我有一个元素 A,它可以是简单元素,也可以是动态创建的复杂元素。

示例 xml 在这里:

 <A>john</A>

 <A>
    <B>kathy</B>
    <C> bat </C>
 </A>

我的xsd是这样的:

        <xsd:element name="A">
                    <xsd:complexType>
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                            <xsd:sequence>
                                <xsd:element name="B" minOccurs="0" maxOccurs="unbounded" />
                                <xsd:element name="C" minOccurs="0" maxOccurs="unbounded" />
                            </xsd:sequence>
                        </xsd:choice>
                    </xsd:complexType>
                </xsd:element>

但在这里我遇到了一个异常:

元素“A”不能有字符 [children],因为该类型的内容类型是纯元素

最佳答案

您需要在类型中指定混合内容:

<xsd:element name="A">
  <xs:complexType mixed="true">
   <xsd:choice minOccurs="0" maxOccurs="unbounded">
     <xsd:sequence>
       <xsd:element name="B" minOccurs="0" maxOccurs="unbounded" />
       <xsd:element name="C" minOccurs="0" maxOccurs="unbounded" />
     </xsd:sequence>
   </xsd:choice>
 </xsd:complexType>

此外,在选项中包含一个序列也有点多余。你要么想要一个序列,要么不想要。

希望对您有所帮助。

关于java - 元素中的 xsd 验证抛出内容类型异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036499/

相关文章:

java - 没有可用的 'concert.PerformanceImp' 类型的合格 bean

java - 无法在新场景中移动 TextFlow

java - 解析从谷歌翻译的 translate_a 返回的响应

java - 尝试 Autowiring javax.validation.Validator 时奇怪的 spring-boot 行为

asp.net-mvc - 如何从不在数据库表中的模型创建验证字段?使用 MVC4

java - 如何在 IntelliJ 中使用 JCurses?

python - markup.py 如何在标签中使用 ':'

xml - Notepad++ XML 自动完成/添加结束标记?

python lxml使用iterparse编辑输出xml

javascript - 根据本地化和使用 javascript 更改 HTML5 输入验证错误文本