HTML/XHTMLフラグメントからスキーマを推論する
属性、ネストされた要素、混合テキストコンテンツを持つ整形式HTML/XHTMLフラグメントからJSON Schemaを生成します。
Complex Structures
詳細な説明
HTML/XHTMLからJSON Schemaへ
整形式のXHTMLはXMLとして処理できるため、HTML構造からJSON Schemaを推論できます。これはHTMLテンプレートやコンポーネントの構造をバリデーションする必要がある場合に有用です。
XHTMLの例
<div class="card" id="card-1">
<header>
<h2 class="title">Product Name</h2>
<span class="badge">New</span>
</header>
<div class="body">
<p>Product description goes here.</p>
<ul class="features">
<li>Feature one</li>
<li>Feature two</li>
<li>Feature three</li>
</ul>
</div>
<footer>
<button type="submit" disabled="disabled">Buy Now</button>
<span class="price">$29.99</span>
</footer>
</div>
スキーマのハイライト
- プロパティとしての属性:
@class、@id、@type、@disabledがすべてキャプチャされる - 混合コンテンツ: テキストと子要素の両方を持つ要素は
#textプロパティを取得 - ネスト構造: div > header > h2の階層が完全に表現される
- 配列: 複数の
<li>要素が配列になる
実践的な考慮事項
HTMLにはテキストと要素が交互に含まれる混合コンテンツが多く含まれます。変換ツールは#textプロパティでこれに対応します。また、class、id、disabledなどのHTML属性は他のXML属性と同じように扱われます。
制限事項
- XMLは整形式である必要があります(XHTML)。閉じタグのない通常のHTML5(
<br>、<img>など)は解析に失敗します のようなエンティティは定義されているか、数値エンティティに置き換える必要があります- インラインイベントハンドラやスクリプトコンテンツにはXML解析を破壊する文字が含まれる場合があります
使用する場合
このアプローチは、サーバーレンダリングされたHTMLテンプレート、メールテンプレート(XHTMLベースが多い)、整形式XMLを出力するフレームワークのコンポーネントマークアップの構造バリデーションに最適です。
ユースケース
HTMLテンプレート、メールテンプレート、XHTMLベースのコンポーネントライブラリのバリデーション構築時。生成されるスキーマでテンプレートが期待される構造と属性を含んでいることを検証できます。