2012-08-08 3 views
1

여러 사용 방법 XSD의이 조각을 고려합니다 :XSD 요소 밖으로 잘 모르겠어요 속성

<?xml version="1.0" encoding="UTF-16"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="FlowBi:Emis:FeatureTests" 
xmlns="FlowBi:Emis:FeatureTests" 
elementFormDefault="qualified" 
attributeFormDefault="unqualified"> 
<xs:element name="featureTests"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="test" minOccurs="1" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="summary" type="xs:string"/> 
         <xs:sequence> 
          <xs:element name="step" minOccurs="0" maxOccurs="unbounded"> 
           <xs:complexType> 
            <xs:simpleContent> 
             <xs:extension base="xs:string"> 
              <xs:attribute name="status" use="required"> 
               <xs:simpleType> 
                <xs:restriction base="xs:token"> 
                 <xs:enumeration value="not run"/> 
                 <xs:enumeration value="passed"/> 
                 <xs:enumeration value="failed"/> 
                </xs:restriction> 
               </xs:simpleType> 
              </xs:attribute> 
             </xs:extension> 
            </xs:simpleContent> 
           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
        </xs:sequence> 
        <xs:attribute name="status" use="required"> 
         <xs:simpleType> 
          <xs:restriction base="xs:token"> 
           <xs:enumeration value="not run"/> 
           <xs:enumeration value="passed"/> 
           <xs:enumeration value="failed"/> 
          </xs:restriction> 
         </xs:simpleType> 
        </xs:attribute> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

그것은 다음과 같습니다 모두 <test><step> 태그에 필요한

<xs:attribute name="status" use="required"> 
    <xs:simpleType> 
     <xs:restriction base="xs:token"> 
      <xs:enumeration value="not run"/> 
      <xs:enumeration value="passed"/> 
      <xs:enumeration value="failed"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:attribute> 

반복 된 섹션을 제외하고 각 필드에서 참조하는 것이 좋지만 속성 유형에 대해이 작업을 수행하는 방법을 잘 모르겠습니다.

답변

2

이것은

<?xml version="1.0" encoding="utf-16"?> 
<!--Created with Liquid XML Studio 2012 Developer Edition 10.1.2.4113 (http://www.liquid-technologies.com)--> 
<xs:schema xmlns="FlowBi:Emis:FeatureTests" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="FlowBi:Emis:FeatureTests" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="featureTests"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="test" minOccurs="1" maxOccurs="unbounded"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="summary" type="xs:string" /> 
          <xs:sequence> 
           <xs:element name="step" minOccurs="0" maxOccurs="unbounded"> 
            <xs:complexType> 
             <xs:simpleContent> 
              <xs:extension base="xs:string"> 
               <xs:attribute name="status" type="statusType" use="required" /> 
              </xs:extension> 
             </xs:simpleContent> 
            </xs:complexType> 
           </xs:element> 
          </xs:sequence> 
         </xs:sequence> 
         <xs:attribute name="status" type="statusType" use="required" /> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:simpleType name="statusType"> 
     <xs:restriction base="xs:token"> 
      <xs:enumeration value="not run" /> 
      <xs:enumeration value="passed" /> 
      <xs:enumeration value="failed" /> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 
1

@Sprotty 제공하는 대답이 올바른지 (+1)을해야한다. 주석 (따라서 대답)에 맞지 않는 설명/변형을 추가합니다 ...

일반적으로 Sprotty가 단순 유형 만 재사용 한 이유는 XSD에서 속성이 일반적으로 규정되지 않은 방법과 관련이 있습니다 . 예제에서 속성은 규정되지 않았으므로 속성이 attributeGroup 아래에 랩핑 된 경우에만 전체 속성을 재사용 할 수 있습니다. 기본적으로 전역 적으로 정의 된 속성을 재사용한다는 것은 속성을 한정한다는 것을 의미합니다.

<?xml version="1.0" encoding="UTF-16"?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="FlowBi:Emis:FeatureTests" xmlns="FlowBi:Emis:FeatureTests" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="featureTests"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="test" minOccurs="1" maxOccurs="unbounded"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="summary" type="xs:string"/> 
          <xs:sequence> 
           <xs:element name="step" minOccurs="0" maxOccurs="unbounded"> 
             <xs:complexType> 
              <xs:simpleContent> 
               <xs:extension base="xs:string"> 
                <xs:attributeGroup ref="gaStatus" /> 
               </xs:extension> 
              </xs:simpleContent> 
             </xs:complexType> 
           </xs:element> 
          </xs:sequence> 
         </xs:sequence> 
         <xs:attributeGroup ref="gaStatus" /> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:attributeGroup name="gaStatus"> 
     <xs:attribute name="status" use="required"> 
      <xs:simpleType> 
       <xs:restriction base="xs:token"> 
        <xs:enumeration value="not run"/> 
        <xs:enumeration value="passed"/> 
        <xs:enumeration value="failed"/> 
       </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute>   
    </xs:attributeGroup> 
</xs:schema> 
(단지 간단한 유형에 반대)

그래서, 이것은 또 다른 가능성 속성 선언을 다시는-사용합니다