XML 验证问题

标签 xml xsd xsd-validation

您好,我对 XML/XSD 完全陌生。有谁可以帮我解决这个问题: XML(给定):

<?xml version="1.0" encoding="UTF-8"?>

        <filmliste xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="filmliste.xsd"
           author="Max" datum="20.01.2016">
    <film>
        <titel> Movie</titel>
        <regiseur> abc </regiseur>
        <erscheinungsjahr> 2015 </erscheinungsjahr>
        <schauspieler> abc </schauspieler>
        <bewertung> abc </bewertung>
    </film>
    <film>
        <titel> Movie2 </titel>
        <erscheinungsjahr> 2015 </erscheinungsjahr>
        <regiseur> abc </regiseur>
        <schauspieler> abc </schauspieler>
        <genre> abc </genre>
    </film>
</filmliste>

我的架构:

        <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="filmliste">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="film">
          <xs:complexType>
            <xs:choice  >
              <xs:element type="xs:string" name="titel" maxOccurs="1"/>
              <xs:element type="xs:string" name="regiseur" maxOccurs="unbounded"/>
              <xs:element type="xs:float" name="erscheinungsjahr" maxOccurs="1"/>
              <xs:element type="xs:string" name="schauspieler" maxOccurs="unbounded"/>
              <xs:element type="xs:float" name="bewertung" minOccurs="0"/>
              <xs:element type="xs:string" name="genre"/>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute type="xs:string" name="author"/>
      <xs:attribute type="xs:string" name="datum"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

现在我的 XML 文档中有两个验证错误。 1:元素“regiseur”:不需要该元素。 2:元素“film”:该元素不是预期的。

最佳答案

  1. xsd:choice 元素不正确。它允许仅出现一个所包含的成员。也就是说,您可以拥有titelregiseur,但不能同时拥有两者。使用 xsd:all (项目以任何顺序出现)或 xsd:sequence (项目按指定顺序出现)。根据您的 XML 判断,顺序并不重要,因此应该是 xsd:all

  2. xsd:sequence@maxOccurs 的默认值为 1。因此它在 film 的第二个实例中提示。指定适当的最大界限:

    <xs:sequence maxOccurs="unbounded">
    

关于XML 验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215087/

相关文章:

java - 无法找到命名空间 http ://www. 的 NamespaceHandler mulesoft.org/schema/mule/jersey

xml - JAXB删除尾随空格,或提示无效文档

xml - 用于解析 XML 的 Lua 库/代码

c# - xPath 通过 XPathNavigator 对象而不是通过表达式求值来查找祖先

c# - 为架构 'onvif' 生成类时出错

xml - 没有元素引用的 XSD complexType 有什么用?

java - 嵌套元素中的默认命名空间

xml - 如何从 XML 文件引用本地 XSD?

javascript - javascript 中收到的响应不是 XML,而在浏览器上它显示的是 XML

java - 高效去除UTF字节序标记