RSSフィードからJSON Schemaを推論する
チャンネルメタデータ、繰り返しアイテム要素、属性と要素コンテンツの混合を含むRSS 2.0フィードXMLからJSON Schemaを生成します。
Real-World XML
詳細な説明
RSSフィードのスキーマ推論
RSS(Really Simple Syndication)はWeb上で最も一般的なXMLフォーマットの1つです。RSSをJSON Schemaに変換することは、フィードリーダー、アグリゲーター、コンテンツパイプラインの構築に有用です。
RSS 2.0フィードの例
<rss version="2.0">
<channel>
<title>Tech Blog</title>
<link>https://example.com</link>
<description>Latest tech articles</description>
<language>en-us</language>
<lastBuildDate>Mon, 01 Jan 2024 00:00:00 GMT</lastBuildDate>
<item>
<title>Getting Started with TypeScript</title>
<link>https://example.com/typescript</link>
<description>A beginner guide to TypeScript</description>
<pubDate>Mon, 01 Jan 2024 00:00:00 GMT</pubDate>
<guid>https://example.com/typescript</guid>
<category>Programming</category>
</item>
<item>
<title>Understanding JSON Schema</title>
<link>https://example.com/json-schema</link>
<description>Deep dive into JSON Schema</description>
<pubDate>Tue, 02 Jan 2024 00:00:00 GMT</pubDate>
<guid>https://example.com/json-schema</guid>
<category>Data</category>
</item>
</channel>
</rss>
スキーマの主要な特徴
- ルート属性:
<rss>のversion属性が@versionになる - チャンネルオブジェクト: メタデータフィールドとアイテム配列を含む
- アイテム配列: 複数の
<item>要素が配列として検出される - マージされたアイテムスキーマ: すべてのアイテムフィールドが単一のアイテム型にまとめられる
- すべて文字列: RSSの日付とURLは文字列(JSON Schemaに特別な日付/URL型はない)
チャンネルとアイテムの構造
スキーマはチャンネルレベルのメタデータ(title、link、description、language)とアイテムレベルのプロパティを明確に分離します。この区別はフィード処理アプリケーションにとって重要です。
スキーマの拡張
生成されたスキーマは堅固な基盤を提供します。本番使用では以下を追加できます:
- linkとguidプロパティに
format: "uri"を追加 - pubDateとlastBuildDateに
format: "date-time"を追加 - 既知のカテゴリにenum値を追加
- 特定のフィールドをrequiredとしてマーク(titleとlinkは通常RSSで必須)
Atomフィード
同じアプローチはAtomフィードでも機能しますが、構造が異なります。Atomはより多くの属性を使用し(例:<link rel="alternate" href="..."/>)、異なる要素名を持ちます。
ユースケース
RSSフィードリーダー、アグリゲーター、XMLからJSONに変換した後のフィードデータをバリデーションする必要があるコンテンツシンジケーションシステムを構築する場合。スキーマは期待されるフィード構造のドキュメントとバリデーションとして機能します。