Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果没有工作的网络连接,XML名称空间如何工作?_Java_Xml_Spring_Xsd_Xml Namespaces - Fatal编程技术网

Java 如果没有工作的网络连接,XML名称空间如何工作?

Java 如果没有工作的网络连接,XML名称空间如何工作?,java,xml,spring,xsd,xml-namespaces,Java,Xml,Spring,Xsd,Xml Namespaces,上面的示例显示了具有多个名称空间的XML文件的示例。这些名称空间的用途是什么?最重要的是,为什么它们在没有Internet连接的情况下也能工作 我认为以xsi:schemaLocation开头的第二位包含用于验证XML文档结构的XML模式文件。如果我在一台不在网络上的机器上运行使用此配置文件的应用程序,为什么这些仍然有效?URL是JAR文件的别名吗?假设我们有这个XML文档 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns

上面的示例显示了具有多个名称空间的XML文件的示例。这些名称空间的用途是什么?最重要的是,为什么它们在没有Internet连接的情况下也能工作


我认为以
xsi:schemaLocation
开头的第二位包含用于验证XML文档结构的XML模式文件。如果我在一台不在网络上的机器上运行使用此配置文件的应用程序,为什么这些仍然有效?URL是JAR文件的别名吗?

假设我们有这个XML文档

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.1.xsd">

  <context:component-scan
      base-package="com.springinaction.chapter01.knight" />

</beans>

你的文字在这里
182厘米
83公斤
它包括HTML,它有一个主体标记,对于HTML呈现程序具有语义意义。它还有另一个身体标签,上面有特定人的信息。命名空间定义了此标记的语义范围。如果没有名称空间(如所提供的示例中所示),解析器就不可能分辨出差异,因为它们在语法上是相同的

以下是同一文档的语义正确版本:

<?xml version="1.0" encoding="UTF-8"?>
<html>
      <body>
        Your text here
      </body>
      <body>
        <height>182 cm</height>
        <weight>83 kg</weight>
      </body>
</html>

你的文字在这里
182厘米
83公斤
因此,由于名称空间,我们不必担心具有不同含义的冲突标记


名称空间URI本身从未真正解析过,并且是任意的(因此您可以脱机使用它们)。

XML名称空间是元素名称的一个组件,您可以在编写
xmlns:=“”
时将其绑定到前缀。这有助于避免不同XML模式之间的命名冲突,以便可以混合来自两个恰好具有相同名称的模式的元素。例如,您可能有两个模式,它们都具有含义不同的
link
元素,命名空间前缀允许您通过编写
foo:link
bar:link
来区分它们。名称空间通常以URL的形式存在,但解析器只将其视为字符串,而不尝试从该URL获取任何内容


关于第二部分,
XSI:SchemaLocation
元素,您是正确的。请参阅,了解为什么它在没有网络连接的情况下仍然能够验证架构。

请尝试忽略以下事实:许多命名空间名称看起来像您可能在浏览器中键入的URL。它们只是随机的字符串,不是web上资源的地址。人们采用这种约定的原因是,它显示了谁“拥有”名称——与选择“xsd1.0”作为名称空间名称相比,它更清楚地表示了什么,并且不太可能意外地与其他人选择的名称发生冲突。有些人还喜欢这样一个事实,即您可以将文档放在相关位置,但没有XML软件会自动查找文档。

名称空间通常是为了避免标记之间的冲突,但在幕后,它是针对某个模式的解析器的处理指令。例如,在浏览器中,您有不同的文档类型、严格的Xhtml等,浏览器将这些模式存储在某个位置,解析器引用这些模式来验证结构

在Spring中,一旦您启用了一个特定的模式,它就需要一个该模式存在的引用,这并不意味着URI模式没有任何意义。类路径中需要相关的.jar文件,以便解析器引用它。 org.springframework.context-4.1.jar。如果查看这个jar文件,您将在org.springframework.context.config包中找到spring-context-2.5.xsd文件。 您定义:
xmlns:context=”http://www.springframework.org/schema/context“


xmlns让您通过编辑器使用预配置的方法来编写,例如
XML名称空间不是前缀,描述它只会引起混淆。名称空间是通常看起来像URL的字符串。前缀可用于将元素绑定到其名称空间。@Alohci感谢您指出这一点,我不是有意暗示前缀就是名称空间。我编辑了我的答案来区分两者。为什么我们只需要使用URL,为什么不使用一些独特的词来分隔名称空间中的标记。谢谢一些语言(如WPF和xaml)像使用语句一样使用名称空间。当这种情况发生时,url很重要。@Mitch我认为他犯了一个错误。应该是:很好,谢谢。当我在java中使用beans名称空间时,我有一个疑问,如果我遗漏了bean类标记,ecllipse将显示一个错误,就像您遗漏了那个一样。如果不进行解析,名称空间将如何工作。对不起,我的英语不好。
<?xml version="1.0" encoding="UTF-8"?>
<html:html xmlns:html="http://www.w3.org/TR/xhtml1/">
  <html:body>
    Your text here
  </html:body>
  <human:body xmlns:human="http://www.example.com/human/">
    <human:height>182 cm</human:height>
    <human:weight>83 kg</human:weight>
  </human:body>
</html:html>
xsi:schemaLocation="http://www.springframework.org/schema/context/spring-context-2.5.xsd">
 <context:annotation-config>