2

首先,我知道有一个类似的线程试图回答相同的问题。但对我来说不幸的是,这并不能消除混乱。

所以这又是一个问题:

为什么我们需要在 xml 模式文档中指定 targetNamespace?
我们可以在一个 instanceDocument 中定义多个命名空间并将这些命名空间关联到相应的模式文档。targetNamespace 的需求在哪里出现?

4

1 回答 1

4

targetNamespace 是将分配给您正在创建的模式的命名空间。它是实例用来访问它声明的类型的命名空间。在以下代码中,模式将分配给命名空间http://www.somewebsite.com/Something

 <schema xmlns="http://www.w3.org/2001/XMLSchema"   
targetNamespace="http://www.somewebsite.com/Something/Foo">  
...  
</schema>  

在 XML 文档实例中,您通过 xmlns 属性声明将要使用的名称空间。例如:

<purchaseOrder xmlns="http://www.somewebsite.com/Something/Foo"  
xmlns:addr="http://www.somewebsite.com/Something/Foo/addr">  
  <accountName>Shanita</accountName>  
  <accountNumber>123456</accountNumber>  
  <addr:street>20 King St</addr:street>  
</purchaseOrder>  

这里的默认命名空间是http://www.somewebsite.com/Something/Foo,它引用了之前创建的模式。此命名空间适用于声明它的元素及其子元素,除非它们带有前缀。在示例中,所有元素都属于默认命名空间,除了addr:street. 既然是前缀,就属于addr命名空间( xmlns:addr="http://www.somewebsite.com/Something/Foo/addr")

于 2012-12-31T08:02:17.863 回答