XML スキーマの型について質問があります。
タイプは次のようにする必要があります。
テキスト、埋め込み HTML フォーマットを許可
これを行うには何を使用すればよいですか? (埋め込みHTMLフォーマットを許可しますか?たとえば、テキスト xsd:string は問題ないと思いますが、埋め込みHTMLフォーマットを許可するために何をすべきかわかりません)
この場合、何を含めるべきですか?
xsd:stringが良い選択だと思います。それはあなたがそのようにCDATAの中にhtmlを埋め込むことを可能にするでしょう。
<xsd:element name="embedded_html" type="xsd:string"/>
<embedded_html><![CDATA[<p>This is silly HTML</p>]]></embedded_html>
ただし、検証はまったく行われません。どの文字列でも可能です。
もう1つできることは、xhtmlhttp://www.w3.org/TR/xhtml1-schema/#schemas用に提供されているスキーマを使用することです。しかし、それは本当にあなたがやろうとしていることに依存します。
このxs:string
データ型は、マークアップが散在する文字データには実際には適していません。それが複雑な型mixed="true"
の目的です。
ドキュメント タイプの XSD スキーマを作成していて、特定の要素に任意の XHTML 要素を含めることができるようにしたい場合、それを宣言する正しい方法は次のようになります。
<xs:element name="embedded_html">
<xs:complexType mixed="true">
<xs:sequence>
<xs:any namespace="http://www.w3.org/1999/xhtml"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
これにより、HTML をタグ salad で構成することができなくなります。HTML は整形式である (つまり、XHTML としてエンコードされている) 必要があります。なんらかの理由で、タグ salad を のコンテンツとして許可する必要があると思われる場合はembedded_html
、実際に必要なものを再検討するか、他の語彙と同じようにして HTML エンコーディングをエスケープするかを選択します。しかし、その場合でも、混合コンテンツを使用するよりも優れていると思いますxs:string
。
スキーマの目的は、ドキュメントの論理構造を制御することであり、文字データのエスケープ規則を選択することではありません。
CDATA
XSDを変更せずに、ドキュメントXMLにセクションを追加するだけです。