2011-05-10 97 views
2

是否可以對XSD文檔中的其他元素值進行限制。例如,我有國家和國家元素。如果國家是平等的美國,那麼我需要限制指定枚舉的狀態元素值,否則狀態可以只是一個固定長度的字符串。當前XSD的狀態一直限制爲枚舉:對其他元素值的XSD限制

<xsd:simpleType name="country"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="ABW"/> 
     <xsd:enumeration value="AFG"/> 
     <xsd:enumeration value="AGO"/> 
     <xsd:enumeration value="AIA"/> 
     <xsd:enumeration value="ALA"/> 
     <xsd:enumeration value="ALB"/> 
     <xsd:enumeration value="AND"/> 
     <xsd:enumeration value="ANT"/> 
     <xsd:enumeration value="ARE"/> 
     <xsd:enumeration value="ARG"/> 
     <xsd:enumeration value="ARM"/> 
     <xsd:enumeration value="ASM"/> 
     <xsd:enumeration value="ATA"/> 
     <xsd:enumeration value="ATF"/> 
     <xsd:enumeration value="ATG"/> 
     <xsd:enumeration value="AUS"/> 
     <xsd:enumeration value="AUT"/> 
     <xsd:enumeration value="AZE"/> 
     <xsd:enumeration value="BDI"/> 
     <xsd:enumeration value="BEL"/> 
     <xsd:enumeration value="BEN"/> 
     <xsd:enumeration value="BFA"/> 
     <xsd:enumeration value="BGD"/> 
     <xsd:enumeration value="BGR"/> 
     <xsd:enumeration value="BHR"/> 
     <xsd:enumeration value="BHS"/> 
     <xsd:enumeration value="BIH"/> 
     <xsd:enumeration value="BLM"/> 
     <xsd:enumeration value="BLR"/> 
     <xsd:enumeration value="BLZ"/> 
     <xsd:enumeration value="BMU"/> 
     <xsd:enumeration value="BOL"/> 
     <xsd:enumeration value="BRA"/> 
     <xsd:enumeration value="BRB"/> 
     <xsd:enumeration value="BRN"/> 
     <xsd:enumeration value="BTN"/> 
     <xsd:enumeration value="BVT"/> 
     <xsd:enumeration value="BWA"/> 
     <xsd:enumeration value="CAF"/> 
     <xsd:enumeration value="CAN"/> 
     <xsd:enumeration value="CCK"/> 
     <xsd:enumeration value="CHE"/> 
     <xsd:enumeration value="CHL"/> 
     <xsd:enumeration value="CHN"/> 
     <xsd:enumeration value="CIV"/> 
     <xsd:enumeration value="CMR"/> 
     <xsd:enumeration value="COD"/> 
     <xsd:enumeration value="COG"/> 
     <xsd:enumeration value="COK"/> 
     <xsd:enumeration value="COL"/> 
     <xsd:enumeration value="COM"/> 
     <xsd:enumeration value="CPV"/> 
     <xsd:enumeration value="CRI"/> 
     <xsd:enumeration value="CUB"/> 
     <xsd:enumeration value="CXR"/> 
     <xsd:enumeration value="CYM"/> 
     <xsd:enumeration value="CYP"/> 
     <xsd:enumeration value="CZE"/> 
     <xsd:enumeration value="DEU"/> 
     <xsd:enumeration value="DJI"/> 
     <xsd:enumeration value="DMA"/> 
     <xsd:enumeration value="DNK"/> 
     <xsd:enumeration value="DOM"/> 
     <xsd:enumeration value="DZA"/> 
     <xsd:enumeration value="ECU"/> 
     <xsd:enumeration value="EGY"/> 
     <xsd:enumeration value="ENG"/> 
     <xsd:enumeration value="ERI"/> 
     <xsd:enumeration value="ESH"/> 
     <xsd:enumeration value="ESP"/> 
     <xsd:enumeration value="EST"/> 
     <xsd:enumeration value="ETH"/> 
     <xsd:enumeration value="FIN"/> 
     <xsd:enumeration value="FJI"/> 
     <xsd:enumeration value="FLK"/> 
     <xsd:enumeration value="FRA"/> 
     <xsd:enumeration value="FRO"/> 
     <xsd:enumeration value="FSM"/> 
     <xsd:enumeration value="GAB"/> 
     <xsd:enumeration value="GBR"/> 
     <xsd:enumeration value="GEO"/> 
     <xsd:enumeration value="GGY"/> 
     <xsd:enumeration value="GHA"/> 
     <xsd:enumeration value="GIB"/> 
     <xsd:enumeration value="GIN"/> 
     <xsd:enumeration value="GLP"/> 
     <xsd:enumeration value="GMB"/> 
     <xsd:enumeration value="GNB"/> 
     <xsd:enumeration value="GNQ"/> 
     <xsd:enumeration value="GRC"/> 
     <xsd:enumeration value="GRD"/> 
     <xsd:enumeration value="GRL"/> 
     <xsd:enumeration value="GTM"/> 
     <xsd:enumeration value="GUF"/> 
     <xsd:enumeration value="GUM"/> 
     <xsd:enumeration value="GUY"/> 
     <xsd:enumeration value="HKG"/> 
     <xsd:enumeration value="HMD"/> 
     <xsd:enumeration value="HND"/> 
     <xsd:enumeration value="HRV"/> 
     <xsd:enumeration value="HTI"/> 
     <xsd:enumeration value="HUN"/> 
     <xsd:enumeration value="IDN"/> 
     <xsd:enumeration value="IMN"/> 
     <xsd:enumeration value="IND"/> 
     <xsd:enumeration value="IOT"/> 
     <xsd:enumeration value="IRL"/> 
     <xsd:enumeration value="IRN"/> 
     <xsd:enumeration value="IRQ"/> 
     <xsd:enumeration value="ISL"/> 
     <xsd:enumeration value="ISR"/> 
     <xsd:enumeration value="ITA"/> 
     <xsd:enumeration value="JAM"/> 
     <xsd:enumeration value="JEY"/> 
     <xsd:enumeration value="JOR"/> 
     <xsd:enumeration value="JPN"/> 
     <xsd:enumeration value="KAZ"/> 
     <xsd:enumeration value="KEN"/> 
     <xsd:enumeration value="KGZ"/> 
     <xsd:enumeration value="KHM"/> 
     <xsd:enumeration value="KIR"/> 
     <xsd:enumeration value="KNA"/> 
     <xsd:enumeration value="KOR"/> 
     <xsd:enumeration value="KOS"/> 
     <xsd:enumeration value="KWT"/> 
     <xsd:enumeration value="LAO"/> 
     <xsd:enumeration value="LBN"/> 
     <xsd:enumeration value="LBR"/> 
     <xsd:enumeration value="LBY"/> 
     <xsd:enumeration value="LCA"/> 
     <xsd:enumeration value="LIE"/> 
     <xsd:enumeration value="LKA"/> 
     <xsd:enumeration value="LSO"/> 
     <xsd:enumeration value="LTU"/> 
     <xsd:enumeration value="LUX"/> 
     <xsd:enumeration value="LVA"/> 
     <xsd:enumeration value="MAC"/> 
     <xsd:enumeration value="MAF"/> 
     <xsd:enumeration value="MAR"/> 
     <xsd:enumeration value="MCO"/> 
     <xsd:enumeration value="MDA"/> 
     <xsd:enumeration value="MDG"/> 
     <xsd:enumeration value="MDV"/> 
     <xsd:enumeration value="MEX"/> 
     <xsd:enumeration value="MHL"/> 
     <xsd:enumeration value="MKD"/> 
     <xsd:enumeration value="MLI"/> 
     <xsd:enumeration value="MLT"/> 
     <xsd:enumeration value="MMR"/> 
     <xsd:enumeration value="MNE"/> 
     <xsd:enumeration value="MNG"/> 
     <xsd:enumeration value="MNP"/> 
     <xsd:enumeration value="MOZ"/> 
     <xsd:enumeration value="MRT"/> 
     <xsd:enumeration value="MSR"/> 
     <xsd:enumeration value="MTQ"/> 
     <xsd:enumeration value="MUS"/> 
     <xsd:enumeration value="MWI"/> 
     <xsd:enumeration value="MYS"/> 
     <xsd:enumeration value="MYT"/> 
     <xsd:enumeration value="NAM"/> 
     <xsd:enumeration value="NAP"/> 
     <xsd:enumeration value="NCL"/> 
     <xsd:enumeration value="NER"/> 
     <xsd:enumeration value="NFK"/> 
     <xsd:enumeration value="NGA"/> 
     <xsd:enumeration value="NIC"/> 
     <xsd:enumeration value="NIR"/> 
     <xsd:enumeration value="NIU"/> 
     <xsd:enumeration value="NLD"/> 
     <xsd:enumeration value="NOR"/> 
     <xsd:enumeration value="NPL"/> 
     <xsd:enumeration value="NRE"/> 
     <xsd:enumeration value="NRU"/> 
     <xsd:enumeration value="NZL"/> 
     <xsd:enumeration value="OMN"/> 
     <xsd:enumeration value="PAK"/> 
     <xsd:enumeration value="PAN"/> 
     <xsd:enumeration value="PCN"/> 
     <xsd:enumeration value="PER"/> 
     <xsd:enumeration value="PHL"/> 
     <xsd:enumeration value="PLW"/> 
     <xsd:enumeration value="PNG"/> 
     <xsd:enumeration value="POL"/> 
     <xsd:enumeration value="PRI"/> 
     <xsd:enumeration value="PRK"/> 
     <xsd:enumeration value="PRT"/> 
     <xsd:enumeration value="PRY"/> 
     <xsd:enumeration value="PSE"/> 
     <xsd:enumeration value="PYF"/> 
     <xsd:enumeration value="QAT"/> 
     <xsd:enumeration value="REU"/> 
     <xsd:enumeration value="ROU"/> 
     <xsd:enumeration value="RUS"/> 
     <xsd:enumeration value="RWA"/> 
     <xsd:enumeration value="SAU"/> 
     <xsd:enumeration value="SCT"/> 
     <xsd:enumeration value="SDN"/> 
     <xsd:enumeration value="SEN"/> 
     <xsd:enumeration value="SGP"/> 
     <xsd:enumeration value="SGS"/> 
     <xsd:enumeration value="SHN"/> 
     <xsd:enumeration value="SJM"/> 
     <xsd:enumeration value="SLB"/> 
     <xsd:enumeration value="SLE"/> 
     <xsd:enumeration value="SLV"/> 
     <xsd:enumeration value="SMR"/> 
     <xsd:enumeration value="SOM"/> 
     <xsd:enumeration value="SPM"/> 
     <xsd:enumeration value="SRB"/> 
     <xsd:enumeration value="STP"/> 
     <xsd:enumeration value="SUR"/> 
     <xsd:enumeration value="SVK"/> 
     <xsd:enumeration value="SVN"/> 
     <xsd:enumeration value="SWE"/> 
     <xsd:enumeration value="SWZ"/> 
     <xsd:enumeration value="SYC"/> 
     <xsd:enumeration value="SYR"/> 
     <xsd:enumeration value="TCA"/> 
     <xsd:enumeration value="TCD"/> 
     <xsd:enumeration value="TGO"/> 
     <xsd:enumeration value="THA"/> 
     <xsd:enumeration value="TJK"/> 
     <xsd:enumeration value="TKL"/> 
     <xsd:enumeration value="TKM"/> 
     <xsd:enumeration value="TLS"/> 
     <xsd:enumeration value="TON"/> 
     <xsd:enumeration value="TTO"/> 
     <xsd:enumeration value="TUN"/> 
     <xsd:enumeration value="TUR"/> 
     <xsd:enumeration value="TUV"/> 
     <xsd:enumeration value="TWN"/> 
     <xsd:enumeration value="TZA"/> 
     <xsd:enumeration value="UGA"/> 
     <xsd:enumeration value="UKR"/> 
     <xsd:enumeration value="UMI"/> 
     <xsd:enumeration value="URY"/> 
     <xsd:enumeration value="USA"/> 
     <xsd:enumeration value="UZB"/> 
     <xsd:enumeration value="VAT"/> 
     <xsd:enumeration value="VCT"/> 
     <xsd:enumeration value="VEN"/> 
     <xsd:enumeration value="VGB"/> 
     <xsd:enumeration value="VIR"/> 
     <xsd:enumeration value="VNM"/> 
     <xsd:enumeration value="VUT"/> 
     <xsd:enumeration value="WAL"/> 
     <xsd:enumeration value="WLF"/> 
     <xsd:enumeration value="WSM"/> 
     <xsd:enumeration value="YEM"/> 
     <xsd:enumeration value="YUG"/> 
     <xsd:enumeration value="ZAF"/> 
     <xsd:enumeration value="ZMB"/> 
     <xsd:enumeration value="ZWE"/> 
     <xsd:enumeration value=""/> 
    </xsd:restriction> 
</xsd:simpleType> 

<xsd:simpleType name="state"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="AB"/> 
     <xsd:enumeration value="AL"/> 
     <xsd:enumeration value="AK"/> 
     <xsd:enumeration value="AS"/> 
     <xsd:enumeration value="AZ"/> 
     <xsd:enumeration value="AR"/> 
     <xsd:enumeration value="BC"/> 
     <xsd:enumeration value="CA"/> 
     <xsd:enumeration value="CO"/> 
     <xsd:enumeration value="CT"/> 
     <xsd:enumeration value="DE"/> 
     <xsd:enumeration value="FL"/> 
     <xsd:enumeration value="GA"/> 
     <xsd:enumeration value="GU"/> 
     <xsd:enumeration value="HI"/> 
     <xsd:enumeration value="ID"/> 
     <xsd:enumeration value="IL"/> 
     <xsd:enumeration value="IN"/> 
     <xsd:enumeration value="IA"/> 
     <xsd:enumeration value="KS"/> 
     <xsd:enumeration value="KY"/> 
     <xsd:enumeration value="LA"/> 
     <xsd:enumeration value="ME"/> 
     <xsd:enumeration value="MH"/> 
     <xsd:enumeration value="MD"/> 
     <xsd:enumeration value="MA"/> 
     <xsd:enumeration value="MB"/> 
     <xsd:enumeration value="MI"/> 
     <xsd:enumeration value="MN"/> 
     <xsd:enumeration value="MS"/> 
     <xsd:enumeration value="MO"/> 
     <xsd:enumeration value="MT"/> 
     <xsd:enumeration value="NB"/> 
     <xsd:enumeration value="NE"/> 
     <xsd:enumeration value="NV"/> 
     <xsd:enumeration value="NH"/> 
     <xsd:enumeration value="NJ"/> 
     <xsd:enumeration value="NL"/> 
     <xsd:enumeration value="NM"/> 
     <xsd:enumeration value="NY"/> 
     <xsd:enumeration value="NC"/> 
     <xsd:enumeration value="ND"/> 
     <xsd:enumeration value="NS"/> 
     <xsd:enumeration value="MP"/> 
     <xsd:enumeration value="OH"/> 
     <xsd:enumeration value="OK"/> 
     <xsd:enumeration value="ON"/> 
     <xsd:enumeration value="OR"/> 
     <xsd:enumeration value="PA"/> 
     <xsd:enumeration value="PE"/> 
     <xsd:enumeration value="PR"/> 
     <xsd:enumeration value="PW"/> 
     <xsd:enumeration value="QC"/> 
     <xsd:enumeration value="RI"/> 
     <xsd:enumeration value="SC"/> 
     <xsd:enumeration value="SD"/> 
     <xsd:enumeration value="SK"/> 
     <xsd:enumeration value="TN"/> 
     <xsd:enumeration value="TX"/> 
     <xsd:enumeration value="UT"/> 
     <xsd:enumeration value="VT"/> 
     <xsd:enumeration value="VI"/> 
     <xsd:enumeration value="VA"/> 
     <xsd:enumeration value="WA"/> 
     <xsd:enumeration value="WV"/> 
     <xsd:enumeration value="WI"/> 
     <xsd:enumeration value="WY"/> 
     <xsd:enumeration value=""/> 
    </xsd:restriction> 
</xsd:simpleType> 

感謝您的任何建議!

回答

0

不幸的是,XML Schema不提供對此的支持。但是,像Schematron這樣的東西可以幫助你。

0


Source
看起來像元素值驗證不會對其他元件的輸入值是可能的。