发现以元素“国家”开头的无效内容。应为“country”之一。“10”行,“14”列

Posted

技术标签:

【中文标题】发现以元素“国家”开头的无效内容。应为“country”之一。“10”行,“14”列【英文标题】:Invalid Content Was Found Starting With Element 'country'. One Of 'country' Is Expected.. Line '10', Column '14'发现以元素“国家”开头的无效内容。应为“country”之一。“10”行,“14”列 【发布时间】:2013-06-14 22:24:21 【问题描述】:

我正在尝试解决此问题,但无法理解此错误的根本原因:

发现以元素“国家”开头的无效内容。应为“country”之一。第 10 行,第 14 列

这是我的 xml:

<?xml version="1.0"?>
<!--DTD file reference-->
<!--<!DOCTYPE countries SYSTEM "http://localhost:8080/ajaxprac/file.dtd">-->

<!--DTD file reference-->
<!---->
<countries xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns="http://localhost:8080/ajaxprac"
           xsi:schemaLocation="http://localhost:8080/ajaxprac fileSchema.xsd">
    <country>
        <name>pakistan</name>
        <cities>
            <city>Kassowal</city>
            <city>Faisalabad</city>
            <city>Multan</city>
        </cities>
    </country>
    <country>
        <name>india</name>
        <cities>
            <city>Agra</city>
            <city>Amritsar</city>
            <city>Ayodhya</city>
        </cities>
    </country>
</countries>

这个 xsd 文件是:

<?xml version="1.0"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->

<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://localhost:8080/ajaxprac"
           xmlns="http://localhost:8080/ajaxprac">

    <xs:element name="countries" type="countriesType"/>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="city" type="xs:string"/>

    <xs:complexType name="countriesType">
        <xs:sequence>
            <xs:element name="country" type="countryType"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="countryType">
        <xs:sequence>
            <xs:element ref="name"/>
            <xs:element name="cities" type="citiesType"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="citiesType">
        <xs:sequence>
            <xs:element ref="city"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

【问题讨论】:

【参考方案1】:

正如所写,您的架构期望“全局”countriesnamecity 元素位于 http://localhost:8080/ajaxprac 命名空间中,但“本地”元素(那些在 complexType 中声明的元素,即countrycities) 在 no 命名空间中。您可能想添加elementFormDefault="qualified",即

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

targetNamespace 应用于局部和全局元素声明。

【讨论】:

感谢伊恩·罗伯茨 :-)。我为这个问题浪费了两天时间,你的帮助解决了我的问题。 elementFormDefault="qualified" 丢失:-p 很难相信该错误消息是多么无用,哈哈。无论如何,您的提示是正确的——我有一个“全局”环绕标签,其 xmlns= 没有前缀。为全局标签及其 xmlns 和 viola 添加前缀,问题解决了。

以上是关于发现以元素“国家”开头的无效内容。应为“country”之一。“10”行,“14”列的主要内容,如果未能解决你的问题,请参考以下文章

无效的 ReportDefinition Xml:cvc-complex-type.2.4.a:发现以元素“运算符”开头的无效内容

发现以元素'"http://maven.apache.org/POM/4.0.0":plugins' 开头的无效内容

我的Android进阶之旅解决Android Studio报错:发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头。

我的Android进阶之旅解决Android Studio报错:发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头。

cvc-complex-type.2.4.a:发现以元素“init-param”开头的无效内容

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头