首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当复杂类型被不同命名空间中的另一个架构引用时,应该使用什么XML命名空间?

当复杂类型被不同命名空间中的另一个架构引用时,应该使用什么XML命名空间?
EN

Stack Overflow用户
提问于 2010-11-05 14:22:15
回答 1查看 4.1K关注 0票数 2

假设我有一个模式,它在名称空间"general“中定义了一个名为"MyType”的复杂类型。

然后在另一个模式中,使用该复杂类型。

例如:

代码语言:javascript
运行
AI代码解释
复制
<xsd:schema targetNamespace="http://www.example.com/otherschema" 
          xmlns:general="http://www.example.com/genschema">
<xsd:import namespace="http://www.example.com/genschema" schemaLocation="general.xsd" />
<xsd:element ref="general:Mytype" />
<xsd:element name="myName" type="general:MyType" />

如果XML文档中符合此模式的XML元素上的名称空间使用其他模式或genschema的targetNamespace。

代码语言:javascript
运行
AI代码解释
复制
<general:MyType />
or
<targetNamespacePrefix:Mytype />

我之所以问这个问题,是因为我使用Axis2来生成与web服务交互的java代码。Axis2代码对名称空间进行了检查,在上面的示例中,它将检查名称空间是否为通用名称空间,如果不是,则抛出异常。与web服务的开发人员相比,我对Axis2开发人员更有信心,但我希望在提交错误报告之前确保我已经写好了。

EN

回答 1

Stack Overflow用户

发布于 2011-05-20 23:36:49

您在“其他”模式中使用MyType是正确的:声明名称空间,使用import并使用声明的前缀(general)。

代码语言:javascript
运行
AI代码解释
复制
<xsd:schema targetNamespace="http://www.example.com/otherschema" 
              xmlns:general="http://www.example.com/genschema">
    <xsd:import namespace="http://www.example.com/genschema" schemaLocation="general.xsd" />
    <xsd:element name="myName" type="general:MyType" />
</xsd>

请注意,我对http://...项进行了显式说明,以便清楚哪些项在您所描述的情况下通常是不同的。

如果您询问定义MyType的模式,请使用无前缀名称作为该模式中的定义:

代码语言:javascript
运行
AI代码解释
复制
<xsd:schema targetNamespace="http://www.example.com/genschema" 
    <xsd:complexType name="MyType"> ... </xsd:complexType>
</xsd:schema>

根据您的编辑进行更新:

在XML实例文档中,使用其他模式的名称空间为“myName”,即上面的targetNamespace。使用MyType将使用"genschema“名称空间。

我删除了<xsd:element ref="general:MyType"/>,只有当MyType是一个元素(不是类型)并且它在类型定义中时,它才有意义。假设"otherschema“包含:

代码语言:javascript
运行
AI代码解释
复制
<xsd:complexType name="otherType>
    ...
    <xsd:element ref="general:MyElement"/>
</xsd:complexType>

在这种情况下,MyElement仍然在实例文档中使用"genschema“名称空间。

底线:导入项目不会更改它们的名称空间。但是,包含它们确实会更改名称空间(即,使用<xsd:include>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4106751

复制
相关文章
CA1050:在命名空间中声明类型
应在命名空间内声明类型以避免名称冲突,并作为一种在对象层次结构中组织相关类型的方式。 任何命名的命名称空间之外的类型均位于无法在代码中引用的全局命名空间中。
呆呆
2022/01/10
4870
@namespace 属性——XML命名空间
@namespace 是一条 @规则 ,用来规定使用在 CSS 样式表 中的 XML命名空间 。任何 @namespace 规则都必须在所有的 @charset 和 @import 规则之后, 并且在样式表中,位于其他任何 style declarations 之前。
Html5知典
2019/11/26
8270
Linq to xml 操作带命名空间的xml
 昨天需要操作用代码操作csproj文件,实现不同vs版本的切换。 在用XElement读取了csproj文件以后怎么也获取不到想要的对象。 反反复复试验了好多次都不得要领:先看下csproj文件的内
hbbliyong
2018/03/06
1.4K0
Linq to xml 操作带命名空间的xml
【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )
命名空间 namespace 又称为 名字空间 , 名称空间 , 名域 , 作用域 , 是 C++ 语言 对 C 语言 的扩展 之一 ;
韩曙亮
2023/10/15
1.3K0
【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )
Namespace(命名空间)的使用
作者:飞刀 关于Namespace(命名空间)的使用常用,这是在引用M$为我们提供的Namespa数据库
Java架构师必看
2020/10/26
1.2K0
命名空间介绍之七:网络命名空间
自从上次我们研究 Linux 命名空间以来已经有一段时间了。我们的系列缺少了一篇,现在补上:网络命名空间。顾名思义,网络命名空间将网络设备、地址、端口、路由、防火墙规则等的使用划分在不同的盒子,基本上是在一个单独运行的内核实例中虚拟化网络。网络命名空间在 2.6.24 版进入内核,约 5 年前;大概一年后,它们才进入黄金时段。从那以后,它们似乎在很大程度上被开发人员忽略了。
谛听
2019/11/03
3.6K0
命名空间介绍之七:网络命名空间
命名空间
c++基础_命名空间namespace 命名空间是用来组织和重用代码的编译单元 在编写代码时写的程序不可能所有的标识符都没有重名现象, 在多人协作开发时更加不可控, 尤其对于库来说问题更加严重. 为了解决重名现象, 通过命名空间来避免冲突! ---- 命名空间的定义: namespace 命名空间标识符 { ...命名空间成员(普通变量成员,函数成员,类成员...) } 注意: 命名空间标识符必须满足标识符命名规则和命名规范, 习惯名字唯一, 通常以开发团队的名字(项目名) 来命名. 命名
木杉乀
2021/05/06
1.4K0
关于带命名空间的中文XML的解析
本来感觉XML文件解析是一件很简单的事情,结果折腾了一两周没什么进展,直到昨天才陆陆续续找到了一些解决方案,现在把踩坑过程和解决过程一并叙说一遍。
python与大数据分析
2022/03/11
7390
命名空间介绍之三:PID 命名空间
接着前两篇命名空间文章,现在看一下 PID 命名空间。与 PID 命名空间相关的全局资源就是进程 ID 数字空间。这意味着在不同 PID 命名空间中的进程可以有相同的进程 ID。PID 命名空间实现的容器可在主机之间迁移,并保持容器内的进程 ID 不变。
谛听
2019/10/29
3.6K0
命名空间介绍之三:PID 命名空间
命名空间介绍之五:用户命名空间
继续我们的命名空间系列文章,本文看一下用户命名空间,大部分实现于 Linux 3.8。(剩余的工作是 XFS 和其它文件系统中的一些改动;后者合并于 3.9)。用户命名空间与用户和组 ID 相映射。这意味着一个进程在某个用户命名空间内的用户和组 ID 可以与用户命名空间外的不同。最重要的是,一个进程可以在一个命名空间外有一个非 0 的用户 ID ,同时在命名空间内有一个为 0 的用户 ID;换句话说,进程在一个用户命名空间外没有特权,但在用户命名空间内有 root 特权。
谛听
2019/11/01
3.5K0
命名空间介绍之五:用户命名空间
命名空间介绍之六:用户命名空间的延伸
本文中,继续上周关于用户命名空间的讨论。特别的,我们看一下更多有关与用户命名空间、capabilities 的交互及用户命名空间与其它类型的命名空间的结合。本文是命名空间系列的最后一篇。
谛听
2019/11/02
2K0
命名空间介绍之六:用户命名空间的延伸
命名空间介绍之四:PID 命名空间的延伸
在本文中,我们将继续上周关于 PID 命名空间的讨论(并扩展我们正在进行的关于命名空间的系列文章)。PID 命名空间的一个用途是实现一个进程包(容器),其行为类似于一个自包含的 Linux系统。init 进程是传统系统和 PID 命名空间容器的关键部分。因此,我们将研究 init 进程的特殊角色,并着重于它与传统 init 进程不同的几个方面。此外,我们还将研究命名空间 API 应用于 PID 命名空间时的一些其他细节。
谛听
2019/10/30
2.2K0
命名空间介绍之四:PID 命名空间的延伸
C++_什么是命名空间
命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。 如: namespace ns1 //指定命名中间nsl { int a; double b; } namespace 是定义命名空间所必须写的关键字,nsl 是用户自己指定的命名空间的名字(可 以用任意的合法标识符,这里用ns1是因为ns是namespace的缩写,含义请楚),在花括号内是声明块,在其中声明的实体称为命名空间成员(namespace member)。现在命名空间成员包括变量a和b,注意a和b仍然是全局变量,仅仅是把它们隐藏在指定的命名空间中而已。如果在程序中要使用变量a和b,必须加上命名空间名和作用域分辨符“::”,如nsl::a,nsl::b。这种用法称为命名空间限定(qualified),这些名字(如nsl::a)称为被限定名 (qualified name)。C++中命名空间的作用类似于操作系统中的目录和文件的关系,由于文件很多,不便管理,而且容易重名,于是人们设立若干子目录,把文件分别放到不同的子目录中,不同子目录中的文件可以同名。调用文件时应指出文件路径。 命名空间的作用:是建立一些互相分隔的作用域,把一些全局实体分隔开来。以免产生老点名叫李相国时,3个人都站起来应答,这就是名字冲突,因为他们无法辨别老师想叫的是哪一个李相国,同名者无法互相区分。为了避免同名混淆,学校把3个同名的学生分在3个班。这样,在小班点名叫李相国时,只会有一个人应答。也就是说,在该班的范围(即班作用域)内名字是惟一的。如果在全校集合时校长点名,需要在全校范围内找这个学生,就需要考虑作用域问题。如果校长叫李相国,全校学生中又会有3人一齐喊“到”,因为在同一作用域中存在3个同名学生。为了在全校范围内区分这3名学生,校长必须在名字前加上班号,如高三甲班的李相国,或高三乙班的李相国,即加上班名限定。这样就不致产生混淆。 可以根据需要设置许多个命名空间,每个命名空间名代表一个不同的命名空间域,不同的命名空间不能同名。这样,可以把不同的库中的实体放到不同的命名空间中,或者说,用不同的命名空间把不同的实体隐蔽起来。过去我们用的全局变量可以理解为全局命名空间,独立于所有有名的命名空间之外,它是不需要用 namespace声明的,实际上是由系统隐式声明的,存在于每个程序之中。 在声明一个命名空间时,花括号内不仅可以包括变量,而且还可以包括以下类型: ·变量(可以带有初始化); ·常量; ·数(可以是定义或声明); ·结构体; ·类; ·模板; ·命名空间(在一个命名空间中又定义一个命名空间,即嵌套的命名空间)。 例如
瑞新
2020/07/07
8300
PHP命名空间
概述 什么是命名空间呢? 这个概念我第一次知道是在C++中. 首先, 为什么要用到命名空间呢? 当然是为了解决重名的问题了, 其实命名空间和Java中的包有着异曲同工之妙, Java中 a包下的Tes
烟草的香味
2019/07/25
2.6K0
PHP命名空间
python解析xml遇到的问题分享(命名空间有关)
要验证股票公司事件的数据入库规则,需要对开发的etl代码以及映射规则进行验证,然后数据源给的源文件格式是xml格式的,人工核对起来的话,考虑到有的字段还有枚举值映射关系或者一些简单的格式处理之类的,如果每次都人工去Ctrl + F去xml文件里面搜索标签去校验对应数据的话,效率不是特别的高,也不利于后续开发代码调整后的快速验证,因此我考虑自己用python脚本去按照分析师的规则文档自己解析一下xml文件,然后用自己解析出来的结果跟开发解析出来的数据进行一下对比,在一定程度上,能够稍微提升一下工作的效率。
小博测试成长之路
2022/12/02
8990
python解析xml遇到的问题分享(命名空间有关)
PHP命名空间
本文是复习所写,并不会涵盖一些基础知识点 定义 命名空间就相当于操作系统中目录的概念 主要是为了解决以下两个问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突 为很
码一
2022/06/06
2.8K0
PHP命名空间
js命名空间
start和stop在car下以名称空间命名:car.start()和car.stop()。
IT工作者
2021/12/29
1.8K0
PHP的命名空间
命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
老雷PHP全栈开发
2020/07/02
2.1K0
python的命名空间
在Python中,所有的名字都存在一个空间中,它们在该空间中存在和被操作——这就是命名空间。它就像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面找到相应的对象。
狼啸风云
2019/09/18
1K0
python命名空间
ke1th
2018/01/02
1.6K0

相似问题

在不同的命名空间中重用复杂类型

23

无法使用命名空间中的父类型扩展XML复杂类型。

12

XML在命名空间中查找命名空间

11

Xml架构命名空间

30

在不同的命名空间中从XSD导入复杂类型

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档