gpt4 book ai didi

java - Spring Framework XML 配置元数据和命名空间

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:19 25 4
gpt4 key购买 nike

我一直在研究使用 Spring 的元数据信息的配置,我意识到我需要深入研究 XML。我对 XML 文件中的引用方案有疑问。到目前为止,我所知道的(我猜...)如下:

  1. 我读到 namespace 的使用对于分离很有用标记 XML 文档中的元素,从而避免在标记 ( source )。
  2. 使用 URI 命名命名空间被视为一种标准,而不是意味着将在网址中搜索文件,例如示例(source - 在“命名空间名称指向什么?”中)。
  3. 命名空间的声明是使用保留的属性,“xmlns”。
  4. 命名空间使用前缀(也称为别名),但使用标记各种子元素不需要前缀(source - 在“美化”中)。

当我遇到以下标记时,事情开始变得困惑:

<element xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/1999/XSL/Transform
http://www.w3.org/1999/XSL/Transform.xsd
http://www.w3.org/1999/xhtml
http://www.w3.org/1999/xhtml.xsd">
</element>

根据许多来源(包括 this ),引用 XSD 模式是使用(在我看来)命名空间,如前所述,不指向任何东西,没有文件或任何东西。

据说在session 2.6命名空间识别和使用词汇表,让我明白名称“schemaLocation”是一个保留字,并与所选前缀“xsi”一起使用。我想知道一些与此处呈现的事实有关的事情:

  • “schemaLocation”的名称是什么,放在前缀之后用过的?那叫“属性”吗?如果是这样,它是什么的属性?
  • Spring 以不同的方式识别某些命名空间,执行它的在它上面有自己的逻辑,或者命名空间是否真的有可能指向地址中的物理文件?
  • “xsi: schemaLocation”的使用无需声明使用前缀为“xsi”的命名空间?

例如:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="..... http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd">

这段代码摘自《Spring Framework 入门 - 第二版》,第 3 章,第 112 页。

  • 会不会是作者遗漏了声明“xmlns: xsi...”?如果他没有遗漏,那么这段代码就错了?或者是这个没必要写?

编辑

我希望我的问题得到答复,其中包括以下内容的定义、差异和适用性:

  • QNames。
  • 扩展名称。
  • 全局属性。

谢谢。

最佳答案

1) 给“schemaLocation”的名称是什么,放在使用的前缀之后?那叫“属性”吗?如果是这样,它是什么的属性? See here

In an instance document, the attribute xsi:schemaLocation provides hints from the author to a processor regarding the location of schema documents.

The schemaLocation attribute value consists of one or more pairs of URI references, separated by white space. The first member of each pair is a namespace name, and the second member of the pair is a hint describing where to find an appropriate schema document for that namespace. The presence of these hints does not require the processor to obtain or use the cited schema documents, and the processor is free to use other schemas obtained by any suitable means, or to use no schema at all.

2) Spring 以不同方式识别某些命名空间,在其之上执行自己的逻辑,或者命名空间是否真的指向地址中的物理文件?

Spring 使用

META-INF/spring.schemas

  1. 将 schemalocation 重新映射 (*) 到库中的 xsd
  2. (摘要)这个库只支持重新映射的版本
  3. 名为“spring.schemas”的属性文件包含 XML 模式位置的映射

META-INF/spring.handlers

  1. 为特定命名空间提供命名空间处理程序类
  2. 命名空间处理程序类提供解析器逻辑来解析 spring-batch bean,如作业、步骤等。

3) “xsi: schemaLocation”的使用可以在没有声明使用前缀为“xsi”的命名空间的情况下完成吗?

前缀是强制性的(XML标准)

关于java - Spring Framework XML 配置元数据和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25368805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com