XML属性をJSON Schemaプロパティに変換する
XML属性が設定可能なプレフィックス(@attrまたは_attr)と自動型検出でJSON Schemaプロパティにマッピングされる仕組みを理解します。
Attributes
詳細な説明
JSON SchemaでのXML属性の処理
XML属性は要素のメタデータを持ちますが、JSONには属性の概念がないため、JSON Schemaでは別の表現が必要です。変換ツールは設定可能なプレフィックスを使用して、属性由来のプロパティと子要素プロパティを区別します。
XMLの例
<book isbn="978-0-13-468599-1" pages="832" available="true">
<title>The C Programming Language</title>
<author>Kernighan & Ritchie</author>
<year>1988</year>
</book>
@プレフィックスで生成されるスキーマ
{
"type": "object",
"properties": {
"book": {
"type": "object",
"properties": {
"@isbn": { "type": "string" },
"@pages": { "type": "integer" },
"@available": { "type": "boolean" },
"title": { "type": "string" },
"author": { "type": "string" },
"year": { "type": "integer" }
}
}
}
}
@と_プレフィックスの比較
@プレフィックスはXMLからJSONへのマッピングで一般的な規約です(xml2jsやfast-xml-parserなどのライブラリで使用)。しかし、一部のシステムやデータベースではプロパティ名に@を使用できません。その場合は_プレフィックスに切り替え、_isbn、_pages、_availableのように生成できます。
属性の型推論
属性値はテキストコンテンツと同じ方法で型推論されます。上記の例では、978-0-13-468599-1はハイフンを含むためstringのままであり、832はintegerとして検出され、trueはbooleanになります。
必須フィールドの検出
必須検出が有効な場合、要素のすべてのオカレンスに出現する属性はスキーマでrequiredとしてマークされます。これは同じ要素型の複数インスタンスをサンプルデータで分析する場合に特に有用です。
ユースケース
HTML/SVG要素、Android XMLレイアウト、XBRL財務報告書など、属性を多用するXML形式を扱う場合。属性がスキーマプロパティにどう変換されるかを理解することで、変換されたXMLデータのJSONバリデーション構築に役立ちます。