bestsource

XML 스키마(XSD) 검증 도구?

bestsource 2023. 10. 16. 21:58
반응형

XML 스키마(XSD) 검증 도구?

현재 사무실에서 우리는 주어진 스키마에 대해 XML 파일을 생성할 애플리케이션을 작성하고 있습니다..X에 스키마가 있습니다.SD파일.

생성된 XML이 스키마와 일치하는지 확인하기 위해 자동 테스트에 사용할 수 있는 도구나 라이브러리가 있습니까?

우리는 스키마 체커를 번들로 제공하지 않을 것이기 때문에 개발 중에 개발자가 사용하기만 하면 되지만 상업적으로 사용하기에 적합한 무료 툴을 선호합니다.

우리 개발 언어는 차이가 있다면 C++이지만, xml 파일을 생성하고 테스트에서 별도의 프로그램을 호출하여 검증을 할 수는 없을 것 같습니다.

어느 정도 조사해 본 결과, XSD를 모두 구현하는 Xerces가 크로스 플랫폼이고 널리 사용되는 것이 가장 좋은 답이라고 생각합니다.기본 JRE 파서를 사용하여 명령줄에서 검증하기 위해 github에 작은 Java 프로젝트를 만들었습니다. 이 프로젝트는 일반적으로 Xerces입니다.이것은 윈도우/맥/리눅스에서 사용할 수 있습니다.

만약 당신이 그것을 사용하고 싶다면 C++ 버전의 Xerces도 이용 가능합니다.StdInParse 유틸리티를 사용하여 명령줄에서 호출할 수 있습니다.또한 아래 코멘트는 이 보다 완벽한 래퍼 유틸리티를 지적합니다.

libxml의 일부인 xmlint를 사용할 수도 있습니다.이미 설치되어 있을 수도 있습니다.사용 예시:

xmllint --noout --schema XSD_FILE XML_FILE

한 가지 문제는 libxml이 모든 사양을 구현하지 않기 때문에 문제가 발생할 수 있다는 것입니다:(

또는 Windows(윈도우)에 있는 경우 msxml(msxml)을 사용할 수 있지만 이 DDJ 문서에서 설명한 GUI와 같이 이를 호출하기 위한 일종의 래퍼가 필요합니다.그러나 대부분의 Windows 사용자는 Notepad++(Nate의 답변에 설명되어 있음) 또는 Steve C가 제안XML Notepad 2007과 같은 XML Editor를 사용하는 것으로 보입니다(여기서는 언급하지 않을 상업용 Editor도 여러 개 있습니다).

마지막으로, 다른 프로그램이 다른 결과를 제공한다는 것을 알게 될 것입니다.이는 주로 XSD 사양의 복잡성에 기인합니다.여러 도구를 사용하여 스키마를 테스트할 수 있습니다.

업데이트: 블로그 게시물에서 이에 대해 자세히 알아봤습니다.

XSD에 대한 XML 검증 및 검증을 제공하는 XML Tools라는 Notepad++용 플러그인이 있습니다.

여기서 사용법을 보실 수 있습니다.

xmlstarlet은 다음과 같은 작업을 수행하는 명령줄 도구입니다.

$ xmlstarlet val --helpXMLStarlet Toolkit: XML 문서의 유효성 검사용도: xmlstarlet val <options> [<xml-file-or-uri> ... ]where <options>-word 또는 --well-formed - well-formed만 검증(기본값)-d 또는 --dtd <dtd-file> - DTD에 대해 검증-s 또는 --xsd <xsd-file> - XSD 스키마에 대해 검증-E 또는 --embedded - 내장된 DTD를 사용하여 검증-r또는 --relaxng <rng-file> - Relax-NG 스키마에 대해 검증합니다.-e 또는 --err - stderr에 자세한 오류 메시지를 인쇄합니다.-b 또는 --list-bad - 유효성을 검사하지 않는 파일만 나열합니다.-g 또는 --list-good - 유효성을 검사하는 파일만 나열합니다.-q 또는 --quiet - 파일을 나열하지 않음(결과 코드만 반환)
참고: XML 스키마가 불완전하기 때문에 아직 완전히 지원되지 않습니다.slibxml2에서 지원(http://xmlsoft.org 참조)
XMLstarlet은 쿼리/편집/체크/변환을 위한 명령줄 툴킷입니다.XML 문서(자세한 내용은 http://xmlstar.sourceforge.net/) 참조)

이 경우 사용 용도는 다음과 같습니다.

xmlstarlet val --xsd your_schema.xsd your_file.xml

윈도우의 경우 무료 XML 메모장 2007이 있습니다.XSD를 선택하여 다음에 대해 검증할 수 있습니다.

업데이트: XML Tools 플러그인과 함께 Notepad++를 사용하는 것이 더 좋습니다.

DecisionSoft의 온라인 XML 스키마 Validator를 사용하면 주어진 스키마와 비교하여 XML 파일을 확인할 수 있습니다.

Xerces를 사용합니다.

http://xerces.apache.org/xerces-c/

난 그저 스키마를 배우고 있을 뿐입니다.저는 RELAXENG을 사용하고 xmlint를 사용하여 검증하고 있습니다.xmllint에서 오류가 나와서 답답합니다.그들이 조금 더 많은 정보를 얻었으면 좋겠습니다.

XML에 잘못된 특성이 있으면 xmlint에서 지원되지 않는 특성의 이름을 알려줍니다.그러나 XML에 속성이 없는 경우 요소를 검증할 수 없다는 메시지만 표시됩니다.

저는 매우 복잡한 규칙을 가진 매우 복잡한 XML을 작업하고 있으며, 이 작업은 처음이라 누락된 속성을 추적하는 데 시간이 오래 걸립니다.

업데이트: 방금 내가 많이 좋아하는 자바 도구를 찾았습니다.xmlint처럼 명령줄에서 실행할 수 있으며 RELAXNG: https://msv.dev.java.net/ 을 지원합니다.

는 '가 '' 에서에서 꽤 하다는 것을
://

xsd를 검증하기 위해 몇 가지 도구를 시도한 결과, 자세한 오류 정보를 제공한 것입니다. 그래서 스키마의 오류를 수정할 수 있었습니다.

빠르고 쉬운 XML 검증을 위한 XML 편집기는 http://www.xml-buddy.com 에서 구입할 수 있습니다.

설치 프로그램을 실행한 후 사용하기 쉬운 데스크톱 애플리케이션이나 명령줄을 사용하여 XML 파일의 유효성을 검사할 수 있습니다.이외에도 Schematron과 RelaxNG에 대한 지원도 받을 수 있습니다.배치 유효성 검사도 지원됩니다...

업데이트 1/13/2012:명령줄 도구는 자유롭게 사용할 수 있으며 XML 파서로 Xerces를 사용합니다.

http://www.xmlvalidation.com/

("외부 XML 스키마에 대해 검증" 상자를 선택해야 합니다.)

XML로부터 XSD를 검증하고 생성하기 위한 하나의 훌륭한 시각적 도구는 직관적이고 간단한 IntelliJ IDEA입니다.

XML 스키마를 Microsoft Visual Studio의 Intellisense에 연결할 수 있습니다.이 옵션은 실시간 유효성 검사와 자동 완료 기능을 모두 제공합니다. 이것은 정말 멋진 일입니다.

Microsoft Visual C++ 2010 Express의 무료 복사본에서 이 시나리오를 실행하고 있습니다.

저는 마이크로소프트사의 xsd를 사용하여 a에서 xsd를 생성하는 것을 돕습니다.NET 파일.또한 xmlstarlet을 사용하여 xml의 섹션을 파싱합니다.최종 무료 도구는 altovaxml이며, 이 도구는 다음 URL http://www.altova.com/download_components.html 에서 사용할 수 있습니다.

이것은 xsd가 xml을 파싱하여 사용할 모든 xml 파일 픽업을 스캔할 수 있게 해줍니다.

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

사용하는 xsd DOTNET.dll /type xsd DOTNET을 생성하려면:CFGCLASS & rename 스키마0.xsd CFGCLASS.xsd

사용하는 xsd 이름을 가져오려면: xmlstarlet sel -t -m /XXX/* -v local-name() $1 | sed's/ $/'

이를 통해 xml 파일 내의 요소 태그를 사용하여 정확한 XSD를 픽업할 수 있습니다.

결과적으로 bash 함수를 호출하여 모든 XML 파일을 스캔하여 확인할 수 있습니다.여러 하위 디렉터리에 있는 경우에도 해당됩니다.

또 다른 XSD(온라인 XML 스키마) 검증자 http://www.utilities-online.info/xsdvalidation/ 입니다.

언급URL : https://stackoverflow.com/questions/124865/xml-schema-xsd-validation-tool

반응형