假设我有一个模式,它在命名空间“general”中定义了一个名为“MyType”的复杂类型。当一个复杂类型被另一个命名空间中的另一个模式引用时,应该使用什么XML命名空间?
然后在另一个模式中使用该复杂类型。
例如:
<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" />
应该就是符合该模式使用otherschema或genschema的targetNamespace的XML文档中的XML元素的命名空间。
<general:MyType />
or
<targetNamespacePrefix:Mytype />
我在问这个问题,因为我使用Axis2来生成Java代码来与Web服务进行交互。 Axis2代码对名称空间进行了检查,在上面的示例中,它将检查名称空间是否是通用名称,如果不是,则会抛出异常。当然,Web服务响应xml使用targetNamespace而不是常规名称空间,因此每次都会中断。我对Axis2开发人员比Web服务的开发人员更有信心,但是我希望在提交错误报告之前确认我已经写好了。
我已经更新了问题,以便在您的答案中更清楚地从您的示例中明确了解XML文档中符合此要求的元素schema应该用作命名空间,一般是定义复杂类型的地方,或者是使用类型的目标命名空间,我认为它应该是通用的。 – DangerMouse 2011-05-27 16:05:08