https://github.com/amider-dev/exceltoxml
エクセルで入力されたツリー構造のデータをスキーマに従ってXMLファイルへ変換する。共通・非共通項目を持つ複数のXMLファイルを一括生成できる。Convert tree-structured datasets described in Excel table into multiple XML files following the schema.
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (5.5%) to scientific vocabulary
Repository
エクセルで入力されたツリー構造のデータをスキーマに従ってXMLファイルへ変換する。共通・非共通項目を持つ複数のXMLファイルを一括生成できる。Convert tree-structured datasets described in Excel table into multiple XML files following the schema.
Basic Info
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 2
Metadata Files
README.md
Please follow the license and cite the DOI when you use this software.
ExcelToXml
エクセルで入力されたツリー構造のデータをスキーマに従ってXMLファイルへ変換する。共通・非共通項目を持つ複数のXMLファイルを一括生成できる。Convert tree-structured datasets described in Excel table into multiple XML files following the schema.
プログラムはサンプルXMLファイルに従ってXMLデータ構造を定義する。要素名定義テーブルで指定されるXPathに従い、データ構造の中へデータテーブルA・Bの値を入力する。作成したXMLファイルのスキーマ(XSD)に対する妥当性検証を行う。各テーブルはエクセルファイルとし、各セルの書式は全て文字列で与える。
あるスキーマに対してサンプルXMLと要素名定義テーブルを一度作っておけば、エクセル表形式のメタデータ(データテーブルA・B)からXMLへの変換をコマンド1つで行えるようになる。また、複数のXMLファイルを一括生成できる。
mermaid
flowchart LR
A[サンプルXML] -->|XML構造| D[XML作成]
B[データテーブルA・B] -->|XML各要素の値| D
C[要素名定義テーブル] -->|データテーブルの各要素名とXPathの対応|D
D --> E[XMLスキーマ検証]
G[XSDファイル] --> H[XSD構文検証]
H --> E
ディレクトリ
- ExcelToXml: ソースコード
- examples: 入出力データ例。各スキーマ(XSDファイル)のschemaLocation属性はローカルファイルを参照するように編集してある。
- ISO: ISO Geographic MetaData (GMD) スキーマ準拠のメタデータを作成する例。(スキーマ参考URL https://committee.iso.org/sites/tc211/home/re.html; https://schemas.isotc211.org/19139/-/gmd/1.0/gmd/ )
- SPASE: Space Physics Archive Search and Extract (SPASE) スキーマ準拠のメタデータを作成する例。(スキーマ参考URL https://spase-group.org/data/schema/ )
- JPCOAR: オープンアクセスリポジトリ推進協会 (JPCOAR) スキーマ準拠のメタデータを作成する例。(スキーマ参考URL https://schema.irdb.nii.ac.jp/ja )
- 各フォルダ内のファイル
- sample.xml: サンプルXMLファイル
- DataTable_A.xlsx: データテーブルA
- DataTable_B.xlsx: データテーブルB
- ElementDefine.xlsx: 要素名定義テーブル
- schemaフォルダ又は.xsdファイル: スキーマファイルの格納フォルダ又はスキーマファイル
- output1.xml, output2.xml: ExcelToXmlによりデータテーブルから作成されたXMLファイル
環境要件
- .NET (C#) 8.0.3以上
入力データ
サンプルXMLファイル
XML構造をプログラムに与えるためのタグ構造のみのXML。XSDファイルで指定されるスキーマに従っていること。データテーブルに記載された要素を全て含んでいること。各要素の値は入っていないものとする。ユーザーが使用するXML構造のみの記述で良い。XSDではなくサンプルXMLで構造を与えることで、大規模なXSDを毎回読み込むことを避ける。既存のXMLファイルから値を削除して作るか、XSDファイルから一般的なXMLエディタで作成できる。
データテーブルA・B
テーブル形式のメタデータ。要素名と各要素の値。 各出力XMLファイルで共通の項目はテーブルAで与えられ、個別に異なる値はテーブルBで与えられる。 要素名と値の階層構造はテーブルA・BのElement Name欄でセルの結合を使用して表現される。 データテーブルA・BでElement Name欄が使う列数(要素名の階層数)は可変なので、終了列をエクセルのB1セルで指定する。 出力ファイル名はテーブルBのOutput File欄で指定する。出力されるXMLファイルの数はテーブルBのファイル名の数Nで決まる。 出力ファイルが1つだけの場合、データテーブルAは空欄としてデータテーブルBに全て記入すれば良い。
データテーブルA
| Element Name End | B | |
| Element Name | ||
| 要素名A-1 | 値1 | |
| 要素名A-2 | 要素名A-2-1 | 値2-1 |
| 要素名A-2-2 | 値2-2 | |
| 要素名A-3 | 要素名A-3 | 値3 |
| ... | ||
データテーブルB
| Element Name End | B | ||||
| Output File | ファイル名1 | ファイル名2 | ... | ファイル名N | |
| Element Name | |||||
| 要素名B-1 | 値1 | 値1 | 値1 | ||
| 要素名B-2 | 要素名B-2-1 | 値2-1 | 値2-1 | 値2-1 | |
| 要素名B-2-2 | 値2-2 | 値2-2 | 値2-2 | ||
| 要素名B-3 | 要素名B-3-1 | 値3 | 値3 | 値3 | |
| ... | |||||
要素名定義テーブル
データテーブルの要素名とサンプルXMLの各XPathの対応付けを定義する。要素名の階層構造はスラッシュ(/)で表す。記載された各XPathをノードとして認識するため、値の入るノードだけでなく、繰り返される可能性のあるノード(タグ)に対しても、そのタグを末尾とするXPath&要素名を定義しておく。ある要素の繰り返しがあり、かつ繰り返される起点がその要素の上位タグの場合、そのタグ名も親要素として定義する必要がある。
| Element Name | XPath |
|---|---|
| 要素名A-1 | パスA-1 |
| 要素名A-2 | パスA-2 |
| 要素名A-2/要素名A-2-2 | パスA-2-2(パスA-2の続き) |
| … | |
| 要素名B-1 | パスB-1 |
| … |
XSDファイル
作成したXMLが従うべきスキーマファイル。
使い方
ビルド
ソリューションフォルダ(ExcelToXml)で
dotnet build
実行
モード1
データテーブルを要素名定義テーブルとサンプルXMLに従ってXMLファイルへ変換する。-xオプションが指定された場合は各XMLファイルに対してXSD妥当性検証を行う。
dotnet run --project <ソリューションフォルダのパス>/ExcelToXml.Console -- -a <データテーブルAのパス> -b <データテーブルBのパス> -s <サンプルXMLのパス> -e <要素名定義テーブルのパス> -x <XSDファイルのパス(省略可)> --xsdfolder <XSDファイル群のルートフォルダ(省略可)> -o <出力先パス>
モード2
既存のXMLファイルに対してXSD妥当性検証を行う。
dotnet run --project <ソリューションフォルダのパス>/ExcelToXml.Console -- --xmlfiles <xmlファイルのパス1> <xmlファイルのパス2> -x <XSDファイルのパス>
コマンド引数
| | 省略形 | | | ---- | ------ | ---- | | --datatablea | -a | データテーブルAのパス | | --datatableb | -b | データテーブルBのパス | | --samplexml | -s | サンプルXMLのパス | | --elementdefine | -e | 要素名定義テーブルのパス | | --xsd | -x | XSDのルートファイルのパス | | --xsdfolder | | 全てのXSDファイルが格納されているルートフォルダ。--xsdオプションで指定されるXSDルートファイルと同じフォルダに全て格納されている場合、省略可。| | --output | -o | 出力先フォルダ | | --xmlfiles | | 入力XMLファイルのパス。モード2の場合のみ使用。 | | --info | | 実行中処理の詳細を出力する | | --nowarning | | 警告メッセージを表示しない |
例: examples/ISOの実行方法
dotnet run --project ./ExcelToXml/ExcelToXml.Console -- -a ./ISO/DataTable_A.xlsx -b ./ISO/DataTable_B.xlsx -e ./ISO/ElementDefine.xlsx -s ./ISO/sample.xml -x ./ISO/schema/gmd/gmd.xsd --xsdfolder ./ISO/schema/ -o ./
スキーマ検証済みのXMLファイル output1.xml, output2.xml ができる。
License
This software is released under the MIT License. It uses ClosedXML, which is also licensed under the MIT License.
AMIDERプロジェクト
Owner
- Name: AMIDER-dev
- Login: AMIDER-dev
- Kind: organization
- Repositories: 1
- Profile: https://github.com/AMIDER-dev
GitHub Events
Total
- Release event: 5
- Public event: 1
- Push event: 11
- Create event: 4
Last Year
- Release event: 5
- Public event: 1
- Push event: 11
- Create event: 4
Dependencies
- Microsoft.CodeAnalysis.Analyzers 3.11.0 development
- Microsoft.CodeAnalysis.CSharp 4.11.0
- ClosedXML 0.104.2
- Microsoft.Extensions.DependencyInjection 9.0.0