【问题标题】:Exception: cvc-complex-type.2.1: Element 'Date' must have no character or element information item [children]例外:cvc-complex-type.2.1:元素“日期”必须没有字符或元素信息项 [children]
【发布时间】:2016-07-20 21:22:08
【问题描述】:

我正在使用 XML 文件验证 XSD 文件,但出现以下异常:

例外: cvc-complex-type.2.1:元素“日期”必须没有字符或元素信息项 [children],因为类型的 内容类型为空。

基本上在我的 XML 文件中Date 元素是空的

我的 XML 日期元素:

<Date> </Date>

生成的 XSD 文件:

<xs:element name="Date">
  <xs:complexType/>
</xs:element>

基于此,我创建了 XSD 文件并验证它是否超出异常

但如果我在日期元素之间没有空格。

例子:

<Date></Date>

然后它工作正常。我该如何处理这个空白空间?

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    生成器弄错了:

    <Date> </Date>
    

    <Date></Date>
    

    不等价。

    要同时接受两者,请改用 Date 的以下定义:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="Date">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse"/>
            <xs:pattern value=""/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:schema>
    

    也许有一个设置可以让你的生成器忽略Date中的空格,这样它就可以被引导自动生成上述定义;否则,您可能只需要手动替换它。

    如果您也有兴趣在 Date 元素中实际允许日期,请参阅 Allow XSD date element to be empty string

    【讨论】:

      【解决方案2】:

      在我看来,好像一切都在正常运行。如果架构将元素定义为具有空内容,则不允许使用空白内容。如果你想允许空格,那么不要定义一个空的内容模型。例如,您可以使用一种简单类型的 xs:string 来定义它,该类型受只允许空格的模式限制。

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-20
        • 1970-01-01
        • 2014-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多