0

我有一个 XML 文件,其中包含这样的标签..

<DataSt> --ROOT TAG
  <Track>
....
  </Track>
</DataSt>

而且我有这样开始的XSD文件..

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="DataSt">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Track">
          <xs:complexType>
            <xs:sequence>
              .................

我想在 XSD 文件中定义一些规则,根标记名称应始终与“DataSt”相同

例如,如果

<DataSt1> --ROOT TAG(wrong)
  <Track>
....
  </Track>
</DataSt1>

它不应该被成功验证,它应该有助于抛出错误。

我正在使用 SSIS 在 XSD 文件的帮助下从 XML 传输数据。如果根标记与 XSD 文件中定义的不同,则 SSIS 在读取 xml 文件后只是跳过它,但不会引发错误。

我不太了解 XML 和 XSD 代码。请帮助解决这个问题。谢谢!!!

4

1 回答 1

2

XSD 的设计者选择不这样做(有很多争论)。据我了解,其基本原理是模式定义了元素的有效性,而不是文档的有效性(但 xs:ID/IDREF 机制破坏了该原则)。

一些模式验证 API 允许您限制顶级元素应该是什么。例如,如果您从命令行使用 Saxon 进行验证,则有一个选项-top(请参阅https://www.saxonica.com/documentation10/index.html#!schema-processing/commandline

于 2021-08-11T19:59:31.177 回答