xml吧 关注:2,093贴子:5,879
  • 2回复贴,共1

新手,能否教一下xml 怎样引用自己写的xsd 文件吗?

只看楼主收藏回复

新手,能否教一下xml 怎样引用自己写的xsd 文件吗?


IP属地:广东1楼2015-06-10 21:44回复
    1.xml文件如何引入schema?
    在xml文件的根元素里引入。1个xml文档可以引入多个不同的schema文档。根据引入的schema有无命名空间,又分为2种引入方法,示例如下:
    1).引入无命名空间的schema文档
    xml文档引入一个无命名空间的schema文档时,使用这个无命名空间的schema文档中定义的元素时,不用加命名空间前缀!
    注意,每个xml文档只能引入1个无命名空间的schema文档。
    note.xml文件内容如下,它引入了note.xsd这个本地的、无命名空间的schema文件:
    <?xmlversion="1.0"?>
    <note
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:nonamespaceschemaLocation="note.xsd">
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don'tforget the meeting!</body>
    </note>
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"声明命名空间http://www.w3.org/2001/XMLSchema-instance的别名是xsi, 别名可以是任意合法的标识符,不一定必须是xsi,也可以省略不写,如果省略不写,则xmlns="http://www.w3.org/2001/XMLSchema-instance"成为了默认命名空间,一个xml文档只能有一个默认命名空间,其余命名空间就必须声明别名(主要是为了防止不同命名空间中的元素名的冲突)。这行代码是为下1行代码服务的,因为要用http://www.w3.org/2001/XMLSchema-instance命名空间里的nonamespaceschemaLocation属性引入schema文档。
    xsi:nonamespaceschemaLocation="note.xsd"指出note.xml文档引入的schema文档的路径,用xsi:nonamespaceschemaLocation属性引入无命名空间的schema文档,xsi:是命名空间前缀,必须加不能省,因为nonamespaceschemaLocation属性是 "http://www.w3.org/2001/XMLSchema-instance"命名空间定义的。
    如果要引入网络上的schema文档,则只要写出其网络路径即可,如xsi:nonamespaceschemaLocation="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"。
    2).引入有命名空间的schema文档
    xml文档引入一个有命名空间的schema文档时,使用这个有命名空间的schema文档中定义的元素时,必须加命名空间前缀!schema文档指定的命名空间由其根元素中的targetNamespace属性指定,后面会讲。
    注意,1个xml文档可以引入多个有命名空间的schema文档。
    note.xml文件内容如下,它引入了2个schema文件,其中note.xsd是无命名空间的,cra.xsd有命名空间且命名空间是http://www.crazyit.org/crazy
    <?xmlversion="1.0"?>
    <note
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:nonamespaceschemaLocation="note.xsd"
    xmlns:crazyns=”http://www.crazyit.org/crazy
    xsi:schemaLocation=”http://www.crazyit.org/crazy cra.xsd”>
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don'tforget the meeting!</body>
    </note>
    xsi:schemaLocation属性引入有命名空间的schema文档,属性值的格式是”命名空间名1 schema文档1路径 命名空间名2 schema文档2路径 …”,注意中间有空格。当引入多个schema文档时,一定要定义多个命名空间别名,如果没有引入无命名空间的schema文档,则最多可定义1个默认命名空间(即最多只有1个命名空间可以不定义别名)。note.xml文件引入cra.xsd后,如果要使用cra.xsd文档中定义的元素,则必须加crazyns:前缀。
    xmlns:crazyns=”http://www.crazyit.org/crazy”为命名空间http://www.crazyit.org/crazy定义别名为crazyns,并不是为下1行代码服务的,它的作用只是为命名空间定义一个别名,因为note.xml文件使用cra.xsd文档中定义的元素时,必须加crazyns:前缀。


    IP属地:浙江2楼2015-06-12 23:52
    回复(1)