【问题标题】:s4s-elt-invalid-content.1: The content of 'schema' is invalid. Element 'complextype' is invalid, misplaced, or occurs too oftens4s-elt-invalid-content.1:“模式”的内容无效。元素 'complextype' 无效、放错位置或过于频繁地出现
【发布时间】:2018-01-28 04:14:43
【问题描述】:

首先,对不起英语,不是我的母语。

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

XML

    <?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

    <?xml version="1.0"?>
<!--
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.
-->

<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <xs:complextype name='Layouttype'>
        <xs:sequence>
            <xs:element name='Encabezado' type='xs:Encabezadotype'> </xs:element>
            <xs:element name='Detalle' type='xs:Detalletype'> </xs:element>
            <xs:element name='PieDePagina' type='xs:PieDePaginatype'> </xs:element>
        </xs:sequence>
    </xs:complextype>

    <xs:complextype name='Encabezadotype'>
        <xs:sequence>
            <xs:element name='Campos1' type='xs:Campos1type'> </xs:element>
            <xs:element name='TipoDatos1' type='xs:TipoDatos1type'> </xs:element>
            <xs:element name='Longitudes1' type='xs:Longitudes1type'> </xs:element>
            <xs:element name='Descripciones1' type='xs:Descripciones1type'> </xs:element>
        </xs:sequence>
    </xs:complextype>

            <xs:complextype name='Campos1type'>
                <xs:sequence>
                    <xs:element name='Campo1' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='TipoDatos1type'>
                <xs:sequence>
                    <xs:element name='td1' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='Longitudes1type'>
                <xs:sequence>
                    <xs:element name='Lenght1' type='integer'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='Descripciones1type'>
                <xs:sequence>
                    <xs:element name='Descripcion1' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>



    <xs:complextype name='Detalletype'>
        <xs:sequence>
            <xs:element name='Campos2' type='xs:Campos2type'> </xs:element>
            <xs:element name='TipoDatos2' type='xs:TipoDatos2type'> </xs:element>
            <xs:element name='Longitudes2' type='xs:Longitudes2type'> </xs:element>
            <xs:element name='Descripciones2' type='xs:Descripciones2type'> </xs:element>
        </xs:sequence>
    </xs:complextype>

            <xs:complextype name='Campos2type'>
                <xs:sequence>
                    <xs:element name='Campo2' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='TipoDatos2type'>
                <xs:sequence>
                    <xs:element name='td2' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='Longitudes2type'>
                <xs:sequence>
                    <xs:element name='Lenght2' type='integer'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='Descripciones2type'>
                <xs:sequence>
                    <xs:element name='Descripcion2' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>  



    <xs:complextype name='PieDePaginatype'>
        <xs:sequence>
            <xs:element name='Campos3' type='xs:Campos3type'> </xs:element>
            <xs:element name='TipoDatos3' type='xs:TipoDatos3type'> </xs:element>
            <xs:element name='Longitudes3' type='xs:Longitudes3type'> </xs:element>
            <xs:element name='Descripciones3' type='xs:Descripciones3type'> </xs:element>
        </xs:sequence>
    </xs:complextype>

            <xs:complextype name='Campos3type'>
                <xs:sequence>
                    <xs:element name='Campo3' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='TipoDatos3type'>
                <xs:sequence>
                    <xs:element name='td3' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='Longitudes3type'>
                <xs:sequence>
                    <xs:element name='Lenght3' type='integer'> </xs:element>
                </xs:sequence>
            </xs:complextype>

            <xs:complextype name='Descripciones3type'>
                <xs:sequence>
                    <xs:element name='Descripcion3' type='string'> </xs:element>
                </xs:sequence>
            </xs:complextype>                    

</xs:schema>

我也认为我的 XSD 制作不正确。

【问题讨论】:

    标签: xml netbeans xsd schema


    【解决方案1】:

    你是对的;您的 XSD 公式不正确。其中的问题:

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

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

    3. 您的架构文档和您的 XML 在如何拼写某些元素上不一致:您的 Campos1type 声明指定了一个名为 Campo1 的子元素,但在您的 XML 中,Campos1 元素具有孩子们命名为campo1

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

    可能还有其他问题;这是我停止寻找的地方。

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

    <xs:element name="Layout" type="Layouttype"/>  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多