เครื่องมือใด ๆ ในการสร้างสกีมา XSD จากเอกสารอินสแตนซ์ XML [ปิด]


146

ฉันกำลังมองหาเครื่องมือที่จะใช้เอกสารอินสแตนซ์ XML และแสดงผลลัพธ์ XSD ที่สอดคล้องกัน

แน่นอนฉันรู้ว่า XSD schema ที่สร้างขึ้นจะถูก จำกัด เมื่อเปรียบเทียบกับการสร้าง schema ด้วยมือ (อาจจะไม่จัดการองค์ประกอบเสริมหรือทำซ้ำหรือข้อ จำกัด ของข้อมูล) แต่อย่างน้อยก็อาจเป็นจุดเริ่มต้นอย่างรวดเร็ว

คำตอบ:


65

เครื่องมืออนุมาน Microsoft XSDเป็นดีโซลูชั่นฟรี เครื่องมือแก้ไข XML จำนวนมากเช่น XmlSpy (กล่าวถึงโดย @Garth Gilmour) หรือ OxygenXML Editor ก็มีคุณสมบัติเช่นนั้น พวกมันค่อนข้างแพง เซิร์ฟเวอร์ BizTalk ยังมีเครื่องมืออนุมาน XSD เช่นกัน

แก้ไข: ฉันเพิ่งค้นพบ. net XmlSchemaInference class ดังนั้นหากคุณใช้. net คุณควรพิจารณาสิ่งนั้น


1
ว้าวเดือนต่อมาคุณชี้ให้ฉันเห็นทางออกที่ดีในการแปลง XDR เป็น XSD อย่างรวดเร็ว! ขอบคุณ!
bethlakshmi

6
มันยากสำหรับฉันที่จะค้นหาการดาวน์โหลดสำหรับเครื่องมือนี้ (xsd.exe) แต่มันมีอยู่แล้วในระบบของฉันใน Visual Studio 8 \ SDK \ v2.0 \ Bin Files \ Microsoft C: \ Program แค่คิดว่าฉันจะแบ่งปันในกรณีที่ช่วยใครก็ได้
oob

2
ในกรณีที่บางคนไม่ได้ติดตั้ง Visual Studio นี่คือลิงค์สำรองเพื่อดาวน์โหลด xsd: juliankay.com/development/download-xsd-exe
MD

5
ไดเรกทอรีที่ดูเหมือนว่าxsd.exeจะมีการเปลี่ยนแปลงบน Windows 7 ผมมีมันในหลายMicrosoft SDKsไดเรกทอรีหมู่ที่นี้ (ดังนั้นจึงดูเหมือนจะไม่จำเป็นต้องขึ้นอยู่กับ Visual Studio C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Toolsอีกต่อไป?): ฉันต้องเรียกใช้ในไดเรกทอรีที่มี xml เพื่อป้องกันข้อผิดพลาดเกี่ยวกับ "ตัวละครที่ผิดกฎหมายในเส้นทาง" แต่นั่นอาจเป็นเพราะชื่อไฟล์ยาวที่ฉันมี
Yahoo Serious

ใครที่มีปัญหาในการใช้เครื่องมืออนุมาน MS XSD การเพิ่ม OutOfMemoryException สำหรับไฟล์ XML ขนาด 200MB ที่มี RAM ว่างมากกว่า 8GB ใช่ไหม
เฟลิเป้ซาบิโน

54

คุณสามารถใช้โอเพนซอร์สและตัวเลือกข้ามแพลตฟอร์ม: inst2xsd จากXMLBeans ของ Apache ฉันพบว่ามันมีประโยชน์และง่ายมาก

เพียงดาวน์โหลด, เปิดเครื่องรูดและเล่น (มันต้องมี Java)


เคล็ดลับที่ดีนั่นช่วยฉันได้มากจริงๆขอบคุณ!
IAdapter

2
OMG มันดีกว่า Powershell พล่ามมาก! โดยเฉพาะอย่างยิ่งเมื่อฉันไม่มีไฟล์ XSD!
Chloe

3
ทำงานเหมือนเครื่องราง :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio


3
โปรดทราบว่า XMLBeans ได้ถูกย้ายไปที่attic.apache.orgซึ่งเป็นบ้านของโครงการ Apache ที่เลิกใช้แล้ว กล่าวอีกนัยหนึ่งมันไม่ได้รับการปรับปรุงตั้งแต่ปี 2012
Magnilex

51

ตรังเป็นตัวเลือกที่ดีที่สุดที่นี่ โอเพ่นซอร์สและไขว้แพลตฟอร์ม (แม้ว่าจะต้องมีจาวา)

จากเว็บไซต์ตรัง:

ตรังแปลงระหว่างภาษาสคีที่แตกต่างกันสำหรับ XML รองรับภาษาต่อไปนี้

  • RELAX NG (ไวยากรณ์ XML)
  • ไวยากรณ์กระชับ RELAX NG
  • XML 1.0 DTD
  • สคีมา XML ของ W3C

สคีมาที่เขียนในภาษาสคีมาที่สนับสนุนใด ๆ สามารถแปลงเป็นภาษาสคีมาที่สนับสนุนอื่น ๆ ยกเว้นว่าสคีมาของ W3C XML ได้รับการสนับสนุนสำหรับเอาต์พุตเท่านั้นไม่ใช่สำหรับอินพุต

ตรังยังสามารถอนุมานสคีมาจากเอกสาร XML อย่างน้อยหนึ่งตัวอย่าง

ลิ้งค์ดาวน์โหลด


ตรังยังเป็นเครื่องมือที่รวมอยู่ใน OxygenXML เพื่อทำการอนุมาน XSD จากเอกสาร XMl หนึ่งรายการหรือมากกว่า ตอนแรกที่นี่ดูเหมือนว่าจะทำงานได้ดี
redcalx

4
หากสิ่งที่คุณต้องการคือสร้าง xsd จากไฟล์ xml trang เป็น IMHO ที่ดีที่สุดเร็วที่สุดและง่ายที่สุด
kriver

2
เอกสารของ trang ค่อนข้างบาง $ trang file.xml schema.xsdเพื่อสร้างสกีมาทำงาน
Joe Mornin

บน windows run: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov

มีโครงสร้างย่อยที่ปรากฏในรูปแบบเดียวกันในสถานที่ต่าง ๆ ในตัวอย่าง XML ของฉันตรังทำหน้าที่ได้อย่างสมบูรณ์แบบในการตรวจสอบการทำซ้ำและสร้าง XSD ขั้นต่ำซึ่งเป็นสิ่งที่ฉันต้องการ ดีมาก!
Tomislav Nakic-Alfirevic


12

นอกจากนี้ยังมีXML schema learnerซึ่งมีอยู่ในGithub

มันสามารถใช้ไฟล์ XML หลายและแยก XSD ร่วมกันจากทุกไฟล์เหล่านั้น


1
ระวังเครื่องมือนี้เขียนด้วย PHP ดังนั้นจึงไม่ง่ายต่อการติดตั้ง
79E09796

5
@ 79E09796 การติดตั้ง cli php ด้วยsudo apt-get install php5-cliและทำงาน./learn --help--- ฉันไม่เห็นความแตกต่างระหว่างสิ่งนั้นกับเครื่องมือที่เขียนด้วยภาษาจาวา, ไพ ธ อนหรือทับทิม :)
edorian

1
เพิ่งลองใช้ windows - ใช้งานได้ดีกับ php 5.4 โดยไม่ต้องติดตั้งใด ๆ ทั้ง PHP และ XML Schema เรียนเพียงซิปและดำเนินการโดยใช้เส้นทางเต็ม)
VAK

ความคิดเห็นเล็ก ๆ บนlocalityสนาม: ถ้าชื่อฟิลด์ถูกใช้ในหลาย ๆ ที่ใน XML ที่อ้างถึงองค์ประกอบที่แตกต่างกันlocalityจำเป็นต้องมีค่าที่มากกว่า 1 เช่นroot/itemและroot/something/itemอ้างถึงประเภทที่แตกต่างกันดังนั้น--locality 2จึงต้องใช้ค่าต่ำสุด
shadi

10

หากคุณได้ติดตั้ง. Net เครื่องมือในการสร้างสกีมาและคลาส XSD จะรวมอยู่ในค่าเริ่มต้นแล้ว
สำหรับฉันเครื่องมือ XSD ได้รับการติดตั้งภายใต้โครงสร้างต่อไปนี้ สิ่งนี้อาจแตกต่างกันไปขึ้นอยู่กับไดเรกทอรีการติดตั้งของคุณ

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:]

โดยปกติคลาสและสกีมาที่เครื่องมือนี้สร้างทำงานได้ค่อนข้างดีโดยเฉพาะอย่างยิ่งถ้าคุณกำลังจะใช้มันในภาษา. Net

ฉันมักจะใช้เอกสาร XML ที่ฉันตามหลังผลักมันผ่านเครื่องมือ XSD ด้วยการ/o:<your path>ตั้งค่าสถานะเพื่อสร้างสคีมา (xsd) แล้วดันไฟล์ xsd กลับผ่านเครื่องมือโดยใช้/classes /L:VB (or CS) /o:<your path>แฟล็กเพื่อรับคลาสที่ฉันสามารถนำเข้าและใช้งานได้ ในแต่ละวันโครงการ. Net


6

หากสิ่งที่คุณต้องการคือ XSD, LiquidXML มีรุ่นฟรีที่ทำหน้าที่เป็น XSD และมี GUI ให้กับมันเพื่อให้คุณสามารถปรับ XSD ได้หากต้องการ ทุกวันนี้ฉันเขียน XSD ของตัวเองด้วยมือ แต่ทั้งหมดนี้ต้องขอบคุณแอพนี้

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


4

หากคุณกำลังทำงานในโลกจาวา - แนวคิด intelliJยังมีการสนับสนุน xml มากมายเช่น xsd generation และ samle xml จาก xsd generation และด้วยปลั๊กอินคุณสามารถรับ xslt debuggers ได้ - ดีเป็นพิเศษหากคุณวางแผนที่จะใช้เครื่องมือเช่น jaxb หลังจากนั้น


2
และนี่ยังมีอยู่ใน Idea รุ่นฟรีสำหรับชุมชน
lbalazscs


3

นี่เป็นเธรดเก่า แต่ฉันคิดว่ามันจะมีประโยชน์ในการโพสต์ลิงค์นี้: เพิ่งพบเครื่องมือนี้: xsd-gen Generate XML Schema จาก XML

และมันก็ทำในสิ่งที่ฉันต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.