以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  问几个Schema约束。  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=36254)


--  作者:summer999
--  发布时间:7/31/2006 11:21:00 AM

--  问几个Schema约束。
1.元素内容必须输入。
2.位数约束(全角按2个字符算)
3.输入值得约束:001~035,100~999中
像下面这个XML
<H>
<A>001</A>
<B>TEXT</B>
</H>
要求元素A:必须输入,3位,001~035或100~999中的一个
元素B:128位字符(全角算2位)。

谢谢。


--  作者:gemingke
--  发布时间:7/31/2006 10:13:00 PM

--  
第一条没看明白

第二条,使用length约束,包括minlength和maxlength

第三条,造两个type,一个适合001~035,一个适合100~999,然后union在一起

关于第三条,由于是必须为三位,不足者补0,所以得造三个simpleType
代码如下:
<xs:simpleType name="A">
  <xs:restriction base="xs:string">
   <xs:pattern value="[0]{1}[0-2]{1}[0-9]{1}"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="B">
  <xs:restriction base="xs:string">
   <xs:pattern value="[0]{1}[3]{1}[0-5]{1}"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="C">
  <xs:restriction base="xs:string">
   <xs:pattern value="[1-9]{1}\d{1}\d{1}"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="ABC">
  <xs:union memberTypes="A B C"/>
 </xs:simpleType>
ABC就是最后想要的type


--  作者:summer999
--  发布时间:8/1/2006 9:50:00 AM

--  
谢谢楼上的
再麻烦一下,关于位数约束,length约束好像把全角当作1个字符的。

另外我需要做17个xsd文件,其中好多simpleType都是一样的,能不能只定义一个,在所有需要用到的xsd文件中引用?


--  作者:gemingke
--  发布时间:8/1/2006 5:58:00 PM

--  
你所说的全角,我不太明白。我只知道汉字占两个字符。

关于引用,建议你在每个xsd文件里都写上。虽然说,schema提供了import和includ来导入其他的xsd文件,使得我们可以在当前xsd文档中使用其他xsd文档的定义。


--  作者:summer999
--  发布时间:8/1/2006 6:16:00 PM

--  
就是汉字拉什么的
比如
半角:1
全角:1
试了下汉字好像只当作1个字符。

<simpleType name="STR_8">
 <restriction base="string">
  <minLength value="1"/>
  <maxLength value="8"/>
 </restriction>
</simpleType>
上面这个simpleType对于中华人民共和国和12345678都能通过。

另外我有很多8位字符,12位字符,32位字符,127位字符等等之类的约束,是不是只能一个一个写出来?


--  作者:summer999
--  发布时间:8/1/2006 6:16:00 PM

--  
就是汉字拉什么的
比如
半角:1
全角:1
试了下汉字好像只当作1个字符。

<simpleType name="STR_8">
 <restriction base="string">
  <minLength value="1"/>
  <maxLength value="8"/>
 </restriction>
</simpleType>
上面这个simpleType对于中华人民共和国和12345678都能通过。

另外我有很多8位字符,12位字符,32位字符,127位字符等等之类的约束,是不是只能一个一个写出来?


--  作者:gemingke
--  发布时间:8/1/2006 9:27:00 PM

--  
我想可能是。我也没试过
--  作者:lelecat2000
--  发布时间:10/16/2006 11:30:00 AM

--  
以下是引用gemingke在2006-7-31 22:13:00的发言:
第一条没看明白

第二条,使用length约束,包括minlength和maxlength

第三条,造两个type,一个适合001~035,一个适合100~999,然后union在一起

关于第三条,由于是必须为三位,不足者补0,所以得造三个simpleType
代码如下:
<xs:simpleType name="A">
   <xs:restriction base="xs:string">
    <xs:pattern value="[0]{1}[0-2]{1}[0-9]{1}"/>
   </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="B">
   <xs:restriction base="xs:string">
    <xs:pattern value="[0]{1}[3]{1}[0-5]{1}"/>
   </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="C">
   <xs:restriction base="xs:string">
    <xs:pattern value="[1-9]{1}\d{1}\d{1}"/>
   </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ABC">
   <xs:union memberTypes="A B C"/>
  </xs:simpleType>
ABC就是最后想要的type



此位仁兄真乃高人也,小生佩服。


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