以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  请教如何要求元素非空?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=24071)


--  作者:nightsmk2
--  发布时间:11/8/2005 4:42:00 PM

--  请教如何要求元素非空?
想要在Schema中增加要求元素非空的校验,原来使用将元素type设置成NMTOKEN的方法,但是,现在发现这样设置的话如果元素内容中包括()+=这种运算符的话也无法通过校验,请教各位还有别的校验非空的方法么?谢谢
--  作者:kater
--  发布时间:11/9/2005 8:59:00 AM

--  
手动检测
--  作者:nightsmk2
--  发布时间:11/9/2005 9:02:00 AM

--  
在程序中校验当然可以,但是这个Schema作为EAI使用的原数据的规范,是要求和代码无关的。
--  作者:nightsmk2
--  发布时间:11/14/2005 9:42:00 AM

--  
呵呵,我搞定了,用一个简单的正则表达式限制即可
--  作者:98900969r
--  发布时间:11/19/2005 5:49:00 AM

--  
有个简单一点的办法,定义元素时把nillable设为false。例如:
<element name="a" type="int" nillable="false"/>

--  作者:wanglei922
--  发布时间:12/24/2005 4:30:00 PM

--  
nillabel="false"好像也不能使它满足非空的约束哦//
请指点一下,我试了下也不行
--  作者:98900969r
--  发布时间:12/24/2005 6:29:00 PM

--  
不好意思,我说错了!nillable 的作用恰恰是相反的,当为数值类型时,nillable让元素可以为空,以表达一个空值,这时要在数据XML中用xsi:nil=“true”来指示。

再想想这个问题其实只对字符型内容存在。这样的话,楼主一开始(1楼)用的办法就不错,对很多情况都是有效的,而后来(4楼)采用的办法是通用的办法。

还是有一种简单一点的办法。如下:

    <xs:element name="non-empty-string">
     <xs:simpleType>
      <xs:restriction base="xs:token">
       <xs:minLength value="1"/>
      </xs:restriction>
     </xs:simpleType>
    </xs:element>

[此贴子已经被作者于2005-12-24 18:52:43编辑过]

--  作者:nightsmk2
--  发布时间:12/27/2005 2:18:00 PM

--  
限制长度的方法挺好,我的正则表达式是采用:
 <xs:simpleType name="not_null_rule">
  <xs:restriction base="xs:string">
   <xs:pattern value=".+"/>
  </xs:restriction>
 </xs:simpleType>

--  作者:98900969r
--  发布时间:12/27/2005 5:10:00 PM

--  
是不错,看来要加强学习。
--  作者:zhwpost
--  发布时间:4/20/2006 4:05:00 PM

--  
学习中

--  作者:gaoyang075800
--  发布时间:5/4/2008 11:39:00 AM

--  
不懂的好多...
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
812.500ms