我目前正在构建一个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:Response>
<head:MyFunctionResponse>
<body:DataObject>
<body:Parameter>Foo</body:Parameter>
<body:Parameter>Bar</body:Parameter>
</body:DataObject>
</head:MyFunctionResponse>
</head:Response>
</head:schema>
因此,尽管此特定文档中没有“错误”命名空间,但它仍然被定义,因此当“body”命名空间被“错误”命名空间替换时,<schema>
保持不变。
还是应该更像这样?
<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>
或
<head:schema>
<head:Response xmlns:head="http://mywebsite.com/ns/head/">
<head:MyFunctionResponse>
<error:ThrownException xmnls:body="http://mywebsite.com/ns/error/">
<error:Id>21</error:Id>
<error:Message>Something went wrong.</error:Message>
</error:ThrownException>
</head:MyFunctionResponse>
</head:Response>
</head:schema>
其中命名空间仅在需要时声明。
或者这是一个风格,观点或偏好的问题。像“靠窗座位或过道座位?”。
如果不是风格,意见或偏好,那么命名空间的放置背后的指导思想是什么?
答案 0 :(得分:1)
将它们全部放在顶部。你没有通过使它们更接近使用来保存任何东西。
或者,将它们放在使用它们的位置,然后将它们设置为默认命名空间,这样可以节省大量的混乱:
<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>
顺便说一句:你的根元素(模式)是非命名空间的,这很奇怪。