W biurze piszemy obecnie aplikację, która wygeneruje pliki XML na podstawie podanego nam schematu. Mamy schemat w pliku .XSD.
Czy istnieją narzędzia lub biblioteki, których możemy użyć do zautomatyzowanego testowania, aby sprawdzić, czy wygenerowany XML pasuje do schematu?
Wolelibyśmy bezpłatne narzędzia, które są odpowiednie do użytku komercyjnego, chociaż nie będziemy wiązać kontrolera schematów, więc programista musi z niego korzystać tylko podczas programowania.
Nasz język programowania to C ++, jeśli robi to jakąkolwiek różnicę, chociaż nie sądzę, że powinien, ponieważ moglibyśmy wygenerować plik xml, a następnie przeprowadzić weryfikację, wywołując osobny program w teście.
xml
validation
xsd
schema
Jason Dagit
źródło
źródło
Odpowiedzi:
Po kilku badaniach uważam, że najlepszą odpowiedzią jest Xerces , ponieważ implementuje on całą XSD, jest wieloplatformowy i szeroko stosowany. Utworzyłem mały projekt Java na github, aby sprawdzić poprawność z wiersza poleceń przy użyciu domyślnego parsera JRE, którym zwykle jest Xerces. Można tego użyć w systemie Windows / Mac / Linux.
Dostępna jest również wersja Xerces języka C ++, jeśli wolisz z niej korzystać. Do wywołania go z wiersza poleceń można użyć narzędzia StdInParse . Ponadto komentator poniżej wskazuje na to bardziej kompletne narzędzie do pakowania .
Możesz także użyć xmllint, który jest częścią libxml . Być może już go masz. Przykładowe użycie:
Jednym z problemów jest to, że libxml nie implementuje całej specyfikacji, więc możesz napotkać problemy :(
Alternatywnie, jeśli korzystasz z systemu Windows, możesz użyć msxml , ale będziesz potrzebować jakiegoś opakowania, aby go wywołać, takiego jak GUI opisany w tym artykule DDJ . Wydaje się jednak, że większość osób korzystających z systemu Windows korzysta z edytora XML, takiego jak Notepad ++ (jak opisano w odpowiedzi Nate'a ) lub XML Notepad 2007, jak sugeruje SteveC (jest też kilka komercyjnych edytorów, o których tutaj nie wspomnę).
Wreszcie, różne programy dadzą niestety różne wyniki. Wynika to głównie ze złożoności specyfikacji XSD. Możesz przetestować swój schemat za pomocą kilku narzędzi.
AKTUALIZACJA : rozwinąłem to w poście na blogu .
źródło
xmllint
nie jest zgodny z wyrażeniami regularnymi XML, niestety, więc niektóre poprawne wyrażenia XML nie przejdą przez toIstnieje wtyczka dla Notepad ++ o nazwie XML Tools, która oferuje weryfikację XML i sprawdzanie poprawności względem XSD.
Można zobaczyć, jak go używać tutaj .
źródło
XML
odwołuje się doXSD
pliku,xsi:noNamespaceSchemaLocation="file.xsd"
to XML Tools spróbuje go użyć zamiast dać ci „zestaw” dialogu.xmlstarlet to narzędzie wiersza polecenia, które zrobi to i wiele więcej:
W twoim przypadku użycie byłoby zgodne z następującymi zasadami:
źródło
W systemie Windows dostępny jest bezpłatny Notatnik XML 2007 . Możesz wybrać XSD, dla których ma się sprawdzić
AKTUALIZACJA: jeszcze lepiej, użyj Notepad ++ z wtyczką XML Tools
źródło
Online Validator schematów XML firmy DecisionSoft umożliwia sprawdzenie pliku XML pod kątem danego schematu.
źródło
Używam Xerces:
http://xerces.apache.org/xerces-c/
źródło
sudo apt install libxerces-c-samples
a następnie sprawdzić dokument za pomocąStdInParse -v=always -n -s < document.xml
.http://www.xmlvalidation.com/
(Pamiętaj, aby zaznaczyć pole „Sprawdź poprawność względem zewnętrznego schematu XML”)
źródło
Właśnie uczę się schematu. Używam RELAX NG i sprawdzam poprawność za pomocą xmllint. Czuję się sfrustrowany błędami wychodzącymi z Xmlllint. Chciałbym, żeby były trochę bardziej pouczające.
Jeśli w pliku XML jest niewłaściwy atrybut, xmllint poda nazwę nieobsługiwanego atrybutu. Ale jeśli brakuje Ci atrybutu w pliku XML, po prostu pojawia się komunikat informujący, że elementu nie można sprawdzić.
Pracuję nad bardzo skomplikowanym XML-em z bardzo skomplikowanymi regułami i jestem nowy w tym, więc śledzenie, którego atrybutu brakuje, zajmuje dużo czasu.
Aktualizacja: Właśnie znalazłem narzędzie Java, które bardzo mi się podoba. Można go uruchomić z wiersza polecenia, takiego jak xmllint, i obsługuje RELAX NG: https://msv.dev.java.net/
źródło
Znalazłem ten walidator online z „corefiling” całkiem przydatny -
http://www.corefiling.com/opensource/schemaValidate.html
Po wypróbowaniu kilku narzędzi do sprawdzania poprawności mojego xsd, to właśnie to dało mi szczegółowe informacje o błędach - więc mogłem naprawić błąd w schemacie.
źródło
Edytor XML do szybkiego i łatwego sprawdzania poprawności XML jest dostępny na stronie http://www.xml-buddy.com
Wystarczy uruchomić instalator, a następnie sprawdzić poprawność plików XML za pomocą łatwej w obsłudze aplikacji komputerowej lub wiersza polecenia. Ponadto otrzymujesz wsparcie dla Schematron i RelaxNG. Obsługiwane jest również sprawdzanie poprawności partii ...
Aktualizacja 1/13/2012: Narzędzie wiersza polecenia jest bezpłatne i używa Xerces jako parsera XML.
źródło
jednym doskonałym narzędziem wizualnym do sprawdzania poprawności i generowania XSD z XML jest IntelliJ IDEA, intuicyjny i prosty.
źródło
Możesz połączyć swój schemat XML z Intellisense Microsoft Visual Studio. Ta opcja zapewnia zarówno weryfikację w czasie rzeczywistym ORAZ autouzupełnianie, co jest po prostu niesamowite.
Mam dokładnie ten scenariusz na mojej bezpłatnej kopii programu Microsoft Visual C ++ 2010 Express.
źródło
Kolejny internetowy walidator schematu XML (XSD): http://www.utilities-online.info/xsdvalidation/ .
źródło
Zwykle używam xsd od Microsoft, aby pomóc wygenerować xsd z pliku .NET. Analizuję również sekcje xml za pomocą xmlstarlet. Ostatnim bezpłatnym narzędziem, które byłoby dla Ciebie przydatne, jest altovaxml, który jest dostępny pod tym adresem URL: http://www.altova.com/download_components.html .
To pozwala mi skanować wszystkie pliki xml, wybierając, którego xsd użyć, parsując xml.
Aby wygenerować xml używam: xsd DOTNET.dll / type: CFGCLASS i zmień nazwę schema0.xsd CFGCLASS.xsd
Aby uzyskać nazwę xsd, używam: xmlstarlet sel -t -m / XXX / * -v nazwa-lokalna () $ 1 | sed 's / $ //'
To pozwala mi pobrać poprawną XSD za pomocą znacznika elementu w pliku xml.
W rezultacie mogę wywołać funkcję bash, aby zeskanować wszystkie pliki XML i je zweryfikować. Nawet jeśli znajdują się w wielu podkatalogach.
źródło