2017-11-12 4 views
1

XML 스키마에서 제한으로 파생물을 만들려고하는데 작동하지 않습니다. 나는 우리가 제한을 사용하고 확장하지 않을 때, 우리는 우리가 파생 된 곳에서 기지의 내용을 다시 써야 할 의무가 있다고 읽었고, 나는 그것을했다고 생각하지만, 나는 그 문제점을 발견 할 수 없다.XML - 입자 사이에 완전한 기능 매핑이 없습니다.

유효성 검사 오류 :

Not valid. 
Error - Line 60, 41: org.xml.sax.SAXParseException; lineNumber: 60; columnNumber: 41; rcase-Recurse.2: There is not a complete functional mapping between the particles. 
Error - Line 60, 41: org.xml.sax.SAXParseException; lineNumber: 60; columnNumber: 41; derivation-ok-restriction.5.4.2: Error for type 'seminarType'. The particle of the type is not a valid restriction of the particle of the base. 
Error - Line 104, 37: org.xml.sax.SAXParseException; lineNumber: 104; columnNumber: 37; rcase-Recurse.2: There is not a complete functional mapping between the particles. 
Error - Line 104, 37: org.xml.sax.SAXParseException; lineNumber: 104; columnNumber: 37; derivation-ok-restriction.5.4.2: Error for type 'labType'. The particle of the type is not a valid restriction of the particle of the base. 

XSD 코드 : 하나 개의 스키마 프로세서가 도움이되지 않는 메시지를 줄 때

<?xml version="1.0"?> 

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="schedule" 
        xmlns="schedule" 
        elementFormDefault="qualified"> 

    <xsd:element name="Event" type="eventType"/> 

    <xsd:complexType name="eventType"> 
     <xsd:sequence> 
      <xsd:element name="Title" type="xsd:string"/> 
      <xsd:element name="Lecture" minOccurs="1" maxOccurs="9"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="Day"> 
          <xsd:simpleType> 
           <xsd:restriction base="xsd:string"> 
            <xsd:enumeration value="Monday"/> 
            <xsd:enumeration value="Tuesday"/> 
            <xsd:enumeration value="Wednesday"/> 
            <xsd:enumeration value="Thursday"/> 
            <xsd:enumeration value="Friday"/> 
            <xsd:enumeration value="Saturday"/> 
            <xsd:enumeration value="Sunday"/> 
           </xsd:restriction> 
          </xsd:simpleType> 
         </xsd:element> 
         <xsd:element name="Time"> 
          <xsd:simpleType> 
           <xsd:restriction base="xsd:string"> 
            <xsd:length value="11"/> 
            <xsd:pattern value="[0-2][0-9]:[0-5][0-9]-[0-2][0-9]:[0-5][0-9]"/> 
           </xsd:restriction> 
          </xsd:simpleType> 
         </xsd:element> 
        </xsd:sequence> 
        <xsd:attribute name="Classroom" use="required"> 
         <xsd:simpleType> 
          <xsd:restriction base="xsd:string"> 
           <xsd:maxLength value="7"/> 
          </xsd:restriction> 
         </xsd:simpleType> 
        </xsd:attribute> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="lessonType"> 
     <xsd:complexContent> 
      <xsd:extension base="eventType"> 
       <xsd:sequence> 
        <xsd:element name="Professor" type="xsd:string"/> 
       </xsd:sequence> 
      </xsd:extension> 
     </xsd:complexContent> 
    </xsd:complexType> 

    <xsd:complexType name="seminarType"> 
     <xsd:complexContent> 
      <xsd:restriction base="eventType"> 
       <xsd:sequence> 
        <xsd:element name="Title" type="xsd:string"/> 
        <xsd:element name="Lecture" minOccurs="1" maxOccurs="9"> 
         <xsd:complexType> 
          <xsd:sequence> 
           <xsd:element name="Day"> 
            <xsd:simpleType> 
             <xsd:restriction base="xsd:string"> 
              <xsd:enumeration value="Monday"/> 
              <xsd:enumeration value="Tuesday"/> 
              <xsd:enumeration value="Wednesday"/> 
              <xsd:enumeration value="Thursday"/> 
              <xsd:enumeration value="Friday"/> 
              <xsd:enumeration value="Saturday"/> 
              <xsd:enumeration value="Sunday"/> 
             </xsd:restriction> 
            </xsd:simpleType> 
           </xsd:element> 
           <xsd:element name="Time"> 
            <xsd:simpleType> 
             <xsd:restriction base="xsd:string"> 
              <xsd:length value="11"/> 
              <xsd:pattern value="[0-2][0-9]:[0-5][0-9]-[0-2][0-9]:[0-5][0-9]"/> 
             </xsd:restriction> 
            </xsd:simpleType> 
           </xsd:element> 
          </xsd:sequence> 
          <xsd:attribute name="Classroom" use="required"> 
           <xsd:simpleType> 
            <xsd:restriction base="xsd:string"> 
             <xsd:maxLength value="7"/> 
            </xsd:restriction> 
           </xsd:simpleType> 
          </xsd:attribute> 
         </xsd:complexType> 
        </xsd:element> 
       </xsd:sequence> 
      </xsd:restriction> 
     </xsd:complexContent> 
    </xsd:complexType> 

    <xsd:complexType name="labType"> 
     <xsd:complexContent> 
      <xsd:restriction base="eventType"> 
       <xsd:sequence> 
        <xsd:element name="Title" type="xsd:string"/> 
        <xsd:element name="Lecture" minOccurs="1" maxOccurs="9"> 
         <xsd:complexType> 
          <xsd:sequence> 
           <xsd:element name="Day"> 
            <xsd:simpleType> 
             <xsd:restriction base="xsd:string"> 
              <xsd:enumeration value="Monday"/> 
              <xsd:enumeration value="Tuesday"/> 
              <xsd:enumeration value="Wednesday"/> 
              <xsd:enumeration value="Thursday"/> 
              <xsd:enumeration value="Friday"/> 
              <xsd:enumeration value="Saturday"/> 
              <xsd:enumeration value="Sunday"/> 
             </xsd:restriction> 
            </xsd:simpleType> 
           </xsd:element> 
           <xsd:element name="Time"> 
            <xsd:simpleType> 
             <xsd:restriction base="xsd:string"> 
              <xsd:length value="11"/> 
              <xsd:pattern value="[0-2][0-9]:[0-5][0-9]-[0-2][0-9]:[0-5][0-9]"/> 
             </xsd:restriction> 
            </xsd:simpleType> 
           </xsd:element> 
          </xsd:sequence> 
          <xsd:attribute name="Classroom" use="required"> 
           <xsd:simpleType> 
            <xsd:restriction base="xsd:string"> 
             <xsd:maxLength value="7"/> 
            </xsd:restriction> 
           </xsd:simpleType> 
          </xsd:attribute> 
         </xsd:complexType> 
        </xsd:element> 
       </xsd:sequence> 
      </xsd:restriction> 
     </xsd:complexContent> 
    </xsd:complexType> 

</xsd:schema> 

답변

3

Lecture 요소가 로컬로 정의되어 있고 관련없는 유형과 다른 간단한 유형 인 요일 및 시간을 가지고 있기 때문에 Lecture 요소의 복합 유형을 eventType에서 파생시킬 수 없다는 점이 문제입니다.

http://www.w3.org/TR/xmlschema-1/#rcase-NameAndTypeOK 3.2.5 R의 {유형 정의}는 유형 유도로 정의 된 B의 {유형 정의}에서 {확장자, 목록, 조합}이 유효하게 파생되었습니다 (복잡한()). §3.4.6) 또는 유형 유도 OK (단순) (§3.14.6)를 참조하십시오. 주 : {type definition}에 대한 위의 제한은 제한을 기준으로 유형을 유도 할 때 포함 된 유형 정의 자체가 기본 정의의 해당 유형 정의에서 제한에 의해 명시 적으로 파생되어야 함을 의미합니다. 대응하는 노동 조합.

따라서 필요한 요소의 기본 유형을 만들면이 문제를 해결할 수 있습니다.

I는 고정 용액 이하 첨부 :

<?xml version="1.0"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="schedule" xmlns="schedule" 
      elementFormDefault="qualified"> 
    <xsd:element name="Event" type="eventType"/> 

    <xsd:complexType name="eventType"> 
    <xsd:sequence> 
     <xsd:element name="Title" type="xsd:string"/> 
     <xsd:element name="Lecture" type="lecture" minOccurs="1" maxOccurs="9"/> 
    </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="lecture"> 
    <xsd:sequence> 
     <xsd:element name="Day" type="day"/> 
     <xsd:element name="Time" type="time"/> 
    </xsd:sequence> 
    <xsd:attribute name="Classroom" type="classroom" use="required"/> 
    </xsd:complexType> 

    <xsd:complexType name="lessonType"> 
    <xsd:complexContent> 
     <xsd:extension base="eventType"> 
     <xsd:sequence> 
      <xsd:element name="Professor" type="xsd:string"/> 
     </xsd:sequence> 
     </xsd:extension> 
    </xsd:complexContent> 
    </xsd:complexType> 

    <xsd:complexType name="seminarType"> 
    <xsd:complexContent> 
     <xsd:restriction base="eventType"> 
     <xsd:sequence> 
      <xsd:element name="Title" type="xsd:string"/> 
      <xsd:element name="Lecture" type="lecture" minOccurs="1" maxOccurs="9"/> 
     </xsd:sequence> 
     </xsd:restriction> 
    </xsd:complexContent> 
    </xsd:complexType> 

    <xsd:complexType name="labType"> 
    <xsd:complexContent> 
     <xsd:restriction base="eventType"> 
     <xsd:sequence> 
      <xsd:element name="Title" type="xsd:string"/> 
      <xsd:element name="Lecture" type="lecture" minOccurs="1" maxOccurs="9"/> 
     </xsd:sequence> 
     </xsd:restriction> 
    </xsd:complexContent> 
    </xsd:complexType> 

    <xsd:simpleType name="day"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="Monday"/> 
     <xsd:enumeration value="Tuesday"/> 
     <xsd:enumeration value="Wednesday"/> 
     <xsd:enumeration value="Thursday"/> 
     <xsd:enumeration value="Friday"/> 
     <xsd:enumeration value="Saturday"/> 
     <xsd:enumeration value="Sunday"/> 
    </xsd:restriction> 
    </xsd:simpleType> 

    <xsd:simpleType name="time"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:length value="11"/> 
     <xsd:pattern value="[0-2][0-9]:[0-5][0-9]-[0-2][0-9]:[0-5][0-9]"/> 
    </xsd:restriction> 
    </xsd:simpleType> 

    <xsd:simpleType name="classroom"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:maxLength value="7"/> 
    </xsd:restriction> 
    </xsd:simpleType> 

</xsd:schema> 
1

,이 있는지 확인하기 위해 다른 스키마 프로세서를 시도하는 것은 좋은 생각이 자주의 IT 조금이라도 나아진다. 이 경우 색슨-EE는 진단을 제공합니다 test.xsd 라인 (60)에

오류 : 복합 형 seminarType의 내용 모델을 형 이벤트 유형의 컨텐츠 모델의 유효한 제한하지 않습니다. 요소의 정의 제한된 유형과 기본 유형간에 강의가 다릅니다. 복합 형 labType의 컨텐츠 모델 유효하지 않다 : 제한 컨텐츠 모델 요소의 유형은 유효 test.xsd 라인 (104)상의 오류

기본 컨텐츠 모델에서 해당 요소의 유형으로부터 유도되지 유형 eventType의 내용 모델에 대한 제한. 요소 정의 강의 형식이 제한 유형과 기본 유형간에 다릅니다. 제한 컨텐츠 모델 요소의 유형은 유효

그래서이 문제를 일으키는 입자 등을 "강연"을 가리키는 기본 컨텐츠 모델에서 해당 요소의 유형으로부터 유도되지 않는다. 특별한 문제는 제한된 유형에서, 강의는 Lecture가 허용하는 기본 유형의 서브 세트를 논리적으로 허용하는 정의를 가져야 만한다는 것입니다. 실제로 해당 유형의 부속 유형으로 정의되어야합니다. 물론 (여기에서와 같이) 기본 유형의 강의 형식이 익명 인 경우에는 불가능합니다.

관련 문제