在XML文档中,应该将命名空间的URI声明放在哪里?
我目前正在构建一个XML模式,包括一个头部、一个主体和潜在的错误。我将这三个部分划分为不同的名称空间,因此我想知道应该在何时何地放入URI名称空间声明 例如,应该是:在XML文档中,应该将命名空间的URI声明放在哪里?,xml,web-services,xml-namespaces,Xml,Web Services,Xml Namespaces,我目前正在构建一个XML模式,包括一个头部、一个主体和潜在的错误。我将这三个部分划分为不同的名称空间,因此我想知道应该在何时何地放入URI名称空间声明 例如,应该是: <head:schema xmlns:head="http://mywebsite.com/ns/head/" xmnls:body="http://mywebsite.com/ns/body/" xmlns:error="http://mywebsite.com/ns/error/"> <head:Re
<head:schema xmlns:head="http://mywebsite.com/ns/head/" xmnls:body="http://mywebsite.com/ns/body/" xmlns:error="http://mywebsite.com/ns/error/">
<head:Response>
<head:MyFunctionResponse>
<body:DataObject>
<body:Parameter>Foo</body:Parameter>
<body:Parameter>Bar</body:Parameter>
</body:DataObject>
</head:MyFunctionResponse>
</head:Response>
</head:schema>
福
酒吧
因此,尽管在这个特定文档中没有“error”名称空间,但它仍然被定义,因此当“body”名称空间被“error”名称空间替换时,
保持不变
还是应该更像这样
<head:schema>
<head:Response xmlns:head="http://mywebsite.com/ns/head/">
<head:MyFunctionResponse>
<body:DataObject xmnls:body="http://mywebsite.com/ns/body/">
<body:Parameter>Foo</body:Parameter>
<body:Parameter>Bar</body:Parameter>
</body:DataObject>
</head:MyFunctionResponse>
</head:Response>
</head:schema>
福
酒吧
或
21
出了点问题。
其中仅根据需要声明名称空间
或者这是一个风格、观点或偏好的问题。比如“靠窗的座位还是靠过道的座位?”
如果不是风格、观点或偏好,那么名称空间放置背后的指导思想是什么?将它们全部放在顶部。通过让它们更接近使用,你不会节省任何东西 或者,将它们放在使用它们的地方,然后将它们设置为默认名称空间,这样您就可以避免一堆混乱:
<schema>
<Response xmlns="http://mywebsite.com/ns/head/">
<MyFunctionResponse>
<DataObject xmnls="http://mywebsite.com/ns/body/">
<Parameter>Foo</Parameter>
<Parameter>Bar</Parameter>
</DataObject>
</MyFunctionResponse>
</Response>
</schema>
福
酒吧
顺便说一句:你的根元素(模式)没有名称空间,这很奇怪。所以当你设置一个名称空间时,除非另外定义,否则所有的子元素都是用名称空间设置的,或者它也适用于所有其他的同级元素?这是为了演示而放在一起的,所以我将根目录更改为名称空间。:-)名称空间应用于它们所定义的元素以及该元素的所有子元素。事实上,现在您的第二个示例是不正确的,因为它们有一个head:schema根元素,但是head名称空间直到Response元素才被定义。
<schema>
<Response xmlns="http://mywebsite.com/ns/head/">
<MyFunctionResponse>
<DataObject xmnls="http://mywebsite.com/ns/body/">
<Parameter>Foo</Parameter>
<Parameter>Bar</Parameter>
</DataObject>
</MyFunctionResponse>
</Response>
</schema>