1

私の xml スキーマには、itemsetting という名前のタグがあります。

    <xs:element name="itemsetting">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="key" use="required">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="questionscript"/>
                            <xs:enumeration value="timeframe"/>
                            <xs:enumeration value="textlabel"/>
                            <xs:enumeration value="textboxtype"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

私がやりたいことは、html を questionscript タイプに埋め込むことができるようにすることです。例えば:

<itemsetting key="questionscript">this<html:b>is bold </html:b> </itemsetting>

私は複雑な/単純な時間をいじろうとしましたが、解析できないスキーマファイルになるたびに. 正しい方向へのポインターは非常に役立ちます。

4

2 に答える 2

3

マイケルの答えを拡張すると、次のようになります。

<xs:element name="itemsetting">
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/1999/xhtml" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="key" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="questionscript"/>
          <xs:enumeration value="timeframe"/>
          <xs:enumeration value="textlabel"/>
          <xs:enumeration value="textboxtype"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:element>

動作するはずです-がXMLのプレフィックスにhttp://www.w3.org/1999/xhtml対応するHTML名前空間であると仮定します。html

複数の名前空間がある場合、または名前空間のチェックに煩わされたくない場合は、

 . . . 
      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
 . . . 

これは、埋め込まれた HTML が整形式の XML であると想定していることに注意してください。たとえば、XML ファイル全体を読み取れない閉じたタグが HTML に含まれておらず、スキーマを使用する方法がない場合などです。

于 2012-09-12T22:19:00.987 に答える
2

要素には単純なコンテンツがありません。子要素が含まれています。つまり、複雑なコンテンツです(具体的には<complexContent mixed="true">)。

HTML名前空間で子要素を許可する場合は、単一のワイルドカードパーティクルを使用してコンテンツモデルを定義することでそれを実現できます。<xs:any namespace="..." minOccurs="0" maxOccurs="unbounded"/>

于 2012-09-11T23:20:12.060 に答える