xmllint를 만들어이 스키마의 유효성을 검사하려고합니다. 불행히도 나는 이상한 문제에 봉착했다. xmllint가 잘못된 옵션 인 인수를 해석하지 않는 것 같습니다. 인터리브 태그가 없습니다. 다음은 잘못된 태그 사람이있는 테스트 스키마이며 xmllint가 신호를 보내야합니다. 불행히도 xmllint는 다른 존재하지 않는 버그를 낭비하고 있습니다. 어쩌면 내가 뭔가 잘못하고 있어요 제발 좀 봐 :xmllint를 사용하여 RelaxNG 유효성 확인
<?xml version="1.0" encoding="ISO-8859-1"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<define name="testproject">
<element name="testproject">
<ref name="overview"/>
<ref name="tests"/>
</element>
</define>
<define name="overview">
<element name="overview">
<ref name="title"/>
<oneOrMore>
<ref name="person"/>
</oneOrMore>
</element>
</define>
<define name="tests">
<element name="tests">
<choice>
<attribute name="file"/>
<group>
<ref name="title"/>
<optional>
<ref name="field"/>
</optional>
<optional>
<ref name="field2"/>
</optional>
<optional>
<ref name="field3"/>
</optional>
<choice>
<zeroOrMore>
<ref name="test"/>
</zeroOrMore>
<zeroOrMore>
<ref name="tests"/>
</zeroOrMore>
</choice>
</group>
</choice>
</element>
</define>
<define name="test">
<element name="test">
<attribute name="name"/>
<interleave>
<optional>
<ref name="title"/>
</optional>
<ref name="field"/>
<zeroOrMore>
<ref name="person"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="title">
<element name="title">
<text/>
</element>
</define>
<define name="field">
<element name="field">
<text/>
</element>
</define>
<define name="field2">
<element name="field2">
<text/>
</element>
</define>
<define name="field3">
<element name="field3">
<text/>
</element>
</define>
<define name="person">
<element name="person">
<text/>
</element>
</define>
<start>
<ref name="testproject"/>
</start>
</grammar>
그리고 XML 파일 내용 :
<?xml version="1.0" encoding="ISO-8859-1"?>
<testproject>
<overview>
<title>
some title
</title>
<person>J33nn</person>
</overview>
<tests>
<title>
Some title test
</title>
<field>as</field>
<test name="TestName">
<title>Some title</title>
<field>
dasdasd
</field>
<peron>J33nn</peron>
</test>
</tests>
</testproject>
대신보고 맞춤법이 틀린 태그 페론의이 같은 것을보고합니다
을 요소 필드 : Relax-NG 유효성 오류 : 요소 테스트에 추가 콘텐츠가 있습니다. 필드
True ** jing **은 잘 작동하지만 ** xmllint **이 작동하도록하려면 :/ – J33nn
xmllint를 작동 시키려면 소스를 가져 와서 디버깅하거나 디버깅을 위해 지불해야합니다. 또는 xmllint 개발자가 발견 한 문제에 관심을 갖고 디버깅하도록하십시오. – Louis
보고 된 바에 따르면 xmllint가 정상적으로 작동하는 것으로 보이는 외부 관찰자가 적어도 한 명 있습니다. 스키마가 유효합니까? 아니. xmllint가 유효하지 않다고 말합니까? 예. 문제는 xmllint의 진단이 좋지 않고 오류 메시지가 도움이되지 않는다는 것입니다. 잘못된 결과가 나옵니다. 시스템이 항상 좋은 오류 메시지를 생성하지 않습니다. –