You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML汽车数据库XSD验证问题:元素属性与子元素定义错误

问题解决方案

核心问题分析

  1. numero 属性位置错误:XSD中你把numero属性定义在了根元素coches上,但XML里却将其放在coche元素上,导致验证报错。
  2. revision 元素无法重复使用:当前XSD中revision元素默认仅能出现一次,无法添加多条维修记录。

修正后的XSD代码

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="coches">
        <xs:complexType mixed="true">
            <xs:sequence> 
                <xs:element name="coche" minOccurs="1" maxOccurs="unbounded"> 
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="marca" type="xs:string"></xs:element>
                            <xs:element name="modelo" type="xs:string"></xs:element>
                            <xs:element name="anio" type="anio"></xs:element>
                            <xs:element name="color" type="xs:string"></xs:element>
                            <xs:element name="precio">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="precio">
                                            <xs:attribute name="moneda" type="moneda" />
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="potencia" type="xs:string"></xs:element>
                            <xs:element name="combustible" type="combustible"></xs:element>
                            <xs:element name="transmision" type="transmision"></xs:element>
                            <xs:element name="kilometraje" type="kilometraje"></xs:element>
                            <xs:element name="revisiones">
                                <xs:complexType>
                                    <xs:sequence>
                                        <!-- 允许多个revision元素 -->
                                        <xs:element name="revision" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="observaciones" type="xs:string"></xs:element>
                                                </xs:sequence>
                                                <xs:attribute name="fecha" type="xs:string" use="required"></xs:attribute>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <!-- 将numero属性移到coche元素的complexType下 -->
                        <xs:attribute name="numero" type="xs:integer"></xs:attribute>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="anio">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="1950" />
            <xs:maxInclusive value="2025" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="moneda">
        <xs:restriction base="xs:string">
            <xs:enumeration value="EUR" />
            <xs:enumeration value="USD" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="combustible">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Gasolina" />
            <xs:enumeration value="GLP" />
            <xs:enumeration value="Diesel" />
            <xs:enumeration value="hibrido" />
            <xs:enumeration value="electrico" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="transmision">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Manual" />
            <xs:enumeration value="Automático" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="kilometraje">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="precio">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"></xs:minInclusive>
        </xs:restriction>
    </xs:simpleType>

</xs:schema>

关键修改说明

  • 调整numero属性位置:将原本属于coches元素的numero属性移动到coche元素的xs:complexType节点下,使XML中coche元素的numero属性能被正确识别。
  • 允许多个revision元素:在xs:element name="revision"标签中添加maxOccurs="unbounded",让<revisiones>节点下可包含任意数量的<revision>子元素。

验证后的XML示例(支持多条维修记录)

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

<coches xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="coches.xsd">
    <coche numero="1">
        <marca>Audi</marca>
        <modelo>A1 8X</modelo>
        <anio>2010</anio>
        <color>negro brillante</color>
        <precio moneda="EUR">8600</precio>
        <potencia>105</potencia>
        <combustible>Gasolina</combustible>
        <transmision>Manual</transmision>
        <kilometraje>101001</kilometraje>
        <revisiones>
            <revision fecha="21/01/2025">
                <observaciones>Retrovisor roto y luz trasera fundida</observaciones>
            </revision>
            <revision fecha="15/03/2025">
                <observaciones>Cambio de aceite y filtro</observaciones>
            </revision>
        </revisiones>
    </coche>
</coches>

内容的提问来源于stack exchange,提问作者Cristina García

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:44:52