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 &amp; 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のままであり、832integerとして検出され、truebooleanになります。

必須フィールドの検出

必須検出が有効な場合、要素のすべてのオカレンスに出現する属性はスキーマでrequiredとしてマークされます。これは同じ要素型の複数インスタンスをサンプルデータで分析する場合に特に有用です。

ユースケース

HTML/SVG要素、Android XMLレイアウト、XBRL財務報告書など、属性を多用するXML形式を扱う場合。属性がスキーマプロパティにどう変換されるかを理解することで、変換されたXMLデータのJSONバリデーション構築に役立ちます。

試してみる — XML to JSON Schema

フルツールを開く