2013-05-07 11 views
7

mam wejście XMLJak wygenerować XSD z elementów XML

<field> 
    <name>id</name> 
    <dataType>string</dataType> 
    <maxlength>42</maxlength> 
    <required>false</required> 
</field> 

szukam biblioteki lub narzędzie, które odbędzie dokument XML instancji i wyjście odpowiedni schematu XSD.

szukam jakiejś biblioteki Java, z jaką można wygenerować XSD dla powyższej struktury XML

Odpowiedz

1

można napisać XSLT do zrobienia coś w ten sposób. Problem polega jednak na tym, że pojedynczy dokument sam w sobie nie jest wystarczającą informacją do wygenerowania schematu. Czy któryś z tych elementów jest opcjonalny? Czy w tym dokumencie brakuje czegoś, co może się pojawić w innych przypadkach? Ile może być konkretnego elementu? Czy muszą być w tej kolejności? Istnieje wiele rzeczy, które można wyrazić w schemacie, które nie są od razu oczywiste z jednego wystąpienia dokumentu, który jest zgodny z tym schematem.

9

Jeśli wszystko czego potrzebujesz to XSD, tak, że XML, który podałeś, jest zgodny z tym, lepiej byłoby zrobić to samemu zamiast używać narzędzia.

Nikt nie wie lepiej niż ty specyfiki schematu, takie jak wartości, które są ważne tam (na przykład, jest elementem <maxlength> wymagane? Są true i false jedynymi poprawnymi wartościami <required>?).

Jeśli naprawdę chcesz użyć narzędzia (doradziłbym go tylko, jeśli nie zaprojektowałeś XML i naprawdę nie możesz uzyskać prawdziwego XSD - lub jeśli to zaprojektowałeś, sprawdź dwukrotnie wygenerowany XSD) , możesz spróbować Trang. Może wywnioskować Schemat XSD z wielu przykładowych XML-ów.

Musisz wziąć pod uwagę, że narzędzie XSD może wywnioskować, że możesz być niekompletny lub niedokładny, jeśli próbki XML nie są wystarczająco reprezentatywne.

java -jar trang.jar sampleXML.xml inferredXSD.xsd 

Możesz znaleźć usage example of Trang here.

+0

Czy istnieje sposób, aby zobaczyć wszystkie opcje wyjściowe dla trang? –

+0

Wydają się być dobrze udokumentowane w oficjalnym podręczniku [Trang] (http://www.thaiopensource.com/relaxng/trang-manual.html#output-modules). –

+0

Nie używam xsd do używania znaczników "ref" lub importu. Próbowałem -o disable-abstract-element, ale to nie działa! –

0

spróbować XMLBeans ma kilka narzędzi, jednym z nich jest ins2xsd można znaleźć szczegółów tutaj: http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html Powodzenia

+1

Witamy w SO! Mimo że link w Twoim poście stanowi odpowiedź, musisz podać treść w swoim linku. Później link może być nieważny. –

Powiązane problemy