sql - XML 元素位置无效。(SQL-XSD)
问题描述
我今天刚开始学习 XML。我试图创建一个“样本”XSD 并填充它,但是..我编造了我的数据,它看起来很好,但我无法使这个架构工作..
CREATE XML SCHEMA COLLECTION GenreTestSchema
AS
<?xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--create group for GENRELIST-->
<xsd:group name="GENRELISTGROUP">
<xsd:element name="GENRELIST">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GENRE" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="REFERENCE" minOccurs="0" maxOccurs="100" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:group>
</xsd:schema>
现在如果我删除这个元素
<xsd:element name="GENRELIST">
以及随之而来的所有代码(元素和复杂类型),那么架构工作正常。我不知道这里出了什么问题,为什么它不允许我创建这个元素?
错误日志
Element <element> is not valid at location '/*:schema[1]/*:group[1]/*:element[1]'.
它谈到了无效的位置,但我真的不知道为什么?
数据样本
<GENRELIST xmlns="http://myGenres">
<GENRE GenreNo="1">
<GENRE>Fiction</GENRE>
<REFERENCE>Alien</REFERENCE>
</GENRE>
<GENRE GenreNo="2">
<GENRE>Tragedy</GENRE>
<REFERENCE>Titanic</REFERENCE>
</GENRE>
</GENRELIST>
解决方案
我不知道您为什么要尝试创建 xs:group (“模型组”)。模型组是可重用的模式声明块,可以在多个地方使用,当您有多个具有相似结构的元素时非常方便。有一个只有一个引用的组有时可能有意义,但没有引用它的组就没有意义。
现在有一个额外的(和相关的)问题)。通常,当您开始验证实例文档时,验证器会查找名称与实例的根元素匹配的全局元素声明。但是您的架构中没有全局元素声明;您的声明GENRELIST
不是全局的,因为它在一个组中。
推荐阅读
- jquery - Rails 6:link_to 方法::delete 不起作用
- r - 如何对 R 中每个唯一组的值求和
- webassembly - WebAssembly 使用 i64 作为分支条件
- html - 如何调整 Ngx-Gallery 预览图像宽度?
- javascript - 比较数组中的关键字值字段 - Javascript
- gitlab - gitlab CI/CD:如何仅触发特定作业
- html - 按下按钮时调用功能 - 反应
- python - Python设置无法执行python脚本
- google-apps-script - 我想将内容从一个电子表格转移到另一个电子表格(电子表格 A 到电子表格 B),并手动将记录输入到 B
- java - java中使用lmax Disruptor(3.0)处理百万文档