Xml模式命名空间
1) 我意识到名称空间是区分使用XML模式指定的不同模式/词汇表的一种手段,但我不明白为什么在模式本身中指定名称空间(模式正在为其开发词汇表)是一个好主意(通过Xml模式命名空间,xml,xsd,xml-namespaces,Xml,Xsd,Xml Namespaces,1) 我意识到名称空间是区分使用XML模式指定的不同模式/词汇表的一种手段,但我不明白为什么在模式本身中指定名称空间(模式正在为其开发词汇表)是一个好主意(通过targetNamespace属性) a) 如果我们能够将特定名称空间与实例文档中的特定词汇表/模式关联起来,不是更好吗?这样,那些编写实例文档的人就可以完全自由地将模式与他们想要的名称空间名称关联起来 b) 我在指定目标名称空间的模式中看到的唯一好处是,它的创建者可以选择将文档放在名称空间的末尾,以描述该名称空间的元素(假设模式使用UR
targetNamespace
属性)
a) 如果我们能够将特定名称空间与实例文档中的特定词汇表/模式关联起来,不是更好吗?这样,那些编写实例文档的人就可以完全自由地将模式与他们想要的名称空间名称关联起来
b) 我在指定目标名称空间的模式中看到的唯一好处是,它的创建者可以选择将文档放在名称空间的末尾,以描述该名称空间的元素(假设模式使用URL作为名称空间)。还有其他好处吗
2) 如果架构没有targetNamespace
,则必须使用noNamespaceSchemaLocation
属性而不是schemaLocation
属性(在实例文档中)引用特定架构
如果文档实例只指定模式的位置,并让XML模式验证器确定模式是否指定了targetNamespace
,不是更简单吗
谢谢您关于名称空间“后期绑定”的想法不错,但目前名称空间的部分用途是让处理器确定要使用哪个模式
在这个过程中,“schemaLocation”属性只是一个提示,很多时候根本没有用处
考虑以下场景:
- 我正在JMS上接收XML消息
- 我有几个可能需要应用的模式;将指向模式的URL硬编码到XML文档本身并不起作用,因为在本例中,我无法移动环境
- Processor使用XML文件中元素的名称空间在内存模式缓存中查找模式
- 我正在JMS上接收XML消息
- 我有几个可能需要应用的模式;将指向模式的URL硬编码到XML文档本身并不起作用,因为在本例中,我无法移动环境
- Processor使用XML文件中元素的名称空间在内存模式缓存中查找模式
希望这是有意义的。我只知道XML模式的一个定义,还有一个XML模式的定义。因为XML模式非常复杂,所以标准由三部分组成,即XML和XML 如果您了解更多XML名称空间和XML模式的定义(更多“词汇表”),请发布指向您所指定义的链接 在任何模式的根中,
targetNamespace
的含义都很容易弄清楚。XML不是一种语言。它是一种元语言。XML模式帮助我们定义一种语言。我们必须为我们定义的语言(模式)指定一个唯一的名称。它是架构的targetNamespace
。因此,某些文件应解释为以美式英语编写的文件,而以国标英语编写的文件可能不太正确
模式中的targetNamespace
也是唯一的,在XML文件中声明元素的名称空间意味着我们用编写文档的确切语言(和方言)来定义。在这种方式下,您也非常准确地说明了应该解释相应名称的上下文
如果在中定义的架构没有targetNamespace
,则意味着XML文档中相应的元素和属性也必须属于“无命名空间”。noNamespaceSchemaLocation
属性或schemaLocation
属性的使用不是强制性的。因此,您不能在XML文档中引用模式。在这种情况下,XML文档的读者应该从相应的上下文中知道您所指的模式
在你问题的最后你问
如果相反,这不是更简单吗
文档实例将只指定
XML模式的位置,并让
Xml模式验证程序
架构是否指定了
targetNamespace
但是
noNamespaceSchemaLocation
属性的值正好是定义所用模式的XSD文件的路径。<代码> StudialOctoS/<代码>属性的值是命名空间,XSD文件的路径与空白分隔。因此,属性已经按照您的建议执行了。我只知道XML模式的一个定义,也知道XML模式定义的一个定义。因为XML模式非常复杂,所以标准由三部分组成,即XML和XML
如果你知道更多的定义