什么是XML命名空间,它与Spring Transactions有什么关系?

时间:2011-01-25 07:20:46

标签: xml namespaces spring-transactions

我刚刚完成了一个Spring事务教程,该教程提到有一些元素可用于声明式事务管理,它们是在tx命名空间中定义的。 tx名称空间实际包含什么。在哪里定义,注册等?为什么我需要命名空间?

我想知道一般的命名空间,而不只是特定于tx命名空间。

1 个答案:

答案 0 :(得分:8)

XML namespace只是一个令牌,由于缺乏更好的描述,它会识别特定标签或属性的“版本”。例如,如果您将XML与多个人/程序/标准组织等定义的元素一起使用,那么这个想法就是防止冲突。例如,我编写的使用xml的程序可能使用命名空间http://www.ttdi.us/xml/myapp。然后,我可以定义像<name>这样的标签,而不必担心其他地方,有人可能也会出于自己的目的使用<name>

<thing xmlns="http://www.ttdi.us/xml/myapp"
       xmlns:pie="http://somebodyelse.example/delicious/pie">
<!-- this defines that we have a "thing"
     in the namespace "http://www.ttdi.us/xml/myapp" -->
<!-- also it says that anything with the prefix pie:
     is from a different namespace. -->
    <name color="brown" pie:color="crispy">Bob</name>
    <!-- so this tag has the color "brown" for the attribute in my namespace
         but "crispy" in somebodyelse's pie namespace.
         We can use the same tag/attribute names without any trouble. -->
    <pie:flavor>Blueberry</pie:flavor>
</thing>

命名空间不需要在任何地方“注册”;它可以是你想要的任何URI。

简而言之,如果您正在制作自己的XML文档,并且您认为其他XML可能会嵌入您的文档中,反之亦然,则值得声明命名空间。

因此,spring tx命名空间仅仅是一种在XML配置文档中识别“属于”Spring Transactions的内容的方法。访问the URL of the Spring TX namespace将引导您进入各种版本的Spring Transactions的XML Schema(您可以拥有的元素,属性和值的规则)。有关可以使用的配置设置的详细信息,请参见Spring's documentation