2014-12-17 2 views
1

안녕하세요, 저는 XSD 및 XML에 초보자입니다. 스키마에 대해 유효성을 검사하는 다음 XML 메시지가 있습니다. 다른 온라인 편집기를 사용하고 있습니다. 예를 들어 editor입니다. XML 구조의 유효성을 검사하고 있지만 문제는 문자열에서 부동 요소의 유형을 변경하면 여전히 XML 구조의 유효성을 검사한다는 것입니다. 그래서 이것은 내 XSD가 정확하지 않다는 것을 혼란스럽게합니다.XSD로 XML 유효성 검사를 실패하는 방법

XML 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<credentials xmlns:cdm="http://com.example/test/current"> 
    <cdm:username>jawad</cdm:username> 
    <cdm:password>jawad123</cdm:password> 
</credentials> 

XSD 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:cdm="http://com.example/test/current" 
xmlns = "http://com.example/test/current" 
elementFormDefault="qualified" 
attributeFormDefault="unqualified"> 

<xs:element name="credentials"></xs:element> 

<xs:complexType name="credentials"> 
    <xs:sequence> 
     <xs:element name="username" type="xs:string" minOccurs="1" maxOccurs="1"/> 
     <xs:element name="password" type="xs:string" minOccurs="1" maxOccurs="1"/> 
    </xs:sequence> 
</xs:complexType> 

</xs:schema> 

참고 :

난에 "부동" "이름"요소의 유형을 변경하는 경우, 편집기는 유효성 검사에 실패했음을 나타내는 오류를 표시해야하지만 아직 유효성을 검사하고 있으므로 내 xsd에 문제가있는 것입니다. 스키마 유효성 검사의 개념을 이해하지 못합니다.

답변

2

먼저 "credentials"요소가 "credentials"complexType을 참조하지 않으므로 스키마가 예상대로 작동하지 않습니다. (다른 유형이 지정되지 않은 경우 "사용자 이름"이 "float"로 선언 된 경우에도 올바른 형식의 XML을 허용하는 "credentials"요소가 기본 설정됩니다.

수정 될 수 있습니다.

<xs:element name="credentials" type="credentials"/> 

그런 다음 문서 유효성 검사 방법을 설명해 주시겠습니까? 실제로 파서가 올바르게 처리해야하지만 유효성 검사가 해제되었을 수 있습니다.

+0

감사합니다. targetNamespace를 놓고 위에서 말한 것처럼 요소의 유형을 정의하면 해결됩니다. 이제 제대로 검증됩니다. – user3141034

+1

@ user3141034 문제가 해결 되었다면 이것을 답으로 표시해야합니다 – simonalexander2005

0

네임 스페이스에서 문제가 발생한다고 생각합니다.

인스턴스 문서의 각 네임 스페이스에 대해 ("null"네임 스페이스를이 네임 스페이스로 계산) 하나의 스키마 문서가 필요하며 네임 스페이스가 "null"이 아닌 경우 스키마 문서의 targetNamespace 특성은 참석하십시오.