diff --git a/Foundation/org.egovframe.rte.fdl.xml/src/main/java/org/egovframe/rte/fdl/xml/EgovDOMValidatorService.java b/Foundation/org.egovframe.rte.fdl.xml/src/main/java/org/egovframe/rte/fdl/xml/EgovDOMValidatorService.java index a1d9dced..80007d1c 100755 --- a/Foundation/org.egovframe.rte.fdl.xml/src/main/java/org/egovframe/rte/fdl/xml/EgovDOMValidatorService.java +++ b/Foundation/org.egovframe.rte.fdl.xml/src/main/java/org/egovframe/rte/fdl/xml/EgovDOMValidatorService.java @@ -85,7 +85,7 @@ public boolean parse(boolean isValid) throws IOException, SAXException, Validato factory.setNamespaceAware(true); factory.setValidating(isValid); - if (!ObjectUtils.isEmpty(getXMLFile())) { + if (!ObjectUtils.isEmpty(getSCHEMAFile())) { factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema"); factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", getSCHEMAFile()); } diff --git a/Foundation/org.egovframe.rte.fdl.xml/src/test/java/org/egovframe/rte/fdl/xml/EgovDOMValidatorSchemaSourceTest.java b/Foundation/org.egovframe.rte.fdl.xml/src/test/java/org/egovframe/rte/fdl/xml/EgovDOMValidatorSchemaSourceTest.java new file mode 100644 index 00000000..459266d5 --- /dev/null +++ b/Foundation/org.egovframe.rte.fdl.xml/src/test/java/org/egovframe/rte/fdl/xml/EgovDOMValidatorSchemaSourceTest.java @@ -0,0 +1,86 @@ +package org.egovframe.rte.fdl.xml; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +/** + * {@link EgovDOMValidatorService}가 스키마 등록 여부를 스키마 파일로 판단하는지 검증한다. + * + *
형제인 {@link EgovSAXValidatorService}는 {@code getSCHEMAFile()}이 있을 때만 스키마 검증을 + * 켠다. DOM 쪽은 같은 자리에서 {@code getXMLFile()}을 보므로, XML을 파일로 주면 스키마가 없어도 + * 스키마 모드가 켜지고 문자열로 주면 스키마를 줘도 등록되지 않는다. XML을 어떤 형태로 주는지는 + * 검증 방식을 바꾸는 조건이 아니므로, 두 입력 형태의 결과가 같은지로 확인한다.
+ */ +class EgovDOMValidatorSchemaSourceTest { + + private static final String XML = "