【问题标题】:Why targetNamespaces?为什么选择目标命名空间?
【发布时间】:2023-04-07 08:35:02
【问题描述】:

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

那么问题又来了:

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

【问题讨论】:

  • 如果您知道类似的主题,为什么不链接到它,而不是让我们在知道是否发布您可能会忽略的答案之前搜索它?
  • 我的坏。这是类似的线程:stackoverflow.com/questions/9853484/…

标签: xml xsd xml-namespaces xsd-validation


【解决方案1】:

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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2011-04-13
    • 1970-01-01
    • 2015-12-21
    • 2016-07-16
    • 2013-12-11
    • 1970-01-01
    相关资源
    最近更新 更多