将本地XSD用于XML文档

时间:2015-04-24 12:43:22

标签: android xml xsd

这是我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<linii xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="file:///C:/Users/Cosmin/Desktop/MyApplication/app/src/main/res/values/linii.xsd">
    <linia id="1">
        <indicativ>19</indicativ>
        <nume>Auchan</nume>
        <traseu>1</traseu>
    </linia>

    <linia id="2">
        <indicativ>20</indicativ>
        <nume>Carrefour ERA</nume>
        <traseu>2</traseu>
    </linia>
</linii>

和我的XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" 
           elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="linii">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="linia" maxOccurs="unbounded" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element type="xs:byte" name="indicativ"/>
                            <xs:element type="xs:string" name="nume"/>
                            <xs:element type="xs:byte" name="traseu"/>
                        </xs:sequence>
                        <xs:attribute type="xs:byte" name="id" use="optional"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

我收到以下错误:

  

必须声明元素linii

为什么呢?我在Android Studio工作。 CoreFiling验证XML和XSD。

1 个答案:

答案 0 :(得分:0)

您的XML文档和XSD很好,您的XML文档对XSD有效。

xsi:noNamespaceSchemaLocation指定的文件格式也是正确的。 (是的,它应该有三个/分隔符 - file://加上一个(空的)机器说明符加上另一个/后面跟着文件的目录路径。大多数XML处理器(包括基于广泛使用的XML解析器的那些,Xerces)期望这种格式;遗憾的是,奇怪的球(MSXML)是可能的。)

那么,如果所有这些都是正确的,为什么处理器找不到您的XSD?

可能在文件路径的某处有一个难以发现的错误。

以下是如何在文件路径中查找错误(或错误):

  1. 在Chrome或Firefox中输入完整的本地URI(file:///C:/Users/Cosmin/Desktop/MyApplication/app/src/main/res/values/linii.xsd)。如果是XSD 出现了,你知道你对XSD的规范是正确的,而你 可能怀疑您的XML处理器有idiosyncratic expectation
  2. 如果找不到XSD,请关闭XSD,然后查看目录 显示列表。如果显示目录列表,那么您就是 拼写错误的XSD;修理它。如果未显示目录列表, 在路径上方某处仍然存在错误。继续 砍掉父目录并检查你是否看到了 目录直到找到现实路径所在的地方 您的文件系统与XSD路径中指定的内容不同。