저는 XSD
을 처음 접합니다. XSD 파일과 XML 파일 및 XSD에 대해 XML의 유효성을 검사하는 프로그램을 작성했습니다. 프로그램을 실행할 때 Invalid content was found starting with element 'id'. One of '{id}' is expected
이라는 오류 메시지가 나타납니다. 누군가 내가 잘못 가고있는 곳을 설명해 줄 수 있습니까?xsd에 대한 xml의 유효성을 검사 할 수 없습니다
XSD 파일 :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.edureka.co/Student"
xmlns:st="http://www.edureka.co/Student"
>
<xs:element name="student" type="st:student"></xs:element>
<xs:complexType name="student">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="language" type="xs:string"/>
<xs:element name="expertise" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
그리고 XML 파일 :
<?xml version="1.0" encoding="UTF-8"?>
<student xmlns="http://www.edureka.co/Student"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.edureka.co/Student studentRule.xsd"
>
<id>1234</id>
<name>Pradeep</name>
<language>Sanskrit</language>
<expertise>Beginner</expertise>
</student>
XML 파일의 유효성을 검사하는 자바 프로그램 : 루트 요소에 속성 elementFormDefault="qualified"
추가
import java.io.File;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class ValidatorDemo {
public static void main(String[] args) {
System.out.println("student.xml validates against studentRule.xsd? "+validateXMLSchema("studentRule.xsd", "student.xml"));
}
public static boolean validateXMLSchema(String xsdPath, String xmlPath){
try {
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File(xsdPath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (IOException | SAXException e) {
System.out.println("Exception: "+e.getMessage());
return false;
}
return true;
}
}
응답 해 주셔서 감사합니다. 'unqualified'를 사용하고 있다면 XML 문서는 어떻게 보이겠습니까? – zilcuanu
원본 문서가 "정규화 된"형식이고 응답의 문서가 "규정되지 않은"형식입니다 (전역 요소 "student"에 사용 된 접두어, 로컬 요소에 접두어가없는 것과 기본 네임 스페이스). 좀 더 자세한 설명으로 답변을 업데이트했습니다. – teppic