新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> DTD, XML Schema(XMLS), RELAX NG
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DTD/XML Schema 』 → 关于schema中unique遇到的问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4901 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 关于schema中unique遇到的问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     calmness 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:68
      门派:XML.ORG.CN
      注册:2007/4/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给calmness发送一个短消息 把calmness加入好友 查看calmness的个人资料 搜索calmness在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看calmness的博客楼主
    发贴心情 关于schema中unique遇到的问题

    今天在写一个schema时,使用unique遇到个问题,xml文件使用noNamespaceSchemaLocation指定schema的时候,遇到重复的数据就会正常报错,然而如果使用命名空间的话就可以保存,不会报重复值的错误,但是其他验证却又正常,仅仅只有验证unique时候才有问题,schema代码如下:
    以下内容为程序代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by wxb (nudt) -->
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.easyjfweb.com/easyjf-test"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
     <xs:element name="easyjf-web">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="forms">
         <xs:annotation>
          <xs:documentation>
           Forms标签定义,可包含一个或多个form标签
          </xs:documentation>
         </xs:annotation>
         <xs:complexType>
          <xs:sequence>
           <xs:element name="form" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
             <xs:documentation>
               form标签定义
                </xs:documentation>
            </xs:annotation>
            <xs:complexType>
             <xs:sequence>
              <xs:element name="property" maxOccurs="unbounded">
               <xs:complexType>
                <xs:attribute name="initial" type="xs:string"/>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="notNull" type="xs:string" default="no"/>
                <xs:attribute name="size" type="xs:integer"/>
                <xs:attribute name="type" type="xs:string" default="java.lang.String"/>
                <xs:attribute name="event" type="xs:string"/>
                <!--属性type类型默认为java.lang.String-->
               </xs:complexType>
              </xs:element>
             </xs:sequence>
             <xs:attribute name="name" type="xs:string"/>
             <xs:attribute name="alertType" type="xs:string"/>
             <xs:attribute name="bean" type="xs:string"/>
             <xs:attribute name="clientValidate" type="xs:boolean" default="false"/>
             <xs:attribute name="serverValidate" type="xs:boolean" default="false"/>
             <xs:attribute name="event" type="xs:string"/>
            </xs:complexType>
           </xs:element>
          </xs:sequence>
         </xs:complexType>
         <xs:unique name="EOneKeyU">
          <xs:selector xpath=".//form"/>
          <xs:field xpath="@name"/>
         </xs:unique>
        </xs:element>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
    </xs:schema>

    使用命名空间的XML:
    以下内容为程序代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <easyjf-web xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.easyjfweb.com/easyjf-test"
    xsi:schemaLocation="http://www.easyjfweb.com/easyjf-test testunique.xsd">
     <forms>
      <form name="aaa">
       <property name=""/>
      </form>
      <form name="aaa">
       <property name=""/>
      </form>
     </forms>
    </easyjf-web>

    上面这一个XML就会直接保存,不会报错,而下面不使用命名空间的XML就会正常报错:

    以下内容为程序代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <easyjf-web xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="testunique.xsd">
     <forms>
      <form name="aaa">
       <property name=""/>
      </form>
      <form name="aaa">
       <property name=""/>
      </form>
     </forms>
    </easyjf-web>

    注:当使用第二个XML时,需要把schema的targetNamespace删除掉。

    上面两个XML除了引用schema的方式不一样以外,其他都是一样的,可是验证的结果却不相同,请教schema高手,这是什么原因???


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/27 0:10:00
     
     gogy 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:493
      门派:XML.ORG.CN
      注册:2006/10/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gogy发送一个短消息 把gogy加入好友 查看gogy的个人资料 搜索gogy在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gogy的博客2
    发贴心情 
    xpath1.0不认识默认名称空间,它会把默认名称空间的元素当作无名称空间元素,默认名称空间元素根本无法被正确识别。
    需要明确的加前缀。如:
    <?xml version="1.0" encoding="UTF-8"?>
    <easyjf-web xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ejf="http://www.easyjfweb.com/easyjf-test"
    xsi:schemaLocation="http://www.easyjfweb.com/easyjf-test testunique.xsd">
    注意下面的xpath要写成:<xs:selector xpath=".//ejf:form"/>。
    当然,前缀我随意定的。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/27 0:20:00
     
     calmness 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:68
      门派:XML.ORG.CN
      注册:2007/4/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给calmness发送一个短消息 把calmness加入好友 查看calmness的个人资料 搜索calmness在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看calmness的博客3
    发贴心情 
    谢谢这位大哥,终于搞定了
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/27 0:25:00
     
     gogy 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:66
      积分:493
      门派:XML.ORG.CN
      注册:2006/10/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gogy发送一个短消息 把gogy加入好友 查看gogy的个人资料 搜索gogy在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gogy的博客4
    发贴心情 
    不客气。呵呵
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/27 0:27:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DTD/XML Schema 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/21 15:26:33

    本主题贴数4,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    66.406ms