从不同命名空间中的 XSD 导入复杂类型 [英] Import complex types from XSD in different namespace

查看:33
本文介绍了从不同命名空间中的 XSD 导入复杂类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在不同的命名空间中有两个 XSD 文件,如下所示

I have two XSD files in different namespaces like below

book_request.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
    targetNamespace="book-request"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="book-request"
    elementFormDefault="qualified">

    <xsd:element name="book-request" type="book-request"/>

    <xsd:complexType name="book-request">
        <xsd:sequence>
            <xsd:element name="booking-code" type="xsd:string"/>
            <xsd:element name="room-type-code" type="xsd:string"/>
            <xsd:element name="customer-ip-address" type="xsd:string" 
                         minOccurs="0"/>
            <xsd:element name="booking-amount" type="xsd:double"/>
            <xsd:element name="customer" type="customer"/>
            <xsd:element name="payment" type="payment"/>
            <xsd:element name="provisional-book-id" type="xsd:string"
                         minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="customer">
        <xsd:sequence>
            <xsd:element name="title" type="xsd:string"/>
            <xsd:element name="first-name" type="xsd:string"/>
            <xsd:element name="middle-name" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

<小时>

provisional_book_request.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
    targetNamespace="provisional-book-request"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:common="common"
    xmlns="provisional-book-request"
    elementFormDefault="qualified">

    <xsd:import schemaLocation="book_request.xsd" namespace="book-request"/>

    <xsd:element name="provisional-book-request" type="provisional-book-request"/>

    <xsd:complexType name="provisional-book-request">
        <xsd:sequence>
            <xsd:element name="nri" type="xsd:boolean"/>
            <xsd:element name="hotel-id" type="xsd:string"/>
            <xsd:element name="check-in-date" type="xsd:date"/>
            <xsd:element name="check-out-date" type="xsd:date"/>
            <xsd:element name="customer" type="customer:customer"/>
        </xsd:sequence>
    </xsd:complexType>

</xsd:schema>

我正在尝试将复杂类型 customer 从 book_request.xsd 导入到provisional_book_request.xsd,我尝试通过 <xsd:element name="customer" type="客户:客户"/>

I am trying to import the complex type customer from book_request.xsd to provisional_book_request.xsd and I try to achieve it by <xsd:element name="customer" type="customer:customer"/>

但是我遇到了以下错误

元素‘element’中‘ref’的无效属性值.已记录原因:UndeclaredPrefix:无法将客户:客户"解析为QName:未声明前缀 'customer'."

"Invalid attribute value for 'ref' in element 'element'. Recorded reason: UndeclaredPrefix: Cannot resolve 'customer:customer' as a QName: the prefix 'customer' is not declared."

由于我对 XSD 很陌生,任何帮助将不胜感激

As I am very new to XSD, any help would be appreciated

推荐答案

provisional_book_request.xsd 中为导入的命名空间声明命名空间前缀,

Declare a namespace prefix for the imported namespace in provisional_book_request.xsd,

<xsd:schema

     xmlns:br="book-request"

>

并使用它来引用导入的类型:

and use it to reference the imported type:

<xsd:element name="customer" type="br:customer"/>

那么你的错误就会消失.

then your error will go away.

这里是完整的 provisional_book_request.xsd,按描述更正:

Here is the full provisional_book_request.xsd, corrected as described:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
    targetNamespace="provisional-book-request"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="provisional-book-request"
    xmlns:br="book-request"
    elementFormDefault="qualified">
  <xsd:import schemaLocation="book_request.xsd" namespace="book-request"/>
  <xsd:element name="provisional-book-request" type="provisional-book-request"/>
  <xsd:complexType name="provisional-book-request">
    <xsd:sequence>
      <xsd:element name="nri" type="xsd:boolean"/>
      <xsd:element name="hotel-id" type="xsd:string"/>
      <xsd:element name="check-in-date" type="xsd:date"/>
      <xsd:element name="check-out-date" type="xsd:date"/>
      <xsd:element name="customer" type="br:customer"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

这篇关于从不同命名空间中的 XSD 导入复杂类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆