2

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

我想大致了解命名空间,而不仅仅是特定于 tx 命名空间。

4

1 回答 1

8

XML 命名空间只是一个标记,由于缺乏更好的描述,它标识了特定标记或属性的“版本” 。这个想法是为了防止冲突,例如,如果您将 XML 与由多个人/程序/标准机构/等定义的元素一起使用。例如,我编写的使用 xml 的程序可能会使用 namespace 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 的一部分可能会嵌入到您的文档中,或者反之亦然,那么声明命名空间是值得的。

因此,springtx命名空间只是一种识别 XML 配置文档中“属于”Spring 事务的事物的方法。访问Spring TX 命名空间的 URL 将引导您访问各种版本的 Spring Transactions 的 XML 模式(关于您可以拥有哪些元素、属性和值的规则)。有关可以使用哪些配置设置的更多信息,请参见 Spring 文档

于 2011-01-25T07:40:59.457 回答