没有指定默认XML模式/ XSD时?

问题描述 投票:1回答:1

我正在从数据分析师的角度获取有关数据I / O的经验教训,而没有受益于数据工程专业知识(并且对此缺点也非常清楚)。为了提供各种选择的上下文,并考虑到我的商店中的限制,我简要地尝试了XML导入/导出,并完成了有关模式的在线阅读。我注意到有关第四代语言环境的开源实用程序的一件事似乎是使用默认值(我尚未指定默认值):

<?xml version="1.0" encoding="utf-8"?>
<y>
   <DataFrame1>
      <DataFrame1_Field1>[75;75;75;75;75;75;75;75;75;...;75;75]</DataFrame1_Field1>
      <DataFrame1_Field2>[2014;2014;2015;2015;2016;2016;...;2083;2084;2084;2085;2085;2086;2086]</DataFrame1_Field2>
      <DataFrame1_Field3>
         <item>ABC</item>
         <item>DEF</item>
      <...snip...>
         <item>00-00</item>
         <item>00-00</item>
         <item>00-00</item>
      </DataFrameP_FieldM>
      <DataFrameP_FieldN>[2;2;4;2;5;3;5;3;3;1;5;5;...;4;5;3;3;2;4;2;1;2;4]</DataFrameP_FieldN>
   </DataFrameQ>
   <DataFrameR>
      <DataFrameR_Field1>[75;75;75;75;75;75;...;75;75;75;75;75]</DataFrameR_Field1>
      <DataFrameR_Field2>[1;2;3;4;5;6;7;...;1638;1639;1640;1641;1642]</DataFrameR_Field2>
      <DataFrameR_Field3>[0;0;0;0;0;0.014925;0.223881;0.014925;...;0;0.059701;0;0;0;0;0;0;0.626866]</DataFrameR_Field3>
   </DataFrameR>
   <DataFrameS>
      <DataFrameS_Field1>[75;75;75;75;75;75;...;75;75;75;75;75;75;75]</DataFrameS_Field1>
      <DataFrameS_Field2>[1;1;1;1;1;1;1;...;1642;1642;1642;1642;1642]</DataFrameS_Field2>
      <DataFrameS_Field3>[0;0;0;0;0;0;0;0;...;7;0.7;0.7;0.8;0.8;0.8;0.9;0.9;1]</DataFrameS_Field3>
      <DataFrameS_Field4>[0;0.1;0.2;...;0;0.1;0.2;0;0.1;0]</DataFrameS_Field4>
      <DataFrameS_Field5>[1;0.9;0.8;...;0.3;0.2;0.1;0;0.2;0.1;0;0.1;0;0]</DataFrameS_Field5>
      <DataFrameS_Field6>[0;0;0;0;0;0;...1;1;1;1;1;1;1;1;1;1]</DataFrameS_Field6>
   </DataFrameS>
</y>

解释标签:所有以字符串“ DataFrame ...”开头的标签都是我在代码中所做的匿名化。在匿名化之前,DataFrame X(其中X是任何字母数字字符)是我的4GL环境[1]中数据帧对象的名称。包含字符串“ DataFrame”和“ Field”的所有标签也是匿名化。在匿名化之前,它们是数据帧中字段的名称。标签<y>只是4GL环境中数据帧集合的对象名称。

数据的排列对我来说都是有意义的,因为我知道我对数据所来自的数据帧的处理方式。所有标记都是有意义的。我假设它们来自通用的默认架构。但是,我的网络搜索没有发现任何迹象表明存在这样的默认架构,更不用说已经达成共识/标准化了。是否有这样的通用默认值,或者这些标记是导出实用程序的作者的结果?

[1] 4GL环境是Matlab,但是我的问题是关于XML的惯例和约定,而不是Matlab。

xml xsd schema xsd-validation xml-validation
1个回答
1
投票

对于任意XML文件,没有默认的XML模式。 W3C XML建议书给出了格式正确的规则,但是这些规则定义XML本身,而不是任何给定XML模式的词汇和语法。

未指定时标识XSD

  1. 当在XML中指定schemaLocation时,请参阅此处指定的XSD。对于有关schemaLocation的更多信息,请参见How to link XML to XSD using schemaLocation or noNamespaceSchemaLocation?
  2. 仅使用名称空间时,请参见How to locate an XML Schema (XSD) by namespace?
  3. 当XML提供者可用时,询问或检查源/文档。
  4. 当使用相对唯一/信息性元素名称时,或者如果您知道部门/行业google 元素名称部门/行业和“ xml模式”。

如果以上方法均无效,请减少架构,或编写自己的数据以适合数据。


有关XML设计的更多信息

在评论中,@ user2153235询问:

是否存在一种普遍的做法(甚至是在没有显式模式的情况下默认使用的通用,最小的“基本”方案),其中原子元素是“ item”,而任何其他标签表示的元素要么是字符串还是由从属元素组成的结构?

是,有一种流行的做法。

问题的答案:不,没有通用的,最小的“基本”模式–只是XML本身格式正确的规则。

您的帖子中的XML设计不良:

  • 命名很糟糕:
    • 根元素命名为y,但是内容显然不是简单的y坐标或可以合理地描述为y的其他任何东西。
    • 基于DataFrame的名称具有C字符后缀,后跟_FieldN数字后缀。除非C字符在某些域中有意义,否则应扩展缩写。列表成员上的硬连线数字后缀最好由位置暗示,以便该名称可以按词法表示信号类型而不必分解。
  • 子结构没有标记:通常,结构不应该以微格式埋在字符串中;应该强加标记,以便可以利用XML解析器,而不必在应用程序中实现微解析器。
© www.soinside.com 2019 - 2024. All rights reserved.