s4s-elt-invalid-content.1:'schema'的内容无效。元素'complextype'无效,错位或过于频繁发生

时间:2018-01-24 02:42:48

标签: xml netbeans xsd schema

首先,抱歉英语,而不是我的母语。

我已经检查了一些关于此的帖子,他们给出的解决方案就像“atributte below elements”,但在这个XML中我没有属性。在我使用它的所有地方都给出了复杂类型错误。检查一下:

XML

normalize()

XSD

    <?xml version="1.0" encoding="UTF-8"?>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->

<!DOCTYPE Layout SYSTEM "Layout.dtd">
<Layout>

    <Encabezado>
        <Campos1>
            <campo1>FechaDelReporte</campo1>
            <campo1>FechaEsperada</campo1>
        </Campos1>

        <TipoDatos1>
            <td1>Fecha</td1>
            <td1>Fecha</td1>
        </TipoDatos1>

        <Longitudes1>
            <lenght1>10</lenght1>
            <lenght1>10</lenght1>
        </Longitudes1>

        <Descripciones1>
            <descripcion1>FechaSeRealizoReporte</descripcion1>
            <descripcion1>FechaEnQueSeEsperaInformeConInformacion</descripcion1>
        </Descripciones1>
    </Encabezado>


    <Detalle>
        <Campos2>
            <campo2>Matricula</campo2>
            <campo2>Nombre</campo2>
            <campo2>CostoCredito</campo2>
            <campo2>CreditosACursar</campo2>
            <campo2>MontoCreditos</campo2>
        </Campos2>

        <TipoDatos2>
            <td2>Numerico</td2>
            <td2>Alfabetico</td2>
            <td2>Numerico</td2>
            <td2>Numerico</td2>
            <td2>Numerico</td2>
        </TipoDatos2>

        <Longitudes2>
            <lenght2>9</lenght2>
            <lenght2>50</lenght2>
            <lenght2>4</lenght2>
            <lenght2>2</lenght2>
            <lenght2>5</lenght2>
        </Longitudes2>

        <Descripciones2>
            <descripcion2>MatriculaEstudiante</descripcion2>
            <descripcion2>NombreEstudiante</descripcion2>
            <descripcion2>CostoDeCadaCredito</descripcion2>
            <descripcion2>CreditosCursaraEstudianteEnCuatrimestre</descripcion2>
            <descripcion2>MontoTotalCreditosCursaraEstudiante</descripcion2>
        </Descripciones2>
    </Detalle>


    <PieDePagina>
        <Campos3>
            <campo3>TotalEstudiantes</campo3>
            <campo3>TotalCreditos</campo3>
            <campo3>MontoTotalCreditos</campo3>
        </Campos3>

        <TipoDatos3>
            <td3>Numerico</td3>
            <td3>Numerico</td3>
            <td3>Numerico</td3>
        </TipoDatos3>

        <Longitudes3>
            <lenght3>4</lenght3>
            <lenght3>6</lenght3>
            <lenght3>8</lenght3>
        </Longitudes3>

        <Descripciones3>
            <descripcion3>TotalEstudiantesConCreditoEducativoEnInforme</descripcion3>
            <descripcion3>TotalCreditosCursaranTodosEstudiantesEnInforme</descripcion3>
            <descripcion3>MontoTotalRequeridoPorCreditosEnInforme</descripcion3>
        </Descripciones3>
    </PieDePagina>

</Layout>

我认为我的XSD也没有正确制作。

1 个答案:

答案 0 :(得分:0)

你是对的;您的XSD配置不正确。问题包括:

  1. 您有许多名为complextype的元素的实例,但XSD没有这样的元素;它有一个complexType元素,我认为这是你的想法。

  2. 您的架构文档未指定目标命名空间,因此您声明的复杂类型和元素不与任何命名空间关联。但是你使用前缀xs将它们称为XSD命名空间。您需要内置类型integerstring的前缀,而不是Campos1type等。

  3. 您的架构文档和XML不同意如何拼写您的某些元素:您的Campos1type声明指定了一个名为Campo1的子元素,但在您的XML中,{ {1}}元素的子项名为Campos1

  4. 您的所有声明都不允许子元素重复。

  5. 可能还有其他问题;这是我不再寻找的地方。

    由于大多数XSD验证器默认寻找与输入的最外层元素匹配的顶级元素声明,因此您可能还需要声明表单

    campo1