2014-01-29 2 views
0

.xsd 스키마를 만들고 특성을 지정해야합니다. 내가 어떻게 할 수 있니?XSD 특성 지정

<?xml version="1.0" encoding="UTF-8"?> 
<ConfigData> 
    <GlobalSettings>  
     <Logging param="Off"/> <-- param can be only in 'On' or 'Off' statement --> 
    </GlobalSettings> 
</ConfigData> 

나는 이런 식으로 뭔가를 만들어,하지만

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="ConfigData"> 
    <xs:complexType> 
     <xs:element name="GlobalSettings"> 
      <xs:complexType>    
      <xs:simpleType name="statement"> 
       <xs:restriction base="xs:string"> 
        <xs:enumeration value="On"/> 
        <xs:enumeration value="Off"/> 
       </xs:restriction> 
      </xs:simpleType> 
      <xs:element name="Logging"> 
       <xs:complexType> 
        <xs:extension base="xs:string"> 
         <xs:attribute name="param" type="statement" use="required"/> 
        </xs:extension> 
       </xs:complexType> 
      </xs:element> 
      </xs:complexType> 
     </xs:element> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

유익한 질문이 있으시면 pls – Naren

+0

질문에 대한 대답이 도움이 되었습니까? –

답변

1
<price currency="euros">20000.00</price> 

은 다음 하나에 통화 속성을 제한 작동 어쩌려 구`t : 새를 정의하면

euros 
pounds 
dollars 


<xs:simpleType name="curr"> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="pounds" /> 
    <xs:enumeration value="euros" /> 
    <xs:enumeration value="dollars" /> 
    </xs:restriction> 
</xs:simpleType> 



<xs:element name="price"> 
     <xs:complexType> 
      <xs:extension base="xs:decimal"> 
       <xs:attribute name="currency" type="curr"/> 
      </xs:extension> 
     </xs:complexType> 
</xs:element> 
+0

속성은 속성에 따라 선택적이므로 ''도 유효합니다. 이를 방지하기 위해'use = "required"속성을'

+0

"simpleType"컨테이너는 어디에 붙여야합니까? 나는 내가 한 일을 보여주기 위해 질문을 편집했으나 정확하지는 않다. – user3248822

+0

u가 맞습니까? – Naren

0

simpleType이고 다른 위치에서 참조하려는 경우 최상위 수준에서 직접 정의해야합니다 (예 :).요소.

귀하의 스키마하는 SimpleType 넘어 다른 문제가있다 : 당신이 아니라 당신이 먼저 당신이 <xs:sequence>, <xs:choice> 또는 <xs:all>할지 여부를 말할 필요가 직접 <xs:complexType>에서 다른 <xs:element>를 정의 할 수 없습니다. 귀하의 경우에는 <GlobalSettings> 요소가 <ConfigData> 아래에 있고, GlobalSettings 아래에 하나의 <Logging> 요소가 있기 때문에 결과가 동일합니다. 그럼 <xs:sequence>을 선택하겠습니다.

귀하의 스키마는된다 : 이것은 당신의 입력 파일을 확인하고 유효성 검사 오류가 발생

<xs:simpleType name="onOffType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="On" /> 
     <xs:enumeration value="Off" /> 
    </xs:restriction> 
</xs:simpleType> 

<xs:element name="ConfigData"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="GlobalSettings"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="Logging"> 
          <xs:complexType> 
           <xs:attribute name="param" type="onOffType" use="required" /> 
          </xs:complexType> 
         </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

당신의 <Logging> 요소에 param 속성의 값이 오프 또는 이외의 경우 .