2012-12-27 2 views
0

xmllint가 다음 xsd 및 xml에 대한 유효성 검사 실패를보고하지 않는 이유는 무엇입니까?xmllint가 유효하지 않은 입력에 대한 유효성 검사에 성공했습니다.

t.xsd

<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="letter"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:pattern value="([a-z])+"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:element> 
</xs:schema> 

t.xml

<letter></letter> 

$ ./xmllint --schema t.xsd t.xml

<?xml version="1.0"?> 
<letter/> 
t1.xml validates 

답변

2

을 기대 다시 (마크 오코너는 유효 말한다,하지만 난 그 효과에 대한 인수, 단지 대머리 문을 볼 수 없습니다). 포인트와 마찬가지로 Xerces J 또는 Saxon EE에서는 유효하지 않습니다.

xmllint의 XSD 지원은 다소 드문 드문 드문 것으로 알려져 있지만 대부분 지원되지 않는 사양의 일부가 있음을 의미합니다. 이것은 정규식 루틴에서 간단한 버그와 비슷해 보입니다. gnome bugtracker for libxml에 몇 가지 해결되지 않은 정규식 버그가 있습니다. 아마도 이것은 관련되어 있습니다. 이 문제가 발생하여 new bug report을 열었습니다.

0

입력이 유효하다. 다음과 같이

스키마를 수정 업데이트 :-) XML 스키마의 "기능"

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="letter"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:pattern value="([a-z])+"/> 
     <xs:minLength value="1"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
</xs:schema> 

를 호출합니다 .... 길이에 추가적인 제한을 추가해야하고 당신으로 작동하도록 표시 '입력이 나에게 유효 보이지 않는

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="letter"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:pattern value="[a-z]+"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
</xs:schema> 

+0

그러나 왜 패턴 자체가 작동하지 않습니까? '+'는 이미 1 이상을 의미합니까? – user511274

+0

@ user511274 답변 됨 –

+0

업데이트 된 답변 주셔서 감사합니다. 하지만 내 질문은 내 원래 패턴이 잘못된 것입니다. xmllint에 버그가있을 수 있습니까? – user511274