问题描述
我是 XML 的新手。我正在尝试导入 XML 文件,但出现错误 - “找不到元素 'Root' 的声明”。我怀疑这是因为命名空间 URI (http://xmlns.oracle.com/apps/otm/DBXML) 处于非活动状态。我尝试转到 URI,但它无效。由于这是 XML 文件从中引用其实体的地方,我猜测无效的 URL 意味着该文件无法找到 DBXML 的定义。我尝试放置另一个 URI http://www.w3.org/2001/XMLSchema,但它看起来不支持 DBXML。我有哪些选择?
XML 文件
<Root xmlns:dbxml="http://xmlns.oracle.com/apps/otm/DBXML"
Version="20C">
<dbxml:TRANSACTION_SET>
<MX_SHIPMENTS DESCRIPTION="XXX XXX XXX"
ORDER_RELEASE_GID="XXX.XXX"
LOCATION_GID="XXX.XXX"
STOP_NUM="X"
ACTIVITY="X"
SHIPMENT_GID="XXX.XXX"/>
</dbxml:TRANSACTION_SET>
XML 架构
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dbxml="http://xmlns.oracle.com/apps/otm/DBXML" targetNamespace="http://xmlns.oracle.com/apps/otm/DBXML">
<xs:import schemaLocation="dbxml-response-sample-schema1.xsd"/>
<xs:element name="TRANSACTION_SET">
<xs:complexType>
<xs:sequence>
<xs:element ref="MX_SHIPMENTS" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='Root'>
<xs:complexType>
<xs:sequence>
<xs:element ref="dbxml:TRANSACTION_SET"/>
</xs:sequence>
<xs:attribute name="Version" type="xs:string"/>
</xs:complexType>
</xs:element></xs:schema>
解决方法
根据我的观察,有几点:
- 顶部有
<Root>
,但底部没有</Root>
。 - 您从哪里获得这些命名空间,您对它们有什么期望?
- 您是否要求 dbxml 在尝试将数据加载到数据库时验证架构?如果没有,您到底想在这里做什么?
我的建议是完全删除所有模式声明,并根据您的需要简单地使用 XML。架构适用于当您对数据应该是什么样子有确切要求时 - 这可能是您的情况,但由于您是 XML 的新手,我将简单地从使用没有架构的 XML 开始,并按照您的要求工作根据需要进入模式。有很多很棒的资源可用于开始使用架构,具体取决于您的工具堆栈。