0

我是 XML 新手,需要将 XML 文件导入 Access 或 Excel 2010。

文件需要引用多个模式。这是我到目前为止所拥有的,但它不起作用。有人能指出我正确的方向吗?还是我完全错了?

 <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns="http://www.dcsf.gov.uk/schemas/cbds" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xsi:SchemaLocation="File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Schemas\SC13-CBDS-Standard-Header.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Schemas\SC13-Spring-PupilModule.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Schemas\SC13-Spring-SchoolModule.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Schemas\SchoolCensus13-Spring.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\bs7666.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\EstabNoType.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\LEAtype.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\PeopleTypes.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\PupilTypes.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\SC_Address_Structure.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\UPNtype.XSD
        File:\\ecsdcen2\Vol1\Groups\PIMD\Projects\ICYP%Projects\ICYP%-%School%Census\2013\January%2013\Source\School%Census\Includes\YearTypes.XSD">
    <Message>
     <Name>School Census</Name>
    <Header>
4

1 回答 1

0

你在这里有几个问题。

  • 您的 XML 格式不正确,因此无法确定您希望文档的元素结构是什么。你没有结束标签xs:schema,你有一个结束标签,但没有开始标签header

    此外,您使用但不绑定命名空间前缀xsi;该前缀通常绑定到 XSD 'instance' 命名空间。如果这是您想要的绑定(几乎可以肯定),您希望将以下命名空间声明添加到文档的根元素。

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
  • xs:schema元素用于定义模式的组件——而不是将模式信息附加到普通的 XML 实例。它是由 XSD 规范定义的,它既不是Message也不header是任何有效 xs:schema 元素的子元素。

  • XML 实例和模式之间的联系可以使用xsi:schemaLocation属性来表示(注意拼写!)。用于为给定的 XML 元素指定在哪里可以找到该元素中使用的名称空间的模式。

  • 的值xsi:schemaLocation是 (namespace-name, schema-document-URI) 对的序列;您当前的值似乎只是架构文档的文件系统路径列表,它们实际上都不是 URI。

  • 此外,通常的做法是让命名空间的一个顶级模式文档(驱动程序文件)引用(直接或间接)该命名空间的所有其他文件。您的xsi:schemaLocation属性应指向该驱动程序文件,而不是命名空间的其他模式文档。因此,我希望您的 XML 输入中有这样的内容:

    <header xmlns="http://www.dcsf.gov.uk/schemas/cbds" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:SchemaLocation="http://www.dcsf.gov.uk/schemas/cbds 
        file:///ecsdcen2/Vol1/Groups/PIMD/Projects/ICYP%20Projects/ICYP%20-%20School%20Census/2013/January%202013/Source/School%20Census/Schemas/cbds-driver.xsd">
      ...
    </header>
    

如果您的目标是尽可能快地将 XML 中的数据转换为其他形式,那么正确获取 XML 和 XSD 的所有这些细节(只是为了将数据从 XML 中取出)可能有点困难乏味; 我会找一位当地的 XML / XSD 专家,并为他们提供免费饮料,直到他们同意帮助您。

于 2013-06-04T16:01:11.223 回答