Adakah alat untuk menghasilkan skema XSD dari dokumen contoh XML? [Tutup]

146

Saya mencari alat yang akan mengambil dokumen contoh XML dan menghasilkan skema XSD yang sesuai.

Saya tentu menyadari bahwa skema XSD yang dihasilkan akan terbatas bila dibandingkan dengan membuat skema dengan tangan (mungkin tidak akan menangani elemen opsional atau berulang, atau kendala data), tetapi setidaknya bisa berfungsi sebagai titik awal yang cepat.

Matt Dillard
sumber

Jawaban:

65

yang alat inferensi Microsoft XSD adalah baik, solusi gratis. Banyak alat pengeditan XML, seperti XmlSpy (disebutkan oleh @Garth Gilmour) atau OxygenXML Editor juga memiliki fitur itu. Mereka agak mahal. BizTalk Server juga memiliki alat penghilang XSD juga.

sunting: Saya baru saja menemukan kelas .net XmlSchemaInference , jadi jika Anda menggunakan .net Anda harus mempertimbangkan itu

Danimal
sumber
1
wow, berbulan-bulan kemudian Anda menunjuk saya ke solusi hebat untuk melakukan konversi XDR ke XSD cepat! Terima kasih!
bethlakshmi
6
Sulit bagi saya untuk menemukan unduhan untuk alat ini (xsd.exe), tetapi sudah ada di sistem saya di C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Hanya berpikir saya akan berbagi jika itu membantu siapa pun.
oob
2
Jika seseorang tidak menginstal Visual Studio, berikut adalah tautan alternatif untuk mengunduh xsd: juliankay.com/development/download-xsd-exe
MD
5
Direktori tampaknya xsd.exetelah berubah pada Windows 7. Saya memilikinya di banyak Microsoft SDKsdirektori, di antaranya satu ini (sehingga tampaknya tidak selalu bergantung pada Visual Studio lagi?): C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. Saya harus menjalankannya di direktori yang berisi xml, untuk mencegah kesalahan tentang "karakter ilegal di jalur", tetapi itu mungkin karena nama file panjang yang saya miliki.
Yahoo Serious
Adakah orang lain yang mengalami kesulitan menggunakan alat inferensi MS XSD, meningkatkan OutOfMemoryException untuk file XML 200MB dengan masih lebih dari 8GB RAM gratis?
Felipe Sabino
54

Anda dapat menggunakan sumber terbuka dan opsi lintas platform: inst2xsd dari XMLBeans Apache . Saya merasa sangat berguna dan mudah.

Cukup unduh, unzip, dan mainkan (ini membutuhkan Java).

Dario
sumber
tip yang bagus, itu benar-benar banyak membantu saya, thx!
IAdapter
2
OMG Ini jauh lebih baik daripada semua omong kosong Powershell! Terutama karena saya tidak punya file XSD!
Chloe
3
bekerja seperti jimat :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio
3
Perhatikan bahwa XMLBeans telah dipindahkan ke attic.apache.org , rumah dari proyek-proyek Apache yang sudah pensiun. Dengan kata lain, itu belum diperbarui sejak 2012.
Magnilex
51

Trang adalah pilihan terbaik di sini. Open source dan lintas platform (walaupun Java diperlukan)

Dari Situs Web Trang:

Trang mengkonversi antara berbagai bahasa skema untuk XML. Ini mendukung bahasa-bahasa berikut

  • RELAX NG (sintaks XML)
  • RELAX NG sintaks kompak
  • XML 1.0 DTD
  • Skema XML W3C

Skema yang ditulis dalam salah satu bahasa skema yang didukung dapat dikonversi ke bahasa skema lain yang didukung, kecuali bahwa W3C XML Schema didukung untuk output saja, bukan untuk input.

Trang juga dapat menyimpulkan skema dari satu atau lebih contoh dokumen XML.

Unduh Tautan

Derferman
sumber
Trang juga merupakan alat yang diintegrasikan ke dalam OxygenXML untuk melakukan inferensi XSD dari satu atau lebih dokumen XMl. Pada upaya pertama di sini tampaknya berfungsi dengan baik.
redcalx
4
Jika semua yang Anda butuhkan adalah menghasilkan xsd dari file xml, trang adalah IMHO terbaik, tercepat dan termudah.
kriver
2
Dokumentasi trang agak tipis. Untuk menghasilkan skema, jalankan $ trang file.xml schema.xsd.
Joe Mornin
di windows run: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov
Memiliki substruktur yang muncul dalam bentuk yang sama di berbagai tempat dalam sampel XML saya, Trang melakukan pekerjaan yang sempurna dalam mendeteksi pengulangan dan menghasilkan XSD minimal, yang saya butuhkan. Sangat bagus!
Tomislav Nakic-Alfirevic
17

Dalam VS2010 jika Anda memuat file XML ke editor, klik menu XML >> Buat Skema.

Nathan Donnellan
sumber
3
Dan dalam versi yang lebih tinggi
Jay Jay
12

Ada juga XML schema learneryang tersedia di Github .

Ini dapat mengambil banyak file xml dan mengekstrak XSD umum dari semua file tersebut .

pendidik
sumber
1
Sadarilah alat ini ditulis dalam php, jadi tidak sepele untuk setup.
79E09796
5
@ 79E09796 Menginstal cli php dengan sudo apt-get install php5-clidan menjalankan ./learn --help--- Saya tidak benar-benar melihat perbedaan antara itu dan alat yang ditulis dalam java, python atau ruby ​​:)
edorian
1
baru saja mencoba di bawah windows - bekerja hebat dengan php 5.4 tanpa instalasi apa pun. Pelajar php dan XML Schema baru saja membuka ritsleting dan dieksekusi menggunakan path lengkap;)
vak
komentar kecil pada localitybidang: jika nama bidang digunakan di banyak tempat dalam XML yang merujuk pada elemen yang berbeda , diperlukan localitynilai yang lebih besar dari 1, misalnya root/itemdan root/something/itemmerujuk pada jenis yang berbeda, maka --locality 2diperlukan sebagai minimum
shadi
10

Jika Anda telah menginstal .Net, alat untuk menghasilkan skema dan kelas XSD sudah disertakan secara default.
Bagi saya, alat XSD diinstal di bawah struktur berikut. Ini mungkin berbeda tergantung pada direktori instalasi Anda.

C:\Program Files\Microsoft Visual Studio 8\VC>xsd
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.

xsd.exe -
   Utility to generate schema or class files from given source.

xsd.exe <schema>.xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/s] [/uri:]
xsd.exe <assembly>.dll|.exe [/outputdir:] [/type: [...]]
xsd.exe <instance>.xml [/outputdir:]
xsd.exe <schema>.xdr [/outputdir:]

Biasanya kelas dan skema yang dihasilkan alat ini bekerja dengan baik, terutama jika Anda akan menggunakannya dalam bahasa .Net

Saya biasanya mengambil dokumen XML yang saya cari, mendorongnya melalui alat XSD dengan /o:<your path>bendera untuk menghasilkan skema (xsd) dan kemudian mendorong file xsd kembali melalui alat menggunakan /classes /L:VB (or CS) /o:<your path>bendera untuk mendapatkan kelas yang bisa saya impor dan gunakan dalam proyek saya sehari-hari .Net

Pat Hermens
sumber
6

Jika semua yang Anda inginkan adalah XSD, LiquidXML memiliki versi gratis yang dapat melakukan XSD, dan memiliki GUI untuk itu sehingga Anda dapat mengubah XSD jika Anda mau. Pokoknya saat ini saya menulis XSD saya sendiri dengan tangan, tetapi semuanya berkat aplikasi ini.

http://www.liquid-technologies.com/

Robert Gould
sumber
4

jika Anda bekerja di dunia java - ide intelliJ juga memiliki dukungan xml yang luas, termasuk xsd generation dan samle xml dari xsd generation, dan dengan plugins Anda bisa mendapatkan xslt debugger. - Terutama bagus jika Anda berencana untuk menggunakan alat seperti jaxb sesudahnya.

Andreas Petersson
sumber
2
Dan ini juga tersedia di Idea edisi komunitas gratis.
lbalazscs
3

Altova XmlSpy melakukan ini dengan baik - Anda dapat menemukan ikhtisar di sini

Garth Gilmour
sumber
3

Ini adalah utas lama tapi saya pikir ini berguna untuk memposting tautan ini: baru saja menemukan alat ini: xsd-gen Hasilkan Skema XML dari XML

dan itu hanya melakukan apa yang saya butuhkan.

ve
sumber