XML文件的多个本地模式

时间:2013-06-04 10:32:29

标签: xml xsd

我是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>

1 个答案:

答案 0 :(得分:0)

这里有几个问题。

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

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

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
  • xs:schema元素用于定义模式的组件 - 而不是将模式信息附加到普通的XML实例。它由XSD规范定义,Messageheader都不是任何有效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专家,并为他们提供免费饮料,直到他们同意为您提供帮助。