XSD语法解析


  • xs:schema

Xml Schema的根元素,类似于HTML中的<html>标签,只出现一次。

  • 属性

<xs:schema xmlns="" -------表示此文档的默认命名空间
xmlns:xs="http://www.w3.org/2001/XMLSchema"-------表示数据类型等定义的来源,在我们这里就是来自w3
elementFormDefault="qualified">------表示要求xml文档的每一个元素都要有命名空间指定
……定义主体部分……
</xs:schema>


  • xs:annotation

xs:annotation,注释,出现此标签代表此处是一个注释,常与<xs:documentation>搭配使用,里面为注释内容。


  • xs:import

<xs:import>使得可以在当前的文档中使用其他文档中指定的命名空间中的定义元素

  • 属性
  • namespace
    引用的命名空间
  • schemaLocation
    被引用命名空间的文档
  • <xs:import namespace="http://www.travelport.com/schema/common_v45_0" schemaLocation="../common_v45_0/Common.xsd"/> 
    

  • xs:element

element 元素定义一个元素。

  • 属性
  • name
    规定元素的名称。如果父元素是 schema 元素,则此属性是必需的。
  • ref
    对另一个元素的引用。ref 属性可包含一个命名空间前缀。如果父元素是 schema 元素,则不是使用该属性。
    一般引用<xs:attribute>所定义的元素
  • type
    规定内建数据类型的名称
  • minOccurs
    规定 element 元素在父元素中可出现的最小次数。该值可以是大于或等于零的整数。默认值为 1
  • maxOccurs
    规定 element 元素在父元素中可出现的最大次数。该值可以是大于或等于零的整数。若不想对最大次数设置任何限制,请使用字符串 "unbounded"。 默认值为 1。
  •  <xs:element ref="OptionalServices" minOccurs="0"/>
     <xs:element ref="common:SupplierLocator" minOccurs="0" maxOccurs="999"/>
    
  • <xs:attribute name="OptionalServicesIndicator" type="xs:boolean" use="optional">
    <xs:annotation>
    <xs:documentation>Indicates true if flight provides
    optional services.</xs:documentation>
    </xs:annotation>
    </xs:attribute>
  • xs:attribute

attribute 元素定义一个属性。

  • <xs:attribute name="OptionalServicesIndicator" type="xs:boolean" use="optional">
          <xs:annotation>
              <xs:documentation>Indicates true if flight provides
                    optional services.</xs:documentation>
          </xs:annotation>
      </xs:attribute>
    
  • name
    规定属性的名称。name 和 ref 属性不能同时出现。
  • ref
    规定对指定的属性的引用。name 和 ref 属性不能同时出现。如果 ref 出现,则 simpleType 元素、form 和 type 不能出现。
  • type
    规定内建的数据类型或简单类型。type 属性只能在内容不包含 simpleType 元素时出现。
  • use
    规定如何使用该属性。可设置下面的值:
    optional - 属性是可选的并且可以具有任何值(默认)。
    prohibited - 不能使用属性。
    required - 属性的必需的。
  • xs:complexType

complexType 元素定义复杂类型。复杂类型的元素是包含其他元素和/或属性的 XML 元素。

  • 属性
  • name
    规定元素的名称。
  • 示例
  •  <xs:element name="AirReservation">
          <xs:annotation>
              <xs:documentation>The parent container for all booking data</xs:documentation>
          </xs:annotation>
          <xs:complexType>
              <xs:complexContent>//扩展标签
                  <xs:extension base="typeBaseAirReservation"/>//扩展内容
              </xs:complexContent>
          </xs:complexType>
      </xs:element>
    
  • 如上代码,定义了一个元素为"AirReservation",相当于一个类,name为类名,由另一个复杂类型 "typeBaseAirReservation" 对其进行扩展,typeBaseAirReservation相当于一个bean。
  • <xs:complexType name="typeBaseAirReservation">
      <xs:annotation>
          <xs:documentation>Parent Container for Air Reservation</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
          <xs:extension base="common:BaseReservation">
              <xs:sequence>//元素要求组中的元素以指定的顺序出现在包含元素中
                  <xs:element ref="OptionalServices" minOccurs="0"/>
                  <xs:element ref="common:SupplierLocator" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="common:ThirdPartyInformation" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="DocumentInfo" minOccurs="0"/>
                  <xs:element ref="common:BookingTravelerRef" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="common:ProviderReservationInfoRef" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="AirSegment" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="SvcSegment" minOccurs="0" maxOccurs="999">
                      <xs:annotation>
                          <xs:documentation>Service segment added to collect additional fee. 1P only</xs:documentation>
                      </xs:annotation>
                  </xs:element>
                  <xs:element ref="AirPricingInfo" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="common:Payment" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="common:CreditCardAuth" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="FareNote" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="FeeInfo" minOccurs="0" maxOccurs="999"/>
                  <xs:element name="TaxInfo" type="typeTaxInfoWithPaymentRef" minOccurs="0" maxOccurs="999">
                      <xs:annotation>
                          <xs:documentation>Itinerary level taxes</xs:documentation>
                      </xs:annotation>
                  </xs:element>
                  <xs:element ref="TicketingModifiers" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="AssociatedRemark" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="PocketItineraryRemark" minOccurs="0" maxOccurs="999"/>
                  <xs:element ref="AirExchangeBundleTotal" minOccurs="0" maxOccurs="1"/>
                  <xs:element ref="AirExchangeBundle" minOccurs="0" maxOccurs="999">
                      <xs:annotation>
                          <xs:documentation>Bundle exchange, pricing, and penalty information. Providers ACH/1G/1V/1P</xs:documentation>
                      </xs:annotation>
                  </xs:element>
              </xs:sequence>
          </xs:extension>
      </xs:complexContent>
      </xs:complexType>
    
  • 如上代码,就是一个复杂类型,一个element代表一个元素,ref为该元素的引用,minOccurs为该元素允许出现的最小次数,maxOccurs为允许出现的最大次数,ref中内容通常为一个xs:attribute,也就是一个属性。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容