查了资料和自己实践后,得出了一些关于xml和xmlns的结论

看一个最常见的javaweb 中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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

其中xmlns的意思就是xml namespace ,就是命名空间,为了区分一个xml中重复的定义而产生的,为什么后面跟着一串url,
为了唯一性

如何使用xmlns:

很简单,使用语法: xmlns:namespace-prefix="namespaceURI",如:
 xmlns:abc="http://www.springframework.org".
定义了abc后,要引用"http://www.springframework.org"中的元素,就必须加上abc前缀,如常见的:
<context:component-scan base-package="com.taotao.controller" />

看这一句:

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

定义默认命名空间为http://www.springframework.org/schema/beans
为一个xml文档定义默认的命名空间
为什么beans前没有加上命名空间限定符,因为用xmlns定义了默认的命名空间后,在该xml下使用这个命名空间下的元素可以不用加前缀

第三行到第五行:

定义了三个命名空间,代号为xsi,context,mvc

再看看后面的:

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"

由于第三行定义了xsi,所以可以使用xsi中的元素 schemaLocation
xsi是个什么?

按照前面说的xmlns:xsi,就是定义了命名空间代号xsi,代表http://www.w3.org/2001/XMLSchema-instance
但是我们发现, 这个 xmlns:xsi 在不同的 xml 文档中似乎都会出现。 这是因为, xsi 已经成为了一个业界默认的用于 XSD((XML Schema Definition) 文件的命名空间。 而 XSD 文件(也常常称为 Schema 文件)是用来定义 xml 文档结构的

Schema :概要,计划,图表   ,XML Schema Definition可以理解为xml文件的规范和约束

注解: XML 解析器可以根据 一个 XSD 文件的内容来解析另一个 XML 文件, 判断该文件的结构是否和 XSD 文件中定义的一致。 XSD 文件 可以理解为 XML 文档可以自定义的语法或格式检查器。

那么, 有了上述的理解, 再来看xsi:schemaLocation 这几句:
上面三句的语法其实是, xsi:schemaLocation = "键" “值”   "键" “值”   "键" “值”,分别对应上面的三个代号,一共是三对
即 xsi 命名空间下 schemaLocation 元素的值为一个由空格分开的键值对

前一个“键”http://www.springframework.org/schema/beans 指代 【命名空间URL】
后一个值指代 【XSD location URI】 , 这个值指示了前一个命名空间所对应的 XSD 文件的位置, xml解析器可以根据这个获取到 XSD 文件, 从而通过 XSD 文件对所有属于 命名空间http://www.springframework.org/schema/beans“的元素结构进行校验, 因此这个值必然是可以访问的, 且访问到的内容是一个 XSD 文件的内容

XSD本身也是一个xml文件,遵循XML格式

问题:
1.在项目生成时,会去网络上请求访问这些xsd文件吗?
应该是本地有一份备份,包含了新老版本的xsd文件,javaweb项目应该会先访问本地的,本地找不到再访问网络上的

1.1.那会去网络上请求访问xmlns的对应的url吗?
不知道

2.在设置了命名空间后能不能写别的节点元素,比如<aaa></aaa>
设置了命名空间后,无法再自定义元素了,要是命名空间中的元素才能被定义,而且必须要遵循xsd语法规则

3.把这些命名空间全删了又能怎么样
编译能过,因为不写命名空间的话,没约束,可以自定义元素,但是一旦有请求进来就会报错:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 2 in XML document from class path resource [spring/springmvc.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 8; cvc-elt.1: 找不到元素 'beans' 的声明。

4.xsd里面写了些什么?
可以拷贝url到浏览器访问一下,是一份xml文件,里面有定义一些元素和元素的语法

5.只定义xmlns ,删除后面的xsi:schemaLocation行不行
不行,经测试,会报错,提示beans元素找不到,也就是说xml中的元素是被定义在了xsd中而不是前面的url中,既定义在“值”中,而不是“键”中
如果加上xsi:schemaLocation,则在xml中编辑,敲一个<符号,会有一堆下拉的智能提示,而删除xsi:schemaLocation仅剩xmlns则没有智能提示
而且如本例中的context, 键URLhttp://www.springframework.org/schema/context ,访问下是个列表

而值URL http://www.springframework.org/schema/context/spring-context-4.0.xsd  才是真正的XSD文件所在
只有加上了这个,才能有xml中的元素,例如bean,context:annotation-config等元素,如下图:

也就是说 定义 xmlns:A ="url01"   然后xsi:schemaLocation = "url01   real_url/4.0_xsd"
真正的元素都在xsd中

那么是不是url01也是个代号,可以随意改呢?

答案是不行,若本xml中没有使用url01中的元素,那么无所谓,可以。但是一旦使用了,就会报错

所以除了A是一个可以任意替换的字符串代号外,url01和 real_url/4.0_xsd都是不能乱改的

6.只定义xsi:schemaLocation,删掉xmlns中某行,比如本例中xsi:schemaLocation不动,删除xmlns:context这一行,行不行?

不行,报错

WPF中的xaml

xaml是xml的一种,是子集,xaml也遵循xml语法|

<Window x:Class="TestClient.TradeWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="" Height="450" Width="800"><Grid></Grid>
</Window>

x:Class="TestClient.TradeWindow" 这句的意思为本xml中对应的类为"TestClient.TradeWindow"

xml文件只要遵循xml语法即可,可以任意定义元素,但是xml解析器不同,所以解析的规则也不一样,VS的解析方式和Eclipse的不一致,所以应该区别对待,但是在xmlns上,基本上是一致的

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
定义默认命名空间,这个url能访问,但是内容是无效的,但是vs的解析器应该是把这个url映射到了WPF的presentation程序集下

因此,在这个xml中,可以定义多个如Grid,Dockpanel的元素

总结:
1.xml根据不同IDE有不同的写法,但是必须遵循基本的xml语法,如只能有一个根节点,节点必须关闭
2.xmlns就是Java,C#中的namespace,引入了namespace就可以使用其中的元素

从xmlns的作用说起相关推荐

  1. android 自定义xmlns,Android xmlns 的作用及其自定义实例详解

    Android xmlns 的作用及其自定义实例详解 xmlns:Android="http://schemas.android.com/apk/res/android的作用是: 这个是xm ...

  2. Android xmlns 的作用及其自定义

    xmlns:android="http://schemas.android.com/apk/res/android 声明xml命名空间.xmlns意思为"xml namespace ...

  3. Android布局文件中的xmlns:tools作用以及用法

    最近被布局文件中的 xmlns:tools="http://schemas.android.com/tools" xmlns:lu="http://schemas.and ...

  4. HTML的xmlns的作用

    作用:由于xml允许定义自己的标记,但你定义的标记和其他人定义的标记有可能相同,但表示不同的含义.当文档交换或者共享的时候就容易产生错误.为避免这种错误产生,xml采用名字空间声明,允许你通过一个网址 ...

  5. XML 中的 xmlns 等属性的意义

    原文:https://blog.csdn.net/lengxiao1993/article/details/77914155 Maven 是一个 java 开发人员很难绕过的构建工具, 因为有众多的开 ...

  6. XML:文件头部xmlns详解

    目录 先修知识 POM 文件头示例 从 xmlns 的作用讲起 xmlns 出现在没有前缀的元素中的含义 xmlns:xsi 与 xsi:schemaLocation 本文转载自:https://bl ...

  7. xmlns与xmlns:xsi和xsi:schemaLocation详解

    xml文件常用来作为配置文件,但是 xml 文件的头部会让初学者感到困惑, 这里对其进行一个清晰易懂的解释(梳理自网络资料) 先修知识 理解 xml 中的标签含义, 及标签之间树状的嵌套结构 了解 p ...

  8. 基于WPF的开发的知识点

    基于WPF的开发 一.XAML 语言 XAML被编译为BAML(Binary Application Markup Language)文件.通常,BAML文件比XAML更小,编译后的BAML都是Pre ...

  9. XMl Schema校验

    1.Schema概要 XML是可扩展标记语言,也就是说其中的节点标记设置由用户定义生成.如果没有有效的办法来校验XML的合法性,往往会导致很多问题.因此xml通过校验达到合法性规范性,同时也可以对xm ...

最新文章

  1. id文本框适应文字_国家宣布!快递要大降价?个人ID将取代邮政编码
  2. 抓老鼠啊~亏了还是赚了?
  3. batchnorm2d参数 torch_pytorch方法测试详解——归一化(BatchNorm2d)
  4. 字典-字典的增删改查常用操作
  5. ZendStudio10.6.1如何安装最新的集成svn小工具?
  6. SAP CRM webclient ui开发workbench里点了Test按钮,发生了什么事
  7. 多线程数据下载(akshare)
  8. ZetCode Ruby 教程
  9. SparkStreaming 是火还是坑?
  10. matlab生成摆线齿廓线,基于Matlab的摆线针轮齿廓修形参数的求解
  11. 阿里云datav自定义组件,引入高德地图API
  12. 基于VUE + Echarts 实现可视化数据大屏智慧校园可视化
  13. webstorm常用插件 最后一个最好
  14. 性能诊断定位之内存问题排查(一):监控年轻代、年老代、元数据空间变化情况
  15. 成就系统实现(一)-概述
  16. 四级地址库 国家标准的行政区划代码 省市区街道
  17. 深圳市建筑物矢量数据(Shp格式+带高度)
  18. TOUGH2系列建模方法及在CO2地质封存、水文地球化学、地热、地下水污染等领域中的实践技术
  19. 报告模板 仿 LaTeX beamer主题: Metropolis Powerpoint版本
  20. Swift:我的第三个Demo

热门文章

  1. postgresql11 主从配置详解
  2. (leetcode518)1,2,5,10元零钱组合成n元方案数
  3. PYNQ-Z2开发板
  4. java cqrs架构_简单聊聊CQRS
  5. Redis集群搭建【超详细】
  6. linux redis集群搭建
  7. apache tomcat 闪退
  8. 2013’江西省互联网年会在赣州举行
  9. Java:执行shell命令
  10. 04、DDR不同类型的区别和硬盘接口分类