zoukankan      html  css  js  c++  java
  • xmlns 与 targetNamespace 的解释

    test.xsd文件:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema elementFormDefault="qualified" 
    targetNamespace="http://xxx/myxml"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns="http://xxx/myxml">
        <xs:element name="my-document">
            <xs:complexType>
                <xs:choice>
                    <xs:element name="my-mn"/>
                    <xs:element name="my-case"/>
                </xs:choice>
                </xs:complexType>
        </xs:element>
        <xs:element name="my-mn"/>
        <xs:element name="my-case">
            <xs:complexType>
                <xs:choice>
                    <xs:element ref="my-mn"/>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    
    test.xml文件:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <my-document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://xxx/myxml" 
    xsi:schemaLocation="http://xxx/myxml test.xsd">
    <my-case>
    <my-mn>
    </my-mn>
    </my-case>
    </my-document>


    targetNamespace 是一个被xml文件某些元素的xmlns或xmlns:xxx属性引用的目标命名空间值,其值通常以URI形式存在. 它也可以被自身xsd文件schema元素的xmlns属性引用.(红色字体部分) xmlns或xmlns:xxx决定了某元素的归属问题,也包括 ref 所指向的值, 如:<xs:element ref="my-mn"/>中的 my-mn. 这里的问题就是: xsd文件中红色字体部分: xmlns="http://xxx/myxml" 是否一定要出现? 答案是:不一定. 在这个xsd中,它是一定要出现的, 否则 <xs:element ref="my-mn"/> 中的 my-mn 找不到命名空间, 如果把它改成 <xs:element name="my-mn"/> ,则可以不出现. 在xml文件中,如果使用的 xsd 定义的元素(无前缀),则 xmlns="http://xxx/myxml" 必须出现在xml文件中,且跟targetNamespace 的值保持一致. 而 xsi:schemaLocation 则是该 xsd文件的真实地址(每两个值为一对,取自第二个值), 否则无法通过 schema 验证.
  • 相关阅读:
    (九十三)蓝牙的基本使用
    (九十二)加速计的用法(过期方法+新方法)
    (九十一)距离传感器的使用
    1060. Are They Equal (25)
    (九十)使用多个storyboard+代码实现控制器的分开管理
    (八十九)用AutoLayout实现动画和Label根据内容自动调整
    HDU 2013:蟠桃记
    HDU 2050:折线分割平面
    HDU 2042:不容易系列之二
    HDU 1465:不容易系列之一
  • 原文地址:https://www.cnblogs.com/yipeng-yu/p/8558409.html
Copyright © 2011-2022 走看看