xsd 文件中 complexType的子元素的长度限制

begoodluck 发布于 2012/06/02 12:10
阅读 1K+
收藏 0

xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<root>
  <user>
    <firstname>qiu</firstname>
    <lastname>tina</lastname>
  </user>

</root>

xsd文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="user"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="user">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="firstname"/>
        <xs:element ref="lastname"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="firstname" type="xs:NCName"/>
  <xs:element name="lastname" type="xs:NCName"/>
</xs:schema>

我的问题是对firstname 和 lastname的字符长度进行控制,比如firstname长度不能大于10,lastname长度不能大于30,这样xsd文件要怎么写呢?

我现在有一种比较笨的写法如下:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:simpleType name="NCName_010">
    <xs:restriction base="xs:NCName">
      <xs:maxLength value="10"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="NCName_030">
    <xs:restriction base="xs:NCName">
      <xs:maxLength value="30"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="user"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="user">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="firstname"/>
        <xs:element ref="lastname"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="firstname" type="NCName_010"/>
  <xs:element name="lastname" type="NCName_030"/>
</xs:schema>

我觉得我这种写法很不灵活,我刚才接触xsd,是一个菜鸟,哪位大哥大姐有比较灵活的写法分享一下,谢谢!

加载中
0
JqbR001
JqbR001
  <xs:element name="firstname" type="firstnameType"/>
  <xs:element name="lastname" type="lastnameType"/>
  <xs:simpleType name="firstnameType">
	<xs:restriction base="xs:string">
		<xs:maxLength  value="10"/>
	</xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="lastnameType">
	<xs:restriction base="xs:string">
		<xs:maxLength  value="30"/>
	</xs:restriction>
  </xs:simpleType>

<!--不知道行不行,试试吧,好久没用了-->

b
begoodluck
回复 @jqbmaster : 哦,谢谢
JqbR001
JqbR001
好像没有,schema是挺麻烦 但是这样也不错嘛,定义一个简单类型,别的地方用到直接引用 只有简单啊 能限制就行啦=-=
b
begoodluck
其实我是想有没有像这样的<xs:element name="firstname" maxLength="10"/>这样子简洁写法
b
begoodluck
你的写法与我的写法一样了
返回顶部
顶部