XML Schema Definition XSD

xml schema
产生的背景:替代dtd,但是编写shema和dtd文件的目的是一样的.:定义 XML 文档的合法结构。xsd文件也被人称为规约
特点
书写和xml很相似。如果你的xsd文件结构和xml结构不一致,就会
报错,为什么会报错呢?因为有一个文件,就是它http://www.w3.org/2001/XMLSchema,它规定xsd文件就该这么写,
并且还给你提供了标签元素。该文件的默认命名空间xmlns是空。
什么?你想自定义xsd标签?我不清楚可不可以!

比dtd多了命名空间,一个xsd文件的namespace和包的作用是一致的。
一个xsd文件对应有且仅有一个namespace,也就是说xsd文件和namespace是一一对应的。在一个项目中难免会出现同名的类,但是有了包名就不怕了。
问题来了
tarnamespace 和namespace的区别?

xml文件中的xmlns与xsd文件的targetNamespace网址竟然一样。
targetNamespace是xsd文件的标签, 相当于 .Java文件中最开始文件头中的package.
而xmlns 或者说namespace相当于在进行单元测试时 import需要的类。比如:xmlns:context=”http://www.springframework.org/schema/context” 在java编程中import时是包名.类名,在xml文件中可以把带context前缀的标签看出类名,而http://www.springframework.org/schema/context就是包名。最后使用schemaLocation指定xsd文件在哪里。一个xsd文件对应有且仅有一个namespace

想在一个xsd文件中复用另一个xsd文件的规约怎么办?

<xsd:schema xmlns="http://www.springframework.org/schema/context"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:beans="http://www.springframework.org/schema/beans"
        xmlns:tool="http://www.springframework.org/schema/tool"
        targetNamespace="http://www.springframework.org/schema/context"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified">

    <xsd:import namespace="http://www.springframework.org/schema/beans" schemaLocation="http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"/>
    <xsd:import namespace="http://www.springframework.org/schema/tool" schemaLocation="http://www.springframework.org/schema/tool/spring-tool-4.3.xsd"/>

使用http://www.w3.org/2001/XMLSchema定义的import标签,表示导入namespace=”http://www.springframework.org/schema/beans”的xsd文件定义的所有规约内容。注意:一个xsd文件对应一个namespace.

在一个xsd文件下文引用上文定义的类型,需要加入前缀吗?
需要,不解释。

如何在xml文件中引入xsd规约?
简单点说,只要在xml文件中指定前缀和命名空间并指定命名空间对应的xsd文件的位置,就算是把xsd文件定义的规约。这就告诉xml解析器,前缀为xx的标签,使用某一个xsd文件定义的内容来校验。
一般来说,编写xml文件之前,xsd文件的命名空间和xsd文件位置都是固定的,前缀可以随意改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值