当前位置: 首页 > 知识库问答 >
问题:

读取XML架构文档失败

郭易安
2023-03-14
<? xml version="1.0" encoding="UTF-8" ?>
<CPBISchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://ds.arch.tue.nl/7m900/assignment/cpbischema" 
        xmlns:xlink="http://www.w3.org/1999/xlink" 
        xsi:schemaLocation="http://ds.arch.tue.nl/7m900/assignment/cpbischema
                            Assignment 2.2a 7M900 NAM van de Ven.xsd">

<person id="p1">
    <login>N.Johnston</login>
    <password>johnston1508</password>
    <name>Nicholas F. Johnston</name>
    <address>199, 51st Street</address>
    <city>New Orleans</city>
    <email>n.johnston@cpbi.com</email>
    <Ref_person.requirements requirements="r2" />
    <Ref_person.collective />
</person>
<!-- etc. -->

<collective id="c1">
    <homepage href="http://www.bam.nl/" />
    <description>Koninklijke BAM groep nv</description>
    <active>yes</active>
    <Ref_collective.person person="p1"/>
    <Ref_collective.person_ManagedBy person="p2"/>
    <Ref_collective.requirements requirements="r1"/>
</collective> 
<!-- etc. -->
</CPBISchema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xlink="http://www.w3.org/1999/xlink" 
        targetNamespace="http://ds.arch.tue.nl/7m900/assignment/cpbischema"
        elementFormDefault="qualified">

<xsd:import namespace="http://www.w3.org/1999/xlink" 
            schemaLocation="xlink.xsd"/>
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" 
            schemaLocation="xml.xsd"/>

<xsd:complexType name="CPBISchema"> 
    <xsd:sequence> 
        <xsd:element name="person" minOccurs="0" maxOccurs="unbounded" /> 
        <xsd:element name="collective" minOccurs="0" maxOccurs="unbounded" /> 
        <xsd:element name="requirements" minOccurs="0" maxOccurs="unbounded" /> 
        <xsd:element name="spacerequirements" minOccurs="0" maxOccurs="unbounded" /> 
        <xsd:element name="dwelling" minOccurs="0" maxOccurs="unbounded" /> 
        <xsd:element name="space" minOccurs="0" maxOccurs="unbounded" /> 
    </xsd:sequence> 
</xsd:complexType> 
<xsd:element name="CPBISchema" type="CPBISchema" />

<xsd:complexType name="Person"> 
    <xsd:sequence> 
        <xsd:element name="login" type="xsd:string" /> 
        <xsd:element name="password">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:pattern value="[a-z]+/d{4}" />
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:element>
        <xsd:element name="name" type="xsd:string" /> 
        <xsd:element name="address" type="xsd:string" /> 
        <xsd:element name="city" type="xsd:string" /> 
        <xsd:element name="email" type="xsd:string" /> 
        <xsd:element name="Ref_person.requirements">
            <xsd:complexType>
                <xsd:attribute name="requirements" type="xsd:IDREF" use="required" />
            </xsd:complexType>
        </xsd:element>
        <xsd:element name="Ref_person.collective" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
                <xsd:attribute name="collective" type="xsd:IDREF" use="optional" />
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence> 
    <xsd:attribute name="id" type="xsd:ID" use="required" />
</xsd:complexType> 
<xsd:element name="person" type="Person" />

<xsd:complexType name="Collective">
    <xsd:sequence>
        <xsd:element name="homepage">
            <xsd:complexType>
                <xsd:attributeGroup ref="xlink:simpleLink" />
            </xsd:complexType>
        </xsd:element>
        <xsd:element name="description" type="xsd:string" />
        <xsd:element name="active" type="xsd:boolean" />
        <xsd:element name="Ref_collective.person" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
                <xsd:attribute name="person" type="xsd:IDREF" use="optional" />
            </xsd:complexType>
        </xsd:element>
        <xsd:element name="Ref_collective.person_ManagedBy">
            <xsd:complexType>
                <xsd:attribute name="person" type="xsd:IDREF" use="required" />
            </xsd:complexType>
        </xsd:element>
        <xsd:element name="Ref_collective.requirements">
            <xsd:complexType>
                <xsd:attribute name="requirements" type="xsd:IDREF" use="required" />
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" use="required" />
</xsd:complexType>
<xsd:element name="collective" type="Collective" />
</xsd:schema>

我的猜测是我没有以正确的方式声明模式文档,但我不知道错误到底在哪里。我做错了什么?

共有1个答案

郏经纬
2023-03-14

正确的XSD是。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xlink="http://www.w3.org/1999/xlink" 
        targetNamespace="http://ds.arch.tue.nl/7m900/assignment/cpbischema"
        xmlns="http://ds.arch.tue.nl/7m900/assignment/cpbischema"
        elementFormDefault="qualified">

正确的XML是…

<CPBISchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://ds.arch.tue.nl/7m900/assignment/cpbischema" 
        xmlns:xlink="http://www.w3.org/1999/xlink" 
        xsi:schemaLocation="http://ds.arch.tue.nl/7m900/assignment/cpbischema
                            Assignment2.2a7M900NAMvandeVen.xsd 
                            http://www.w3.org/1999/xlink xlink.xsd">

>

  • 必须重命名分配2.2a7m900namvandeven.XSD中的XSD分配2.2a7m900namvandeven.XSD,因为使用schemaLocation时空格会出现问题。

    必须在schemaLocation中添加xlink.xsd声明。

    有关schemaLocation的使用,请参见此参考

    此属性有两个值,用空格分隔。第一个值是要使用的命名空间。第二个值是用于该命名空间的XML架构的位置:

  •  类似资料:
    • 我正在阅读下面的文件 并将其解析为Book对象 ……。我得到错误: 道:

    • 我的spring-security.xml是 忽略XML验证警告org.XML.sax.saxParseException:schema_reference.4:无法读取架构文档“http://www.springframework.org/schema/security/spring-security-3.2.xsd”,因为1)找不到文档;2)无法读取文档;3)文档的根元素不是。 我导入的库是:

    • 但现在,当我将头中的两个位置中的“3.8”替换为“3.5”时,它就会成功执行。我只想用3.8来执行。请帮帮忙。

    • 使用eclipse时,我消除了所有错误,但当我更改xml文档中的元素内容时,超出了中设置的限制。xsd文件没有出现验证错误。我已尝试使用联机验证http://www.freeformatter.com/xml-validator-xsd.html我得到了错误“Cvc elt.1:找不到元素“DatabaseInventory”…行“4”,列“69”的声明”,但在eclipse中它验证得很好。不知道

    • 我试图用Maven设置一个示例spring-mvc helloworld程序。我确实搜索了论坛上所有可用的答案,但无法得到答案。下面是我在dispatcher-servlet.xml中得到的错误 null 谁能帮助我知道dispatcher-servelt.xml中有什么问题。感谢任何帮助

    • 导语 XML(ExtensibleMarkup Language,可扩展标记语言),是一种类似于HTML的标记语言,但它的设计目的是用来传输数据,而不是显示数据。XML的标签没有被预定义,用户需要在使用时自行进行定义。XML是W3C(万维网联盟)的推荐标准。相对于数据库表格的二维表示,XML使用的树形结构更能表现出数据的包含关系,作为一种文本文件格式,XML简单明了的特性使得它在信息存储和描述领域