libxml2(SAX 파서)를 사용하여 인라인 DTD를 사용하여 XML의 유효성을 검사하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/24023570

문제

인라인으로 지정된 DTD에 대해 XML의 유효성을 검사해야 하는 libxml 라이브러리를 사용하여 C++에서 XML 파서를 작성하고 있습니다.내 프로그램에서 system()을 사용하고 싶지 않습니다.그렇지 않으면 xmllint 명령을 사용할 수 있었습니다.

나는 ~을 발견했다 xmlValidateDtd(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd) 에 지정된 함수 http://xmlsoft.org/ API 페이지.하지만 SAX 구문 분석에는 xmlDocPtr이 없기 때문에 DOM 기반 함수라고 생각합니다.

인라인 DTD에 대해 XML 문서의 유효성을 검사하는 다른 방법이 있습니까?

도움이 되었습니까?

해결책

일반적으로 다음을 제공하기만 하면 됩니다. XML_PARSE_DTDVALID 파서 옵션을 사용하므로 파싱 시 문서의 유효성이 검사됩니다.

문서가 유효성 검사 없이 이미 구문 분석된 경우 다음을 사용할 수 있습니다. xmlValidateDocument:

int xmlValidateDocument (xmlValidCtxtPtr ctxt, 
                         xmlDocPtr doc)

문서 인스턴스의 유효성을 검사해 보면 기본적으로 XML Rec에 설명된 모든 검사가 수행됩니다.내부 및 외부 하위 집합(있는 경우)의 유효성을 검사하고 문서 트리의 유효성을 검사합니다.

ctxt: 검증 컨텍스트
doc: 문서 인스턴스
Returns:유효한 경우 1, 그렇지 않은 경우 0

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top