2012-01-18 8 views
1

와 함께 자바에서 XML 스키마 검증 내가 가지고 여기접두사

<web:Add xmlns:web="http://my/web/"> 
<web:a>1</web:a> 
<web:b>2</web:b> 
</web:Add> 

아래 XML 메시지 내 스키마 여기

<?xml version="1.0" encoding="utf-8"?> 
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" > 
<s:element name="Add"> 
    <s:complexType> 
     <s:sequence> 
     <s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" /> 
     <s:element minOccurs="1" maxOccurs="1" name="b" type="s:int" /> 
     </s:sequence> 
    </s:complexType> 
    </s:element> 
</s:schema> 

것은 내 코드

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
File f = new File("C:\\temp\\my.xsd"); 
Schema schema = factory.newSchema(f); 
Validator validator = schema.newValidator(); 
Document requestDoc = getDocumentFromString(request,true); 
validator.validate(new DOMSource(requestDoc)); 

이 실패 않는 이유는 cvc-complex-type.2.4.a : 요소 'web : a'로 시작하는 잘못된 콘텐츠가 발견되었습니다. '{a}'중 하나가 예상됩니다.

내가 메시지를 수정 한 다음 모든 작품이

<web:Add xmlns:web="http://my/web/"> 
<a>1</a> 
<b>2</b> 
</web:Add> 

같은 요소에 대한 접두사 OUL을합니다. 왜? 두 메시지는 제공된 스키마에 대해 유효한 XML입니다. 도움이 필요합니다.

답변

2

스키마 요소의 targetNamespaceelementFormDefault 속성을 살펴보십시오.

+0

감사합니다. 그거였다! 다음을 추가하고 그것을 고정했습니다 elementFormDefault = "qualified" –

+0

도와 줘서 기쁩니다. 귀하의 질문에 가장 잘 맞는 답을 왼쪽에있는 체크 표시를 클릭하여 "수락"하는 것은 관례입니다. –