繁体   English   中英

什么意思 <beans:beans> 和 <beans>

[英]What is mean by <beans:beans> and <beans>

之间有什么区别

<beans xmlns="http://www.springframework.org/schema/beans"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:p="http://www.springframework.org/schema/p"  
xmlns:context="http://www.springframework.org/schema/context"  
xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">  

<beans:beans xmlns="http://www.springframework.org/schema/beans"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:p="http://www.springframework.org/schema/p"  
xmlns:context="http://www.springframework.org/schema/context"  
xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

您能解释一下两者之间的区别吗?

这是一个XML名称空间,用于分隔可能冲突的元素名称,因此没有真正的区别。

XML命名空间

它们是等效的。 您可以说元素的全名是ns:elementName例如:

http://www.springframework.org/schema/beans : beans

如果您说xmlns =“ http://www.springframework.org/schema/beans” ,则表示“如果您看到没有名称空间前缀的元素,则假定默认名称空间为” http://www.springframework.org/模式/ beans

如果您说xmlns:beans =“ http://www.springframework.org/schema/beans” ,则表示“如果您看到带有bean:前缀的元素,请假定它是” http://www.springframework的简写。 org / schema / beans

理解这一点的关键是xmlns值。 在两种情况下都是:

xmlns="http://www.springframework.org/schema/beans"

这指定了文档的默认架构。 这意味着XML中的每个标记都应该是该架构的一部分, 除非明确指定它属于哪个其他架构。

通常,通过<schemaName:tagName>模式指定标签来自另一个架构。 因此,例如,如果标记name是架构foo一部分,则必须将其与<foo:name>

为文档选择默认架构时,可以跳过架构名称,就像您使用<beans>示例一样。 在这种情况下,必须在模式中使用xmlns指向<beans>标签。

在另一种情况下,您明确指定了标记beans是带有别名beans的架构的一部分,该别名beans导致<beans:beans> 但是,如果没有xmlns:beans=http://www.springframework.org/schema/beans定义,则会导致XML无效。

就个人而言,尽管如此,我还是希望始终明确提供架构别名。

第一个是正确的,第二个不是。 不同之处在于您的“默认名称空间”。 您的默认名称空间是beans 如果您的默认名称空间是其他名称空间(例如context ,那么您需要显式定义一个beans名称空间(在示例中尚未完成)并使用beans:beans样式。

有不同的使用情况进行嵌套<beans> ,你用一个新元素<beans>根标记内<beans>标签:

为了定义具有某些默认值的Bean子集或仅当某些配置文件处于活动状态时才进行注册的目的。 任何此类嵌套元素都必须声明为文档中的最后一个元素。

但是您的示例与此无关。

简而言之,它不允许您在选择的属于默认名称空间的元素之前添加名称空间。 xmlns =“ namespace”,如果上述示例来自:i)xmlns =“ http://www.springframework.org/schema/beans”

然后,您可以使用元素<beans>以及<beans:beans>-显式语法。

ii)xmlns =“ http://www.springframework.org/schema/p”

然后,您可以使用<p>以及<xmlns:p>-显式语法。

注意:您只能使用xmlns设置默认名称空间!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM