以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  [求助]xsd一段验证问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=63744)


--  作者:dragonxml
--  发布时间:6/14/2008 8:49:00 PM

--  [求助]xsd一段验证问题
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Vladislav Gavrielov (Altova) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <!--总验证-->
 <xs:element name="expense-report">
  <xs:annotation>
   <xs:documentation>expense-report is the root element.</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <!--验证person-->
    <xs:element name="Person">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="First">
        <xs:simpleType>
         <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
         </xs:restriction>
        </xs:simpleType>
       </xs:element>
       <xs:element name="Last">
        <xs:simpleType>
         <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
         </xs:restriction>
        </xs:simpleType>
       </xs:element>
       <xs:element name="Title" type="xs:string"/>
       <xs:element name="Phone">
        <xs:simpleType>
         <xs:restriction base="xs:string">
          <xs:pattern value="[0-9 \-]*"/>
         </xs:restriction>
        </xs:simpleType>
       </xs:element>
       <xs:element name="Email" type="emailType"/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
    <!--/验证person-->
    <xs:element ref="expense-item" maxOccurs="unbounded"/>
    <!--ref127line-->
    <!--引用expense-item(expense-item在下面验证) -->
   </xs:sequence>
   <xs:attribute name="detailed" type="xs:boolean" use="required"/>
   <xs:attribute name="currency" use="required">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:enumeration value="USD"/>
      <xs:enumeration value="Euro"/>
      <xs:enumeration value="JPY"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
   <xs:attribute name="total-sum" type="xs:decimal" use="required"/>
   <!--top-->
  </xs:complexType>
 </xs:element>
 <!--**********************************************************-->
从这开始
 <!--/总验证-->
 <xs:element name="expense" type="xs:decimal"/>
 <!--expense-item中expense验证-->
 <xs:complexType name="TextType" mixed="true">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
   <xs:element ref="strong"/>
   <xs:element ref="italic"/>
  </xs:choice>
  <!--??????????????????????-->
 </xs:complexType>
 <xs:element name="description" type="TextType"/>
 <!--expense-item中description验证-->
 <!--/expense-item-->
 <xs:element name="Travel">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="Destination" type="xs:string"/>
    <xs:element name="Mileage" type="xs:decimal" minOccurs="0"/>
   </xs:sequence>
   <xs:attribute name="means">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:enumeration value="Taxi"/>
      <xs:enumeration value="CharterAir"/>
      <xs:enumeration value="Airline"/>
      <xs:enumeration value="Limo"/>
      <xs:enumeration value="CharterSea"/>
      <xs:enumeration value="Rail"/>
      <xs:enumeration value="CharterLand"/>
      <xs:enumeration value="Bus"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
  </xs:complexType>
 </xs:element>
 <xs:element name="Meal">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="Name" type="xs:string" minOccurs="0"/>
    <xs:element ref="Location"/>
   </xs:sequence>
   <xs:attribute name="mealtype">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:enumeration value="dinner"/>
      <xs:enumeration value="breakfast"/>
      <xs:enumeration value="lunch"/>
      <xs:enumeration value="other"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
  </xs:complexType>
 </xs:element>
 <xs:element name="Parking">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="Location"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="Date" type="xs:date"/>
 <xs:simpleType name="emailType">
  <xs:restriction base="xs:string">
   <xs:pattern value="[\p{L}_-]+(\.[\p{L}_-]+)*@[\p{L}_]+(\.[\p{L}_]+)+"/>
  </xs:restriction>
 </xs:simpleType>
到这结束
 <!--**********************************************************-->
 <!--验证expense-item-->
 <xs:element name="expense-item">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="Date"/>
    <xs:element ref="expense"/>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:element ref="Meal"/>
     <xs:element name="Lodging">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="Name" type="xs:string" minOccurs="0"/>
        <xs:element ref="Location"/>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
     <xs:element ref="Travel"/>
     <xs:element ref="Parking"/>
     <xs:element name="Entertainment">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="Client-name" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
      </xs:complexType>
     </xs:element>
     <xs:element name="Misc">
      <xs:complexType>
       <xs:attribute name="misctype">
        <xs:simpleType>
         <xs:restriction base="xs:string">
          <xs:enumeration value="TeamBuilding"/>
          <xs:enumeration value="Tips"/>
          <xs:enumeration value="Fines"/>
          <xs:enumeration value="Rental"/>
          <xs:enumeration value="EverythingElse"/>
          <xs:enumeration value="Tolls"/>
          <xs:enumeration value="Telephone"/>
         </xs:restriction>
        </xs:simpleType>
       </xs:attribute>
      </xs:complexType>
     </xs:element>
    </xs:choice>
    <xs:element ref="description" minOccurs="0"/>
   </xs:sequence>
   <xs:attribute name="type" use="required">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:enumeration value="Meal"/>
      <xs:enumeration value="Lodging"/>
      <xs:enumeration value="Travel"/>
      <xs:enumeration value="Parking"/>
      <xs:enumeration value="Entertainment"/>
      <xs:enumeration value="Misc"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
   <xs:attribute name="expto" use="required">
    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:enumeration value="Development"/>
      <xs:enumeration value="Marketing"/>
      <xs:enumeration value="Accounting"/>
      <xs:enumeration value="Sales"/>
      <xs:enumeration value="Operations"/>
      <xs:enumeration value="Support"/>
      <xs:enumeration value="IT"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
   <!--type验证 type-->
   <!--/type验证-->
   <!--expto验证 expense to-->
   <!--expto验证-->
   <!--expense-item说明-->
   <!--/-->
   <!--page type xml定义-->
   <!--/page type-->
  </xs:complexType>
 </xs:element>
 <!--/验证expense-item-->
 <xs:element name="Location" type="xs:string"/>
 <xs:element name="strong" type="TextType"/>
 <xs:element name="italic" type="TextType"/>
</xs:schema>
xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Vladislav Gavrielov (Altova) -->
<?altova_sps ExpReport.sps?>
<expense-report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ExpReport.xsd" currency="USD" detailed="false" total-sum="556.9">
 <Person>
  <First>Fred</First>
  <Last>Landis</Last>
  <Title>Project Manager</Title>
  <Phone>123-456-7890</Phone>
  <Email>f.landis@nanonull.com</Email>
 </Person>
 <expense-item type="Lodging" expto="Sales">
  <Date>2003-01-01</Date>
  <expense>122.11</expense>
 </expense-item>
 <expense-item type="Lodging" expto="Development">
  <Date>2003-01-02</Date>
  <expense>122.12</expense>
  <description>Played penny arcade</description>
 </expense-item>
 <expense-item type="Lodging" expto="Marketing">
  <Date>2003-01-02</Date>
  <expense>299.45</expense>
  <description>Treated Clients</description>
 </expense-item>
 <expense-item type="Entertainment" expto="Development">
  <Date>2003-01-02</Date>
  <expense>13.22</expense>
  <Misc misctype="TeamBuilding"/>
  <description>Bought signed &quot;XMLSPY Handbook&quot; from Larry Kim</description>
 </expense-item>
</expense-report>

[此贴子已经被作者于2008-6-14 21:19:56编辑过]

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