0

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

1 回答 1

0

根据我的观察,有几点:

  • 你有一个<Root>在顶部,但没有</Root>在底部。
  • 你从哪里得到这些命名空间,你对它们有什么期望?
  • 您是否要求 dbxml 在尝试将数据加载到数据库时验证模式?如果没有,你到底想在这里做什么?

我的建议是完全取出所有模式声明,并简单地使用您认为合适的 XML。模式适用于当您对数据的外观有确切要求时 - 这可能是您的情况,但由于您是 XML 新手,我将简单地从使用没有模式的 XML 开始,然后根据需要进入模式. 有很多很棒的资源可供您开始使用模式,具体取决于您的工具堆栈。

于 2021-02-05T05:03:58.437 回答