2017-11-12 34 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要素がローカルで定義されており、関連のない型と他の単純な型DayおよびTimeを持っているため、Lecture要素の複合型をeventTypeから派生できないということです。明細書中の関連する場所である:

http://www.w3.org/TR/xmlschema-1/#rcase-NameAndTypeOK 3.2.5 Rの{型定義}が正当タイプ導出OK(複合体)によって定義されるように、(A Bの{型定義}から{拡張、リスト、組合}与え導出されます§3.4.6)またはタイプ派生OK(シンプル)(§3.14.6)を使用してください。 注:{type definition}の上記の制約は、制限によって型を派生させる際に、包含された型定義自体が基本定義の対応する型定義からの制限によって明示的に導かれなければならないことを意味します。対応する共用体。

したがって、必要な要素の基本型を作成すると、この問題を解決できます。

私は、固定された解決策以下に添付している:

<?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

1つのスキーマプロセッサが役に立たないメッセージを出すと、それはそれかどうかを確認するために別のスキーマプロセッサを試すために、多くの場合は良い考えですそれ以上のことはありません。この場合、サクソン-EEは、診断を与える:test.xsdのライン60上の

エラー:複合型のコンテンツモデル seminarTypeは 型のeventTypeのコンテンツモデルの有効な制限ではありません。要素の定義制限された型と基本型の間で講義が異なります。 LABTYPEが有効でない複合型のコンテンツモデル:制限 コンテンツモデルが有効にtest.xsdのライン104上のベースコンテンツモデル

エラーで 対応する要素の種類に由来しないの要素のタイプタイプ eventTypeのコンテンツモデルの制限。要素の定義 制限タイプと基本タイプの間で講義が異なります。 コンテンツモデルは有効にベースコンテンツモデルにおける 対応する要素のタイプ

由来しない制限の要素のタイプは、これは問題のある粒子として「講義」を指しています。具体的な問題は、制限された型では、Lectureが基本型で許すもののサブセットを論理的に許可する定義だけでなく、実際に対応する型のサブタイプとして定義する必要があるということです。もちろん、ベースタイプの講義のタイプが(ここでのように)匿名である場合は、不可能です。

関連する問題