Di kantor kami sedang menulis aplikasi yang akan menghasilkan file XML terhadap skema yang kami berikan. Kami memiliki skema dalam file .XSD.
Apakah ada alat atau pustaka yang dapat kita gunakan untuk pengujian otomatis untuk memeriksa apakah XML yang dihasilkan cocok dengan skema?
Kami akan lebih memilih alat gratis yang sesuai untuk penggunaan komersial meskipun kami tidak akan menggabungkan checker skema sehingga hanya perlu digunakan oleh pengembang selama pengembangan.
Bahasa pengembangan kami adalah C ++ jika itu membuat perbedaan, meskipun saya pikir itu tidak seharusnya karena kami dapat menghasilkan file xml dan kemudian melakukan validasi dengan memanggil program terpisah dalam pengujian.
xml
validation
xsd
schema
Jason Dagit
sumber
sumber
Jawaban:
Setelah beberapa penelitian, saya pikir jawaban terbaik adalah Xerces , karena mengimplementasikan semua XSD, adalah cross-platform dan banyak digunakan. Saya telah membuat proyek Java kecil di github untuk memvalidasi dari baris perintah menggunakan parser JRE default, yang biasanya Xerces. Ini dapat digunakan pada Windows / Mac / Linux.
Ada juga versi C ++ Xerces yang tersedia jika Anda lebih suka menggunakannya. The utilitas StdInParse dapat digunakan untuk menyebutnya dari baris perintah. Juga, komentator di bawah ini menunjuk ke utilitas pembungkus yang lebih lengkap ini .
Anda juga bisa menggunakan xmllint, yang merupakan bagian dari libxml . Anda mungkin sudah menginstalnya. Contoh penggunaan:
Satu masalah adalah bahwa libxml tidak mengimplementasikan semua spesifikasi, sehingga Anda dapat mengalami masalah :(
Atau, jika Anda menggunakan Windows, Anda dapat menggunakan msxml , tetapi Anda akan memerlukan semacam pembungkus untuk memanggilnya, seperti GUI yang dijelaskan dalam artikel DDJ ini . Namun, tampaknya kebanyakan orang di Windows menggunakan Editor XML, seperti Notepad ++ (seperti yang dijelaskan dalam jawaban Nate ) atau XML Notepad 2007 seperti yang disarankan oleh SteveC (ada juga beberapa editor komersial yang tidak akan saya sebutkan di sini).
Akhirnya, Anda akan menemukan berbagai program yang akan, sayangnya, memberikan hasil yang berbeda. Ini sebagian besar disebabkan oleh kompleksitas spesifikasi XSD. Anda mungkin ingin menguji skema Anda dengan beberapa alat.
UPDATE : Saya telah memperluas ini di a posting blog .
sumber
xmllint
sayangnya, tidak memenuhiAda plugin untuk Notepad ++ yang disebut XML Tools yang menawarkan verifikasi dan validasi XML terhadap XSD.
Anda dapat melihat cara menggunakannya di sini .
sumber
XML
itu sendiri mereferensikan sebuahXSD
file, misalnyaxsi:noNamespaceSchemaLocation="file.xsd"
, maka XML Tools akan mencoba menggunakannya alih-alih memberi Anda dialog "set".xmlstarlet adalah alat baris perintah yang akan melakukan ini dan banyak lagi:
Penggunaan dalam kasus Anda akan sejalan:
sumber
Untuk Windows ada XML Notepad 2007 gratis . Anda dapat memilih XSD untuk divalidasi
PEMBARUAN: lebih baik lagi, gunakan Notepad ++ dengan plugin XML Tools
sumber
Validator Skema XML online dari DecisionSoft memungkinkan Anda untuk memeriksa file XML terhadap skema yang diberikan.
sumber
Saya menggunakan Xerces:
http://xerces.apache.org/xerces-c/
sumber
sudo apt install libxerces-c-samples
dan kemudian memeriksa dokumen denganStdInParse -v=always -n -s < document.xml
.http://www.xmlvalidation.com/
(Pastikan untuk mencentang Kotak "Validasi terhadap skema XML eksternal")
sumber
Saya baru belajar Skema. Saya menggunakan RELAX NG dan menggunakan xmllint untuk memvalidasi. Saya frustrasi dengan kesalahan yang keluar dari xmlllint. Saya berharap mereka sedikit lebih informatif.
Jika ada atribut yang salah dalam XML maka xmllint memberi tahu Anda nama atribut yang tidak didukung. Tetapi jika Anda kehilangan atribut dalam XML Anda hanya mendapatkan pesan yang mengatakan elemen tidak dapat divalidasi.
Saya sedang mengerjakan beberapa XML yang sangat rumit dengan aturan yang sangat rumit, dan saya baru dalam hal ini sehingga melacak atribut yang hilang membutuhkan waktu yang lama.
Pembaruan: Saya baru saja menemukan alat java yang sangat saya sukai. Itu dapat dijalankan dari baris perintah seperti xmllint dan mendukung RELAX NG: https://msv.dev.java.net/
sumber
Saya menemukan validator online ini dari 'corefiling' cukup berguna -
http://www.corefiling.com/opensource/schemaValidate.html
Setelah mencoba beberapa alat untuk memvalidasi xsd saya, ini adalah yang memberi saya info kesalahan rinci - jadi saya bisa memperbaiki kesalahan dalam skema.
sumber
Editor XML untuk validasi XML yang cepat dan mudah tersedia di http://www.xml-buddy.com
Anda hanya perlu menjalankan installer dan setelah itu Anda dapat memvalidasi file XML Anda dengan aplikasi desktop yang mudah digunakan atau baris perintah. Selain itu Anda juga mendapatkan dukungan untuk Schematron dan RelaxNG. Validasi batch juga didukung ...
Pembaruan 1/13/2012: Alat baris perintah gratis untuk digunakan dan menggunakan Xerces sebagai parser XML.
sumber
satu alat visual hebat untuk memvalidasi dan menghasilkan XSD dari XML adalah IntelliJ IDEA, intuitif dan sederhana.
sumber
Anda dapat menghubungkan skema XML Anda ke Intellisense Microsoft Visual Studio. Opsi ini memberi Anda validasi real-time DAN autocomplete, yang mengagumkan.
Saya memiliki skenario yang tepat ini berjalan pada salinan gratis saya dari Microsoft Visual C ++ 2010 Express.
sumber
Validator XML Schema (XSD) online lain: http://www.utilities-online.info/xsdvalidation/ .
sumber
Saya cenderung menggunakan xsd dari Microsoft untuk membantu menghasilkan xsd dari file .NET. Saya juga menguraikan bagian dari xml menggunakan xmlstarlet. Alat gratis terakhir yang akan berguna bagi Anda adalah altovaxml, yang tersedia di URL ini: http://www.altova.com/download_components.html .
Ini memungkinkan saya untuk memindai semua file xml mengambil xsd mana yang akan digunakan dengan mem-parsing xml.
Untuk menghasilkan xml saya menggunakan: xsd DOTNET.dll / type: CFGCLASS & rename schema0.xsd CFGCLASS.xsd
Untuk mendapatkan nama xsd yang saya gunakan: xmlstarlet sel -t -m / XXX / * -v local-name () $ 1 | sed 's / $ //'
Ini memungkinkan saya untuk mengambil XSD yang benar menggunakan elemen tag dalam file xml.
Hasil akhirnya adalah saya bisa memanggil fungsi bash untuk memindai semua file XML dan memverifikasinya. Bahkan jika mereka berada di beberapa subdirektori.
sumber