XMLテキスト値からの型推論を理解する

変換ツールがXMLテキストコンテンツと属性値からstring、number、integer、boolean型をどのように決定し、型のユニオンを処理するかを詳しく解説します。

Attributes

詳細な説明

型推論:単純な文字列を超えて

変換ツールはすべてのXMLテキスト値を文字列として扱うわけではありません。各値を分析して最も具体的なJSON Schema型を決定します。これにより、変換されたXMLデータの実際の形状をバリデーションできる、より有用なスキーマが生成されます。

推論ルール

XML値 検出される型 理由
hello string 非数値・非ブーリアンテキストのデフォルト
42 integer 安全な整数範囲内の整数
3.14 number 小数
1.5e10 number 科学的記法
true boolean ブーリアンリテラルと完全一致
false boolean ブーリアンリテラルと完全一致
``(空) string 空文字列はstringにデフォルト
2024-01-15 string 日付文字列はstringのまま(JSON Schemaに日付型はない)
9999999999999999 string 安全な整数範囲を超える数値

型のユニオン

同じ要素が複数のオカレンスで異なる型を含む場合、スキーマは型のユニオンを使用します:

<items>
  <value>42</value>
  <value>hello</value>
  <value>true</value>
</items>

これは3つの<value>要素が異なる型を含むため、配列アイテムの型が["integer", "string", "boolean"]になります。

なぜ常にstringを使用しないのか

すべてをデフォルトでstringにする方が簡単ですが、生成されるスキーマの有用性が低下します。<price>要素がnumberであることを知っているスキーマは、変換されたJSONデータが実際に数値を含み、誤って文字列化されていないことを検証できます。これはXMLからJSONへの変換パイプラインでJSON Schemaがデータの検証に使用される場合に特に重要です。

エッジケース

  • 先頭のゼロ: 007のような値は標準的な数値ではないため文字列として扱われます
  • 空白のみ: 空文字列として扱われます
  • CDATAセクション: CDATA内のコンテンツは通常のテキストコンテンツと同様に処理されます
  • Null: XMLにはnullの概念がありません — 空の要素は空文字列型にマッピングされます

ユースケース

生成されるスキーマに正確な型情報が必要な場合。XMLをJSONに変換して結果を検証するデータバリデーションパイプラインを構築する際に役立ちます。型推論を理解することで、スキーマ出力を予測し制御できます。

試してみる — XML to JSON Schema

フルツールを開く