diff --git a/01_copy_all_hwp.py b/01_copy_all_hwp.py index 3b7d72b..2aaddba 100644 --- a/01_copy_all_hwp.py +++ b/01_copy_all_hwp.py @@ -40,8 +40,8 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t # 사용법 # exam_round = "2504_2" -exam_round = "2505" -source_directory = r"C:\Users\dra\project\data\제2505회 정기\답안파일" +exam_round = "2506_3" +source_directory = r"C:\Users\dra\project\data\제2506회 수시3(제주)\답안파일" target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로 target_directory_b = f".\\input\\{exam_round}\\B" # '2교시'의 타겟 경로 diff --git a/02_conversion_hwp_to_xml.py b/02_conversion_hwp_to_xml.py index 2acd659..9602580 100644 --- a/02_conversion_hwp_to_xml.py +++ b/02_conversion_hwp_to_xml.py @@ -134,7 +134,7 @@ def delete_gen_py(): if __name__ == "__main__": exam_rounds = [ - "2505", + "2506_3", # "2504_3" ] @@ -147,11 +147,11 @@ if __name__ == "__main__": # 배열 동시에 변환하면 에러발생 -> 하나씩 변환 -> time.sleep(0.5) 추가 for exam_round in exam_rounds: folders = [ - # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"), + (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"), # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\B\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\B\\DIW"), # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"), # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), - (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), + # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), ] # 변환 실행 diff --git a/250604_DIW_2505C_TEST.xlsx b/250604_DIW_2505C_TEST.xlsx deleted file mode 100644 index 3ab8645..0000000 Binary files a/250604_DIW_2505C_TEST.xlsx and /dev/null differ diff --git a/250605_DIW_2505B_TEST.xlsx b/250605_DIW_2505B_TEST.xlsx deleted file mode 100644 index 0ae92be..0000000 Binary files a/250605_DIW_2505B_TEST.xlsx and /dev/null differ diff --git a/250605_DIW_2505C_TEST.xlsx b/250605_DIW_2505C_TEST.xlsx deleted file mode 100644 index f11b1c2..0000000 Binary files a/250605_DIW_2505C_TEST.xlsx and /dev/null differ diff --git a/250610_DIW_2505A_TEST.xlsx b/250610_DIW_2505A_TEST.xlsx deleted file mode 100644 index 87264b0..0000000 Binary files a/250610_DIW_2505A_TEST.xlsx and /dev/null differ diff --git a/250611_DIW_2505A_TEST.xlsx b/250611_DIW_2505A_TEST.xlsx deleted file mode 100644 index 882be24..0000000 Binary files a/250611_DIW_2505A_TEST.xlsx and /dev/null differ diff --git a/250619_DIW_2506_3A_채점결과.xlsx b/250619_DIW_2506_3A_채점결과.xlsx new file mode 100644 index 0000000..85fad06 Binary files /dev/null and b/250619_DIW_2506_3A_채점결과.xlsx differ diff --git a/250624_DIW_2506_3A_TEST.xlsx b/250624_DIW_2506_3A_TEST.xlsx new file mode 100644 index 0000000..9ec61db Binary files /dev/null and b/250624_DIW_2506_3A_TEST.xlsx differ diff --git a/250624_DIW_2506_3A_채점결과.xlsx b/250624_DIW_2506_3A_채점결과.xlsx new file mode 100644 index 0000000..f37aaa9 Binary files /dev/null and b/250624_DIW_2506_3A_채점결과.xlsx differ diff --git a/250624_DIW_2506_3A_채점결과00.xlsx b/250624_DIW_2506_3A_채점결과00.xlsx new file mode 100644 index 0000000..22d1d8d Binary files /dev/null and b/250624_DIW_2506_3A_채점결과00.xlsx differ diff --git a/DIW_2505A.json b/DIW_2505A.json index b48cb0e..f17b345 100644 --- a/DIW_2505A.json +++ b/DIW_2505A.json @@ -87,7 +87,7 @@ "item": "문구 (천혜의비경철쭉)/⑤ 위치 (글자처럼 취급)" }, "6": { - "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "searchValue": "천혜의비경철쭉", "value": "Center", "points": 2, @@ -269,7 +269,7 @@ "points": 1, "category": "OneAnswer", "item": "문구 (DIAT)/② 크기 (9pt)" - }, + }, "27": { "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", "searchValue": "DIAT", @@ -285,16 +285,18 @@ "category": "PageNumber", "item": "① 쪽 번호 매기기 (A,B,C 순으로)", "desc1": { - "가,나,다":"HangulSyllable", - "1,2,3":"Digit", - "갑,을,병":"DecagonCircle", - "A,B,C":"LatinCapital", - "①,②,③":"CircledDigit", - "一,二,三":"Ideograph", - "㉠,㉡,㉢":"CircledHangulJamo", - "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", - "i,ii,iii":"RomanSmall", - "정답에 맞는 값 value에 입력":"" + "가,나,다": "HangulSyllable", + "1,2,3": "Digit", + "갑,을,병": "DecagonCircle", + "A,B,C": "LatinCapital", + "a,b,c": "LatinSmall", + "①,②,③": "CircledDigit", + "一,二,三": "Ideograph", + "㉠,㉡,㉢": "CircledHangulJamo", + "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", + "i,ii,iii": "RomanSmall", + "I,II,III": "RomanCapital", + "정답에 맞는 값 value에 입력": "" }, "desc2": "1, 2페이지 모두 정답이어야 점수 부여" }, @@ -366,7 +368,10 @@ "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", "searchValue": "철쭉과 진달래", - "value": [ "DoubleSlim", "283" ], + "value": [ + "DoubleSlim", + "283" + ], "points": 2, "category": "DoubleAnswer", "item": "문구 (철쭉과 진달래)/③ 테두리 : 이중 실선(1.00mm)", @@ -420,7 +425,7 @@ "points": 1, "category": "OneAnswer", "item": "문구 (철쭉과 진달래)/⑨ 글씨크기 (18 pt)", - "desc":"1pt당 100" + "desc": "1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", @@ -547,16 +552,18 @@ "category": "OneAnswer", "item": "문구 (거름)/④ 각주 번호모양", "desc": { - "가,나,다":"HangulSyllable", - "1,2,3":"Digit", - "갑,을,병":"DecagonCircle", - "A,B,C":"LatinCapital", - "①,②,③":"CircledDigit", - "一,二,三":"Ideograph", - "㉠,㉡,㉢":"CircledHangulJamo", - "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", - "i,ii,iii":"RomanSmall", - "정답에 맞는 값 value에 입력":"" + "가,나,다": "HangulSyllable", + "1,2,3": "Digit", + "갑,을,병": "DecagonCircle", + "A,B,C": "LatinCapital", + "a,b,c": "LatinSmall", + "①,②,③": "CircledDigit", + "一,二,三": "Ideograph", + "㉠,㉡,㉢": "CircledHangulJamo", + "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", + "i,ii,iii": "RomanSmall", + "I,II,III": "RomanCapital", + "정답에 맞는 값 value에 입력": "" } }, "29": { @@ -570,12 +577,27 @@ }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", - "word":[ - ["생육", "生育"], - ["유년", "幼年"], - ["허기", "虛飢"], - ["풍류", "風流"], - ["식물", "植物"] + "word": [ + [ + "생육", + "生育" + ], + [ + "유년", + "幼年" + ], + [ + "허기", + "虛飢" + ], + [ + "풍류", + "風流" + ], + [ + "식물", + "植物" + ] ], "value": 10, "points": 10, diff --git a/DIW_2506_3A.json b/DIW_2506_3A.json new file mode 100644 index 0000000..5feb599 --- /dev/null +++ b/DIW_2506_3A.json @@ -0,0 +1,854 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "1": { + "path": "//PAGEMARGIN", + "value": { + "Top": 20, + "Bottom": 20, + "Left": 20, + "Right": 20, + "Header": 10, + "Footer": 10, + "Gutter": 0 + }, + "tolerance": 1, + "points": 4, + "category": "PageSetting", + "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" + }, + "2": { + "path": "", + "value": { + "FontName": "바탕", + "FontSize": "1000", + "Alignment": "Justify", + "LineSpacing": "160" + }, + "points": 4, + "category": "BasicSetting", + "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" + }, + "3": { + "path": "", + "value": null, + "points": 40, + "category": "오타감점", + "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" + } + }, + "1": { + "1": { + "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", + "searchValue": "한국골프박람회", + "value": "돋움체", + "points": 1, + "category": "OneAnswer", + "item": "문구 (한국골프박람회)/① 글씨체 (돋움체)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "searchValue": "한국골프박람회", + "value": "49,95,151", + "points": 2, + "category": "Color", + "item": "문구 (한국골프박람회)/② 채우기 : 색상(RGB:49,95,151)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "한국골프박람회", + "value": "100", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (한국골프박람회)/③ 크기-너비 (110mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "searchValue": "한국골프박람회", + "value": "20", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (한국골프박람회)/④ 크기-높이 (20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "한국골프박람회", + "value": "true", + "points": 2, + "category": "OneAnswer", + "item": "문구 (한국골프박람회)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "한국골프박람회", + "value": "Center", + "points": 2, + "category": "OneAnswer", + "item": "문구 (한국골프박람회)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "//TEXTART[@Text='{searchValue}']", + "searchValue": "한국골프박람회", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (한국골프박람회)/⑦ 글맵시모양 (육안확인)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", + "searchValue": "지", + "value": { + "Height": 2800, + "Width": 2800 + }, + "tolerance": 200, + "points": 1, + "category": "TwoLineSize", + "item": "지/① 모양 (2줄)" + }, + "9": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "지", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "지/② 글씨체 (굴림체)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "지", + "value": "236,162,142", + "points": 2, + "category": "Color", + "item": "지/③ 면색 : 색상(RGB:236,162,142)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", + "searchValue": "지", + "value": "3.0", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "지/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온", + "value": "ITALIC", + "points": 2, + "category": "FontAttribute", + "item": "문구 (그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온)/① ITALIC" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온", + "value": "UNDERLINE", + "points": 2, + "category": "FontAttribute", + "item": "문구 (그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온)/② UNDERLINE" + }, + "14": { + "path": "//CHAR[contains(text(),'{char1}')]", + "path2": "//CHAR[contains(text(),'{char2}')]", + "path3": "//CHAR[contains(text(),'{char3}')]", + "char1": "●", + "char2": "●", + "char3": "※", + "value": 3, + "points": 3, + "category": "SpecialChar", + "item": "① ●, ② ●, ③ ※" + }, + "15": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "행사안내", + "value": "궁서", + "points": 1, + "category": "FontName", + "item": "문구 (● 행사안내 ●)/① 글씨체 (궁서)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "행사안내", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (● 행사안내 ●)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구 (스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨)/① BOLD" + }, + "18": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨", + "value": "UNDERLINE", + "points": 1, + "category": "FontAttribute", + "item": "문구 (스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨)/② UNDERLINE" + }, + "19": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", + "searchValue": "기타사항", + "value": { + "Left": 10, + "Indent": 12 + }, + "points": 2, + "category": "ParaShape", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "searchValue": "2025. 06. 18.", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 06. 18.)/① 크기 (14pt)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 06. 18.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 06. 18.)/② 정렬 (가운데 정렬)" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "한국골프연맹", + "value": "궁서체", + "points": 1, + "category": "FontName", + "item": "문구 (한국골프연맹)/① 글씨체 (궁서체)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "한국골프연맹", + "value": "2400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (한국골프연맹)/② 크기 (2400)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "searchValue": "한국골프연맹", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (한국골프연맹)/③ 정렬 (가운데 정렬)" + }, + "25": { + "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "DIAT", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구 (DIAT)/① 글꼴 (돋움)" + }, + "26": { + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "DIAT", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/② 크기 (9pt)" + }, + "27": { + "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", + "searchValue": "DIAT", + "value": "Right", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "value": "RomanCapital", + "points": 2, + "category": "PageNumber", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "desc1": { + "가,나,다": "HangulSyllable", + "1,2,3": "Digit", + "갑,을,병": "DecagonCircle", + "A,B,C": "LatinCapital", + "a,b,c": "LatinSmall", + "①,②,③": "CircledDigit", + "一,二,三": "Ideograph", + "㉠,㉡,㉢": "CircledHangulJamo", + "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", + "i,ii,iii": "RomanSmall", + "I,II,III": "RomanCapital", + "정답에 맞는 값 value에 입력": "" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomCenter", + "points": 2, + "category": "PageNumber", + "item": "오른쪽 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } + }, + "30": { + "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", + "value": "180", + "first_word": "지", + "points": 2, + "category": "LineSpacing", + "item": "문제 1 줄간격 180% 설정", + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." + } + }, + "2": { + "1": { + "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside", + "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]", + "value": { + "header_inside": true, + "all_double_slim": true + }, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "2": { + "path": "count(//SECTION)>1", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//COLDEF", + "value": "2", + "points": 3, + "category": "TwoColumn", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "골프", + "value": "50", + "points": 2, + "category": "mmSize", + "item": "문구 (골프)/① 크기-너비 (50 mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "골프", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (골프)/② 크기-높이 (12 mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "골프", + "value": [ + "DoubleSlim", + "283" + ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (골프)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt value값은 283pt로 입력" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "골프", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (골프)/④ 글상자 모서리 (둥근모양)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "골프", + "value": "147,194,80", + "points": 2, + "category": "Color", + "item": "문구 (골프)/⑤ 채우기 : 색상(RGB:147,194,80)" + }, + "9": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "골프", + "value": "true", + "points": 1, + "category": "OneAnswer", + "item": "문구 (골프)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "searchValue": "골프", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (골프)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "11": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "골프", + "value": "견고딕", + "points": 1, + "category": "FontName", + "item": "문구 (골프)/⑧ 글씨체 (견고딕)" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "골프", + "value": "2200", + "points": 1, + "category": "OneAnswer", + "item": "문구 (골프)/⑨ 글씨크기 (2200)", + "desc": "1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "골프", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (골프)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "85", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (85 mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "40", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (40 mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", + "value": "24", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)" + }, + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 골프란?", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "문구① (1. 골프란?)/① 글씨체 (굴림체)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 골프란?", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구① (1. 골프란?)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 골프란?", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 골프란?)/③ 진하게" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 한국의 골프 역사", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "문구② (2. 한국의 골프 역사)/① 글씨체 (굴림체)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 한국의 골프 역사", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구② (2. 한국의 골프 역사)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 한국의 골프 역사", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 한국의 골프 역사)/③ 진하게" + }, + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "option": "전당", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (전당)/① 각주 설정 및 문구 입력" + }, + "26": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "한 분야에서 뛰어난 활약을 보인 사람들을 기념하기 위해 설립된 박물관, 단체, 모임을 말한다.", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구 (전당)/② 글씨체 (돋움체)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", + "searchValue": "한 분야에서 뛰어난 활약을 보인 사람들을 기념하기 위해 설립된 박물관, 단체, 모임을 말한다.", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (전당)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "searchValue": "한 분야에서 뛰어난 활약을 보인 사람들을 기념하기 위해 설립된 박물관, 단체, 모임을 말한다.", + "value": "LatinSmall", + "points": 2, + "category": "OneAnswer", + "item": "문구 (전당)/④ 각주 번호모양", + "desc": { + "가,나,다": "HangulSyllable", + "1,2,3": "Digit", + "갑,을,병": "DecagonCircle", + "A,B,C": "LatinCapital", + "a,b,c": "LatinSmall", + "①,②,③": "CircledDigit", + "一,二,三": "Ideograph", + "㉠,㉡,㉢": "CircledHangulJamo", + "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", + "i,ii,iii": "RomanSmall", + "I,II,III": "RomanCapital", + "정답에 맞는 값 value에 입력": "" + } + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Fairway')])", + "ignoreWord": "Fairway", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Fairway/영단어 미입력, 대소문자/오타 시 전체 감점", + "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" + }, + "30": { + "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", + "word": [ + [ + "승부", + "勝負" + ], + [ + "초목", + "草木" + ], + [ + "설치", + "設置" + ], + [ + "인정", + "認定" + ], + [ + "유학", + "留學" + ] + ], + "value": 10, + "points": 10, + "category": "Hanja", + "item": "① 승부(勝負), ② 초목(草木), ③ 설치(設置), ④ 인정(認定), ⑤ 유학(留學)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이있는')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…초목(草木)은 있는…) / 은 → 이 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'초의프로')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…프로 골프 최초의 선수…)/프로 골프 / 최초의 순서바꿈" + }, + "33": { + "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", + "searchValue": "골프 관련 체육시설업 현황", + "value": "중고딕", + "points": 1, + "category": "FontName", + "item": "제목 문구 (골프 관련 체육시설업 현황)/① 글씨체 (중고딕)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "골프 관련 체육시설업 현황", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (골프 관련 체육시설업 현황)/② 크기 (12pt)" + }, + "35": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "골프 관련 체육시설업 현황", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "제목 문구 (골프 관련 체육시설업 현황)/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "골프 관련 체육시설업 현황", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (골프 관련 체육시설업 현황)/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "value": "233,174,61", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:233,174,61)" + }, + "38": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "위쪽 제목 셀/② 진하게", + "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음" + }, + "39": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type", + "value": "DoubleSlim", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/① 이중실선" + }, + "40": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width", + "value": "0.5mm", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/② 0.5mm" + }, + "41": { + "path": "//TABLE//TEXT/@CharShape", + "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", + "value": "굴림", + "points": 1, + "category": "TableFontName", + "category_tmp": "FontName", + "item": "글자모양/① 글씨체 (굴림)", + "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", + "value": "1000", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "SUM", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "chart_xpath": "", + "chart_type": "묶은가로막대형", + "value": true, + "points": 2, + "category": "ChartType", + "item": "① 종류 (묶은가로막대형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" + }, + "46": { + "chart_xpath": "//c:valAx/c:majorTickMark/@val", + "value": "out", + "points": 2, + "category": "OneAnswer", + "item": "② 값 축 주 눈금선", + "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "③ 크기-너비 (80 mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", + "value": "90", + "points": 2, + "category": "mmSize", + "item": "④ 크기-높이 (90 mm)" + }, + "49": { + "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", + "value": true, + "points": 2, + "category": "Boolean", + "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)", + "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리" + }, + "50": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "searchValue": "골프 관련 체육시설업 현황", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (골프 관련 체육시설업 현황)/① 글씨체 (궁서체)" + }, + "51": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "searchValue": "골프 관련 체육시설업 현황", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (골프 관련 체육시설업 현황)/② 크기 (1200)" + }, + "52": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", + "searchValue": "골프 관련 체육시설업 현황", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (골프 관련 체육시설업 현황)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "53": { + "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", + "value": "돋움", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/① 글꼴 (돋움)" + }, + "54": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "56": { + "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", + "value": "돋움", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/① 글꼴 (돋움)" + }, + "57": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "59": { + "chart_xpath": "//c:legend//a:ea/@typeface", + "value": "돋움", + "points": 1, + "category": "OneAnswer", + "item": "범례/① 글꼴 (돋움)" + }, + "60": { + "chart_xpath": "//c:legend//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "chart_xpath": "//c:legend//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "범례/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + } + } +} \ No newline at end of file diff --git a/diwScoring2.py b/diwScoring2.py index 0101841..1fd8f21 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -354,7 +354,7 @@ class XMLScorer: if "가로" in chart_type: if "catAx" in chart_xpath: chart_xpath = chart_xpath.replace("catAx", "valAx") - if "valAx" in chart_xpath: + elif "valAx" in chart_xpath: chart_xpath = chart_xpath.replace("valAx", "catAx") chart_items = chart_tree.xpath(chart_xpath, namespaces=namespaces) if chart_xpath else [] @@ -371,7 +371,7 @@ class XMLScorer: # 정답이 두개인 경우 elif (category or "") == "DoubleAnswer": items1 = root.xpath(xpath) if xpath else [] - items2 = root.xpath(xpath2) if xpath else [] + items2 = root.xpath(xpath2) if xpath2 else [] user_answer = [] for item1, item2 in zip(items1, items2): @@ -687,6 +687,17 @@ class XMLScorer: linespacing_match = False break + # 문단 첫 글자 크기에 따라 채점 기준 추가 (050624) + # 1. 기본 줄간격 160% 일 때 26pt + # 2. 해당 문제의 정답 줄간격 (180% = 28pt / 200% = 30pt ) + # 두 경우의 글자 크기가 아니라면 오답처리 + firstword = criterion.get('first_word', None) + result = root.xpath(f"//CHARSHAPE[@Id=//TEXT[CHAR[text()='{firstword}']]/@CharShape]/@Height") + firstword_size = result[0] if result else None + + if (right_answer == '180' and firstword_size not in ['2600', '2800', None]) or (right_answer == '200' and firstword_size not in ['2600', '3000', None]): + linespacing_match = False + if linespacing_match is True: self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") else: @@ -1253,7 +1264,8 @@ class XMLScorer: def main(): # 시험회차 및 유형 - exam_round = '2505' + # exam_round = '2505' + exam_round = '2506_3' # 채점하고자 하는 유형은 주석 해제 exam_types = [ @@ -1287,11 +1299,14 @@ def main(): # 폴더 내 모든 xml 파일 채점 results = scorer.score_directory(xml_directory, correct_answer_file) - + if not results: + print(f"❌ 채점 결과가 없습니다. {xml_directory} 폴더에 답안파일이 존재하는지 확인하세요.") + continue # 채점 결과 엑셀로 저장 output_excel_paths.append(scorer.export_to_excel(results, output_path)) - print(f"채점 결과 엑셀 파일: {output_excel_paths}") + if output_excel_paths: + print(f"채점 결과 엑셀 파일: {output_excel_paths}") if __name__ == '__main__': main() diff --git a/hwp_conversion.log b/hwp_conversion.log index f041226..ba58d95 100644 --- a/hwp_conversion.log +++ b/hwp_conversion.log @@ -15621,3 +15621,87 @@ 2025-06-05 17:53:13,413 - INFO - 변환 성공: 워드(한글)_002391_김지우.hwpx -> 워드(한글)_002391_김지우.hml 2025-06-05 17:53:14,078 - INFO - 변환 성공: 워드(한글)_00349_이재용.hwpx -> 워드(한글)_00349_이재용.hml 2025-06-05 17:53:14,474 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\E\DIW +2025-06-19 15:51:25,386 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2506_3\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2506_3\A\DIW +2025-06-19 15:51:28,925 - INFO - 변환 성공: DIW2506_3A.hwpx -> DIW2506_3A.hml +2025-06-19 15:51:29,432 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2506_3\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2506_3\A\DIW +2025-06-24 14:28:51,330 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2506_3\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2506_3\A\DIW +2025-06-24 14:28:58,775 - INFO - 변환 성공: 워드(한글)-005947-문우진.hwp -> 워드(한글)-005947-문우진.hml +2025-06-24 14:28:59,175 - INFO - 변환 성공: 워드(한글)-005948-김현경.hwp -> 워드(한글)-005948-김현경.hml +2025-06-24 14:28:59,689 - INFO - 변환 성공: 워드(한글)-005949-김민아.hwp -> 워드(한글)-005949-김민아.hml +2025-06-24 14:29:00,116 - INFO - 변환 성공: DIW_2506_3A.hwpx -> DIW_2506_3A.hml +2025-06-24 14:29:00,752 - INFO - 변환 성공: 워드(한글)-005920-고준서.hwpx -> 워드(한글)-005920-고준서.hml +2025-06-24 14:29:01,338 - INFO - 변환 성공: 워드(한글)-005921-복재인.hwpx -> 워드(한글)-005921-복재인.hml +2025-06-24 14:29:01,882 - INFO - 변환 성공: 워드(한글)-005922-이다은.hwpx -> 워드(한글)-005922-이다은.hml +2025-06-24 14:29:02,424 - INFO - 변환 성공: 워드(한글)-005940-정재인.hwpx -> 워드(한글)-005940-정재인.hml +2025-06-24 14:29:02,936 - INFO - 변환 성공: 워드(한글)-005950-김소민.hwpx -> 워드(한글)-005950-김소민.hml +2025-06-24 14:29:03,453 - INFO - 변환 성공: 워드(한글)-005951-김예인.hwpx -> 워드(한글)-005951-김예인.hml +2025-06-24 14:29:03,961 - INFO - 변환 성공: 워드(한글)-005961-서해원.hwpx -> 워드(한글)-005961-서해원.hml +2025-06-24 14:29:04,496 - INFO - 변환 성공: 워드(한글)-005966-고지애.hwpx -> 워드(한글)-005966-고지애.hml +2025-06-24 14:29:05,019 - INFO - 변환 성공: 워드(한글)-005967-이은상.hwpx -> 워드(한글)-005967-이은상.hml +2025-06-24 14:29:05,528 - INFO - 변환 성공: 워드(한글)-006015-이재인.hwpx -> 워드(한글)-006015-이재인.hml +2025-06-24 14:29:06,043 - INFO - 변환 성공: 워드(한글)-006017-김한율.hwpx -> 워드(한글)-006017-김한율.hml +2025-06-24 14:29:06,582 - INFO - 변환 성공: 워드(한글)-006045-진로은.hwpx -> 워드(한글)-006045-진로은.hml +2025-06-24 14:29:07,065 - INFO - 변환 성공: 워드(한글)-006046-김은성.hwpx -> 워드(한글)-006046-김은성.hml +2025-06-24 14:29:07,608 - INFO - 변환 성공: 워드(한글)-006047-박하람.hwpx -> 워드(한글)-006047-박하람.hml +2025-06-24 14:29:08,125 - INFO - 변환 성공: 워드(한글)-006048-고희나.hwpx -> 워드(한글)-006048-고희나.hml +2025-06-24 14:29:08,638 - INFO - 변환 성공: 워드(한글)-006049-라희원.hwpx -> 워드(한글)-006049-라희원.hml +2025-06-24 14:29:09,134 - INFO - 변환 성공: 워드(한글)-006050-이지효.hwpx -> 워드(한글)-006050-이지효.hml +2025-06-24 14:29:09,707 - INFO - 변환 성공: 워드(한글)-006051-권은혜.hwpx -> 워드(한글)-006051-권은혜.hml +2025-06-24 14:29:10,212 - INFO - 변환 성공: 워드(한글)-006052-천서연.hwpx -> 워드(한글)-006052-천서연.hml +2025-06-24 14:29:10,770 - INFO - 변환 성공: 워드(한글)-006053-고우빈.hwpx -> 워드(한글)-006053-고우빈.hml +2025-06-24 14:29:11,353 - INFO - 변환 성공: 워드(한글)-006078-이지환.hwpx -> 워드(한글)-006078-이지환.hml +2025-06-24 14:29:11,962 - INFO - 변환 성공: 워드(한글)-006079-김채린.hwpx -> 워드(한글)-006079-김채린.hml +2025-06-24 14:29:12,522 - INFO - 변환 성공: 워드(한글)-006080-정재연.hwpx -> 워드(한글)-006080-정재연.hml +2025-06-24 14:29:13,134 - INFO - 변환 성공: 워드(한글)-006081-황효빈.hwpx -> 워드(한글)-006081-황효빈.hml +2025-06-24 14:29:13,711 - INFO - 변환 성공: 워드(한글)-006082-김노을.hwpx -> 워드(한글)-006082-김노을.hml +2025-06-24 14:29:14,283 - INFO - 변환 성공: 워드(한글)-006083-김도훈.hwpx -> 워드(한글)-006083-김도훈.hml +2025-06-24 14:29:14,837 - INFO - 변환 성공: 워드(한글)-006084-임유하.hwpx -> 워드(한글)-006084-임유하.hml +2025-06-24 14:29:15,576 - INFO - 변환 성공: 워드(한글)-006085-양현석.hwpx -> 워드(한글)-006085-양현석.hml +2025-06-24 14:29:16,129 - INFO - 변환 성공: 워드(한글)-006086-김태이.hwpx -> 워드(한글)-006086-김태이.hml +2025-06-24 14:29:16,668 - INFO - 변환 성공: 워드(한글)-006087-김건희.hwpx -> 워드(한글)-006087-김건희.hml +2025-06-24 14:29:17,317 - INFO - 변환 성공: 워드(한글)-006088- 오한솔.hwpx -> 워드(한글)-006088- 오한솔.hml +2025-06-24 14:29:17,917 - INFO - 변환 성공: 워드(한글)-006092-김주한.hwpx -> 워드(한글)-006092-김주한.hml +2025-06-24 14:29:18,465 - INFO - 변환 성공: 워드(한글)-006093-이호.hwpx -> 워드(한글)-006093-이호.hml +2025-06-24 14:29:19,114 - INFO - 변환 성공: 워드(한글)-006094-부혜민.hwpx -> 워드(한글)-006094-부혜민.hml +2025-06-24 14:29:19,702 - INFO - 변환 성공: 워드(한글)-006095-김서아.hwpx -> 워드(한글)-006095-김서아.hml +2025-06-24 14:29:20,136 - INFO - 변환 성공: 워드(한글)-006103-김승현.hwpx -> 워드(한글)-006103-김승현.hml +2025-06-24 14:29:20,562 - INFO - 변환 성공: 워드(한글)-006128-강혜민.hwpx -> 워드(한글)-006128-강혜민.hml +2025-06-24 14:29:21,093 - INFO - 변환 성공: 워드(한글)-006129-김하준.hwpx -> 워드(한글)-006129-김하준.hml +2025-06-24 14:29:21,691 - INFO - 변환 성공: 워드(한글)-006130-부준서.hwpx -> 워드(한글)-006130-부준서.hml +2025-06-24 14:29:22,218 - INFO - 변환 성공: 워드(한글)-006131-손하은.hwpx -> 워드(한글)-006131-손하은.hml +2025-06-24 14:29:22,759 - INFO - 변환 성공: 워드(한글)-006132-양서은.hwpx -> 워드(한글)-006132-양서은.hml +2025-06-24 14:29:23,323 - INFO - 변환 성공: 워드(한글)-006133-현도윤.hwpx -> 워드(한글)-006133-현도윤.hml +2025-06-24 14:29:23,869 - INFO - 변환 성공: 워드(한글)-006134-홍민욱.hwpx -> 워드(한글)-006134-홍민욱.hml +2025-06-24 14:29:24,406 - INFO - 변환 성공: 워드(한글)-006135-홍서주.hwpx -> 워드(한글)-006135-홍서주.hml +2025-06-24 14:29:24,977 - INFO - 변환 성공: 워드(한글)-006142-함유준.hwpx -> 워드(한글)-006142-함유준.hml +2025-06-24 14:29:25,564 - INFO - 변환 성공: 워드(한글)-006143 고혁준.hwpx -> 워드(한글)-006143 고혁준.hml +2025-06-24 14:29:26,096 - INFO - 변환 성공: 워드(한글)-006144-김호영.hwpx -> 워드(한글)-006144-김호영.hml +2025-06-24 14:29:26,683 - INFO - 변환 성공: 워드(한글)-006145-김효은.hwpx -> 워드(한글)-006145-김효은.hml +2025-06-24 14:29:27,212 - INFO - 변환 성공: 워드(한글)-006146-오지성.hwpx -> 워드(한글)-006146-오지성.hml +2025-06-24 14:29:27,730 - INFO - 변환 성공: 워드(한글)-006147-이은솔.hwpx -> 워드(한글)-006147-이은솔.hml +2025-06-24 14:29:28,284 - INFO - 변환 성공: 워드(한글)-006148-고수환.hwpx -> 워드(한글)-006148-고수환.hml +2025-06-24 14:29:28,936 - INFO - 변환 성공: 워드(한글)-006149-오채연.hwpx -> 워드(한글)-006149-오채연.hml +2025-06-24 14:29:29,468 - INFO - 변환 성공: 워드(한글)-006162-김우빈.hwpx -> 워드(한글)-006162-김우빈.hml +2025-06-24 14:29:30,036 - INFO - 변환 성공: 워드(한글)-006163-양다혜.hwpx -> 워드(한글)-006163-양다혜.hml +2025-06-24 14:29:30,461 - INFO - 변환 성공: 워드(한글)-006164-문서율.hwpx -> 워드(한글)-006164-문서율.hml +2025-06-24 14:29:30,886 - INFO - 변환 성공: 워드(한글)-006165-이서빈.hwpx -> 워드(한글)-006165-이서빈.hml +2025-06-24 14:29:31,414 - INFO - 변환 성공: 워드(한글)-006170-허우빈.hwpx -> 워드(한글)-006170-허우빈.hml +2025-06-24 14:29:31,962 - INFO - 변환 성공: 워드(한글)-006188-윤시류.hwpx -> 워드(한글)-006188-윤시류.hml +2025-06-24 14:29:32,426 - INFO - 변환 성공: 워드(한글)-006189-강건우.hwpx -> 워드(한글)-006189-강건우.hml +2025-06-24 14:29:32,843 - INFO - 변환 성공: 워드(한글)-006191-진서현.hwpx -> 워드(한글)-006191-진서현.hml +2025-06-24 14:29:33,267 - INFO - 변환 성공: 워드(한글)-006192-김소연.hwpx -> 워드(한글)-006192-김소연.hml +2025-06-24 14:29:33,639 - INFO - 변환 성공: 워드(한글)-006193-문다윤.hwpx -> 워드(한글)-006193-문다윤.hml +2025-06-24 14:29:34,051 - INFO - 변환 성공: 워드(한글)-006199-정다민.hwpx -> 워드(한글)-006199-정다민.hml +2025-06-24 14:29:34,671 - INFO - 변환 성공: 워드(한글)-006214-이호준.hwpx -> 워드(한글)-006214-이호준.hml +2025-06-24 14:29:35,244 - INFO - 변환 성공: 워드(한글)-006215-윤지성.hwpx -> 워드(한글)-006215-윤지성.hml +2025-06-24 14:29:35,823 - INFO - 변환 성공: 워드(한글)-006216-장주원.hwpx -> 워드(한글)-006216-장주원.hml +2025-06-24 14:29:36,395 - INFO - 변환 성공: 워드(한글)-006217-강승민.hwpx -> 워드(한글)-006217-강승민.hml +2025-06-24 14:29:37,016 - INFO - 변환 성공: 워드(한글)-006218-송지후.hwpx -> 워드(한글)-006218-송지후.hml +2025-06-24 14:29:37,424 - INFO - 변환 성공: 워드(한글)-006219-김진우.hwpx -> 워드(한글)-006219-김진우.hml +2025-06-24 14:29:37,850 - INFO - 변환 성공: 워드(한글)-006220-전하윤.hwpx -> 워드(한글)-006220-전하윤.hml +2025-06-24 14:29:38,400 - INFO - 변환 성공: 워드(한글)-006221-홍주연.hwpx -> 워드(한글)-006221-홍주연.hml +2025-06-24 14:29:38,951 - INFO - 변환 성공: 워드(한글)-006222-신수호.hwpx -> 워드(한글)-006222-신수호.hml +2025-06-24 14:29:39,539 - INFO - 변환 성공: 워드(한글)-006223-김하람.hwpx -> 워드(한글)-006223-김하람.hml +2025-06-24 14:29:40,021 - INFO - 변환 성공: 워드(한글)-006237-양겸.hwpx -> 워드(한글)-006237-양겸.hml +2025-06-24 14:29:40,552 - INFO - 변환 성공: 위드(한글)-006190-변아영.hwpx -> 위드(한글)-006190-변아영.hml +2025-06-24 14:29:40,909 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2506_3\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2506_3\A\DIW diff --git a/zzz.xbook b/zzz.xbook index 10aa848..50a44cc 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"/HWPML/BODY/SECTION/P[19]"},{"kind":2,"language":"xpath","value":"//SECTION"},{"kind":2,"language":"xpath","value":"//P"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"/HWPML/BODY/SECTION/P[19]"},{"kind":2,"language":"xpath","value":"//SECTION"},{"kind":2,"language":"xpath","value":"//P"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='지']]/@CharShape"}] \ No newline at end of file diff --git a/회차별채점자료/2505/2505확인필요.xlsx b/회차별채점자료/2505/2505확인필요.xlsx index 37c18ee..f786852 100644 Binary files a/회차별채점자료/2505/2505확인필요.xlsx and b/회차별채점자료/2505/2505확인필요.xlsx differ diff --git a/250529_DIW_2505B_채점결과.xlsx b/회차별채점자료/2505/excel_채점결과/250529_DIW_2505B_채점결과.xlsx similarity index 100% rename from 250529_DIW_2505B_채점결과.xlsx rename to 회차별채점자료/2505/excel_채점결과/250529_DIW_2505B_채점결과.xlsx diff --git a/250529_DIW_2505C_채점결과.xlsx b/회차별채점자료/2505/excel_채점결과/250529_DIW_2505C_채점결과.xlsx similarity index 100% rename from 250529_DIW_2505C_채점결과.xlsx rename to 회차별채점자료/2505/excel_채점결과/250529_DIW_2505C_채점결과.xlsx diff --git a/250529_DIW_2505회_A형_채점결과.xlsx b/회차별채점자료/2505/excel_채점결과/250529_DIW_2505회_A형_채점결과.xlsx similarity index 100% rename from 250529_DIW_2505회_A형_채점결과.xlsx rename to 회차별채점자료/2505/excel_채점결과/250529_DIW_2505회_A형_채점결과.xlsx diff --git a/250604_DIW_2505C_채점결과.xlsx b/회차별채점자료/2505/excel_채점결과/250604_DIW_2505C_채점결과.xlsx similarity index 100% rename from 250604_DIW_2505C_채점결과.xlsx rename to 회차별채점자료/2505/excel_채점결과/250604_DIW_2505C_채점결과.xlsx diff --git a/250610_DIW_2505A_채점결과.xlsx b/회차별채점자료/2505/excel_채점결과/250610_DIW_2505A_채점결과.xlsx similarity index 100% rename from 250610_DIW_2505A_채점결과.xlsx rename to 회차별채점자료/2505/excel_채점결과/250610_DIW_2505A_채점결과.xlsx diff --git a/250611_DIW_2505A_채점결과.xlsx b/회차별채점자료/2505/excel_채점결과/250611_DIW_2505A_채점결과.xlsx similarity index 100% rename from 250611_DIW_2505A_채점결과.xlsx rename to 회차별채점자료/2505/excel_채점결과/250611_DIW_2505A_채점결과.xlsx diff --git a/회차별채점자료/2505/json_채점기준표/0611/DIW_2505A.json b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505A.json new file mode 100644 index 0000000..b48cb0e --- /dev/null +++ b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505A.json @@ -0,0 +1,831 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "1": { + "path": "//PAGEMARGIN", + "value": { + "Top": 20, + "Bottom": 20, + "Left": 20, + "Right": 20, + "Header": 10, + "Footer": 10, + "Gutter": 0 + }, + "tolerance": 1, + "points": 4, + "category": "PageSetting", + "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" + }, + "2": { + "path": "", + "value": { + "FontName": "바탕", + "FontSize": "1000", + "Alignment": "Justify", + "LineSpacing": "160" + }, + "points": 4, + "category": "BasicSetting", + "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" + }, + "3": { + "path": "", + "value": null, + "points": 40, + "category": "오타감점", + "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" + } + }, + "1": { + "1": { + "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", + "searchValue": "천혜의비경철쭉", + "value": "맑은 고딕", + "points": 1, + "category": "OneAnswer", + "item": "문구 (천혜의비경철쭉)/① 글씨체 (맑은 고딕)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "searchValue": "천혜의비경철쭉", + "value": "28,61,98", + "points": 2, + "category": "Color", + "item": "문구 (천혜의비경철쭉)/② 채우기 : 색상(RGB:28,61,98)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "천혜의비경철쭉", + "value": "110", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (천혜의비경철쭉)/③ 크기-너비 (110mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "searchValue": "천혜의비경철쭉", + "value": "20", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (천혜의비경철쭉)/④ 크기-높이 (20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "천혜의비경철쭉", + "value": "true", + "points": 2, + "category": "OneAnswer", + "item": "문구 (천혜의비경철쭉)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "천혜의비경철쭉", + "value": "Center", + "points": 2, + "category": "OneAnswer", + "item": "문구 (천혜의비경철쭉)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "//TEXTART[@Text='{searchValue}']", + "searchValue": "천혜의비경철쭉", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (천혜의비경철쭉)/⑦ 글맵시모양 (육안확인)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", + "searchValue": "전", + "value": { + "Height": 2800, + "Width": 2800 + }, + "tolerance": 200, + "points": 1, + "category": "TwoLineSize", + "item": "전/① 모양 (2줄)" + }, + "9": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "전", + "value": "궁서체", + "points": 1, + "category": "FontName", + "item": "전/② 글씨체 (궁서체)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "전", + "value": "255,132,58", + "points": 2, + "category": "Color", + "item": "전/③ 면색 : 색상(RGB:255,132,58)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", + "searchValue": "전", + "value": "3.0", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "전/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "바래봉 해발 약 500m에서 시작해 점점 정상으로", + "value": "BOLD", + "points": 2, + "category": "FontAttribute", + "item": "문구 (바래봉 해발 약 500m에서 시작해 점점 정상으로)/① 진하게" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "바래봉 해발 약 500m에서 시작해 점점 정상으로", + "value": "ITALIC", + "points": 2, + "category": "FontAttribute", + "item": "문구 (바래봉 해발 약 500m에서 시작해 점점 정상으로)/② 기울임" + }, + "14": { + "path": "//CHAR[contains(text(),'{char1}')]", + "path2": "//CHAR[contains(text(),'{char2}')]", + "path3": "//CHAR[contains(text(),'{char3}')]", + "char1": "●", + "char2": "●", + "char3": "※", + "value": 3, + "points": 3, + "category": "SpecialChar", + "item": "① ●, ② ●, ③ ※" + }, + "15": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "참여안내", + "value": "궁서", + "points": 1, + "category": "FontName", + "item": "문구 (● 참여안내 ●)/① 글씨체 (궁서)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "참여안내", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (● 참여안내 ●)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr) 참조", + "value": "ITALIC", + "points": 1, + "category": "FontAttribute", + "item": "문구 (홈페이지(http://www.ihd.or.kr) 참조)/① 기울임" + }, + "18": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr) 참조", + "value": "UNDERLINE", + "points": 1, + "category": "FontAttribute", + "item": "문구 (홈페이지(http://www.ihd.or.kr) 참조)/② 밑줄" + }, + "19": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", + "searchValue": "기타사항", + "value": { + "Left": 15, + "Indent": 12 + }, + "points": 2, + "category": "ParaShape", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)", + "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "searchValue": "2025. 05. 24.", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 05. 24.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "운봉바래봉철쭉제", + "value": "궁서체", + "points": 1, + "category": "FontName", + "item": "문구 (운봉바래봉철쭉제)/① 글씨체 (궁서체)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "운봉바래봉철쭉제", + "value": "2600", + "points": 1, + "category": "OneAnswer", + "item": "문구 (운봉바래봉철쭉제)/② 크기 (26pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "searchValue": "운봉바래봉철쭉제", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (운봉바래봉철쭉제)/③ 정렬 (가운데 정렬)" + }, + "25": { + "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "DIAT", + "value": "궁서", + "points": 1, + "category": "FontName", + "item": "문구 (DIAT)/① 글꼴 (궁서)" + }, + "26": { + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "DIAT", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/② 크기 (9pt)" + }, + "27": { + "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", + "searchValue": "DIAT", + "value": "Right", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "value": "LatinCapital", + "points": 2, + "category": "PageNumber", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "desc1": { + "가,나,다":"HangulSyllable", + "1,2,3":"Digit", + "갑,을,병":"DecagonCircle", + "A,B,C":"LatinCapital", + "①,②,③":"CircledDigit", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomRight", + "points": 2, + "category": "PageNumber", + "item": "오른쪽 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } + }, + "30": { + "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", + "value": "200", + "points": 2, + "category": "LineSpacing", + "item": "문제 1 줄간격 200% 설정", + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)" + } + }, + "2": { + "1": { + "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside", + "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]", + "value": { + "header_inside": true, + "all_double_slim": true + }, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "2": { + "path": "count(//SECTION)>1", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//COLDEF", + "value": "2", + "points": 3, + "category": "TwoColumn", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "철쭉과 진달래", + "value": "50", + "points": 2, + "category": "mmSize", + "item": "문구 (철쭉과 진달래)/① 크기-너비 (50 mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "철쭉과 진달래", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (철쭉과 진달래)/② 크기-높이 (12 mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "철쭉과 진달래", + "value": [ "DoubleSlim", "283" ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (철쭉과 진달래)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "철쭉과 진달래", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (철쭉과 진달래)/④ 글상자 모서리 (둥근모양)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "철쭉과 진달래", + "value": "225,15,161", + "points": 2, + "category": "Color", + "item": "문구 (철쭉과 진달래)/⑤ 채우기 : 색상(RGB:225,15,161)" + }, + "9": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "철쭉과 진달래", + "value": "true", + "points": 1, + "category": "OneAnswer", + "item": "문구 (철쭉과 진달래)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "searchValue": "철쭉과 진달래", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (철쭉과 진달래)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "11": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "철쭉과 진달래", + "value": "맑은고딕", + "points": 1, + "category": "FontName", + "item": "문구 (철쭉과 진달래)/⑧ 글씨체 (맑은고딕)" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "철쭉과 진달래", + "value": "1800", + "points": 1, + "category": "OneAnswer", + "item": "문구 (철쭉과 진달래)/⑨ 글씨크기 (18 pt)", + "desc":"1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "철쭉과 진달래", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (철쭉과 진달래)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "85", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (85 mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "40", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (40 mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", + "value": "23", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)" + }, + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 철쭉의 특징", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구① (1. 철쭉의 특징)/① 글씨체 (굴림)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 철쭉의 특징", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구① (1. 철쭉의 특징)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 철쭉의 특징", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 철쭉의 특징)/③ 진하게" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 봄의 전령 진달래", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구② (2. 봄의 전령 진달래)/① 글씨체 (굴림)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 봄의 전령 진달래", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구② (2. 봄의 전령 진달래)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 봄의 전령 진달래", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 봄의 전령 진달래)/③ 진하게" + }, + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "option": "거름", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (거름)/① 각주 설정 및 문구 입력" + }, + "26": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "땅을 기름지게 하는데 사용되는 유기물질", + "value": "궁서", + "points": 1, + "category": "FontName", + "item": "문구 (거름)/② 글씨체 (궁서)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", + "searchValue": "땅을 기름지게 하는데 사용되는 유기물질", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (거름)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "searchValue": "땅을 기름지게 하는데 사용되는 유기물질", + "value": "Ideograph", + "points": 2, + "category": "OneAnswer", + "item": "문구 (거름)/④ 각주 번호모양", + "desc": { + "가,나,다":"HangulSyllable", + "1,2,3":"Digit", + "갑,을,병":"DecagonCircle", + "A,B,C":"LatinCapital", + "①,②,③":"CircledDigit", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + } + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Breeding')])", + "ignoreWord": "Breeding", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Breeding/영단어 미입력, 대소문자/오타 시 전체 감점", + "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" + }, + "30": { + "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", + "word":[ + ["생육", "生育"], + ["유년", "幼年"], + ["허기", "虛飢"], + ["풍류", "風流"], + ["식물", "植物"] + ], + "value": 10, + "points": 10, + "category": "Hanja", + "item": "① 생육(生育), ② 유년(幼年), ③ 허기(虛飢), ④ 풍류(風流), ⑤ 식물(植物)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'지를잘라')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…새로 나온 가지가 잘라…) 가 → 를 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'보다참꽃')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…참꽃나무란 진달래보다 이름에 더…) 참꽃나무란 / 진달래보다 순서바꿈" + }, + "33": { + "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/① 글씨체 (돋움)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/② 크기 (12pt)" + }, + "35": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "value": "140,249,62", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:140,249,62)" + }, + "38": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "위쪽 제목 셀/② 진하게", + "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음" + }, + "39": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type", + "value": "DoubleSlim", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/① 이중실선" + }, + "40": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width", + "value": "0.5mm", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/② 0.5mm" + }, + "41": { + "path": "//TABLE//TEXT/@CharShape", + "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", + "value": "중고딕", + "points": 1, + "category": "TableFontName", + "category_tmp": "FontName", + "item": "글자모양/① 글씨체 (중고딕)", + "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", + "value": "1000", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "AVG", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "chart_xpath": "", + "chart_type": "누적세로막대형", + "value": true, + "points": 2, + "category": "ChartType", + "item": "① 종류 (누적세로막대형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" + }, + "46": { + "chart_xpath": "//c:valAx/c:majorTickMark/@val", + "value": "out", + "points": 2, + "category": "OneAnswer", + "item": "② 값 축 주 눈금선", + "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "③ 크기-너비 (80 mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", + "value": "90", + "points": 2, + "category": "mmSize", + "item": "④ 크기-높이 (90 mm)" + }, + "49": { + "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", + "value": true, + "points": 2, + "category": "Boolean", + "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)", + "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리" + }, + "50": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "searchValue": "철쭉 관광객 현황", + "value": "굴림", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (철쭉 관광객 현황)/① 글씨체 (굴림)" + }, + "51": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "searchValue": "철쭉 관광객 현황", + "value": "1300", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (철쭉 관광객 현황)/② 크기 (13pt)" + }, + "52": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", + "searchValue": "철쭉 관광객 현황", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (철쭉 관광객 현황)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "53": { + "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", + "value": "돋움", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/① 글꼴 (돋움)" + }, + "54": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "56": { + "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", + "value": "돋움", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/① 글꼴 (돋움)" + }, + "57": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "59": { + "chart_xpath": "//c:legend//a:ea/@typeface", + "value": "돋움", + "points": 1, + "category": "OneAnswer", + "item": "범례/① 글꼴 (돋움)" + }, + "60": { + "chart_xpath": "//c:legend//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "chart_xpath": "//c:legend//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "범례/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + } + } +} \ No newline at end of file diff --git a/회차별채점자료/2505/json_채점기준표/0611/DIW_2505B.json b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505B.json new file mode 100644 index 0000000..c268f46 --- /dev/null +++ b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505B.json @@ -0,0 +1,840 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "1": { + "path": "//PAGEMARGIN", + "value": { + "Top": 20, + "Bottom": 20, + "Left": 20, + "Right": 20, + "Header": 10, + "Footer": 10, + "Gutter": 0 + }, + "tolerance": 1, + "points": 4, + "category": "PageSetting", + "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" + }, + "2": { + "path": "", + "value": { + "FontName": "바탕", + "FontSize": "1000", + "Alignment": "Justify", + "LineSpacing": "160" + }, + "points": 4, + "category": "BasicSetting", + "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" + }, + "3": { + "path": "", + "value": null, + "points": 40, + "category": "오타감점", + "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" + } + }, + "1": { + "1": { + "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", + "searchValue": "광양매실축제안내", + "value": "맑은 고딕", + "points": 1, + "category": "OneAnswer", + "item": "문구 (광양매실축제안내)/① 글씨체 (맑은 고딕)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "searchValue": "광양매실축제안내", + "value": "199,80,124", + "points": 2, + "category": "Color", + "item": "문구 (광양매실축제안내)/② 채우기 : 색상(RGB:199,82,82)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "광양매실축제안내", + "value": "100", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (광양매실축제안내)/③ 크기-너비 (100mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "searchValue": "광양매실축제안내", + "value": "20", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (광양매실축제안내)/④ 크기-높이 (20 mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "광양매실축제안내", + "value": "true", + "points": 2, + "category": "OneAnswer", + "item": "문구 (광양매실축제안내)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "광양매실축제안내", + "value": "Center", + "points": 2, + "category": "OneAnswer", + "item": "문구 (광양매실축제안내)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "//TEXTART[@Text='{searchValue}']", + "searchValue": "광양매실축제안내", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (광양매실축제안내)/⑦ 글맵시모양 (육안확인)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", + "searchValue": "올", + "value": { + "Height": 2800, + "Width": 2800 + }, + "tolerance": 200, + "points": 1, + "category": "TwoLineSize", + "item": "올/① 모양 (2줄)" + }, + "9": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "올", + "value": "궁서체", + "points": 1, + "category": "FontName", + "item": "올/② 글씨체 (궁서체)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "올", + "value": "186,255,26", + "points": 2, + "category": "Color", + "item": "올/③ 면색 : 색상(RGB:186,255,26)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", + "searchValue": "올", + "value": "3.0", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "올/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "봄 매화, 여름 매실로 우리 함께 힐링합시다!", + "value": "ITALIC", + "points": 2, + "category": "FontAttribute", + "item": "문구 (봄 매화, 여름 매실로 우리 함께 힐링합시다!)/① 기울임" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "봄 매화, 여름 매실로 우리 함께 힐링합시다!", + "value": "ITALIC", + "points": 2, + "category": "FontAttribute", + "item": "문구 (봄 매화, 여름 매실로 우리 함께 힐링합시다!)/② 기울임" + }, + "14": { + "path": "//CHAR[contains(text(),'{char1}')]", + "path2": "//CHAR[contains(text(),'{char2}')]", + "path3": "//CHAR[contains(text(),'{char3}')]", + "char1": "→", + "char2": "←", + "char3": "※", + "value": 3, + "points": 3, + "category": "SpecialChar", + "item": "① → , ② ← , ③ ※" + }, + "15": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "축제안내", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "문구 (→ 축제안내 ←)/① 글씨체 (굴림체)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "축제안내", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (→ 축제안내 ←)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "광양매실축제 홈페이지(http://www.ihd.or.kr)", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구 (광양매실축제 홈페이지(http://www.ihd.or.kr))/① 진하게" + }, + "18": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "광양매실축제 홈페이지(http://www.ihd.or.kr)", + "value": "ITALIC", + "points": 1, + "category": "FontAttribute", + "item": "문구 (광양매실축제 홈페이지(http://www.ihd.or.kr))/② 기울임" + }, + "19": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", + "searchValue": "기타사항", + "value": { + "Left": 15, + "Indent": 12 + }, + "points": 2, + "category": "ParaShape", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)", + "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "searchValue": "2025. 05. 24.", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 05. 24.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "광양매실축제위원회", + "value": "견고딕", + "points": 1, + "category": "FontName", + "item": "문구 (광양매실축제위원회)/① 글씨체 (견고딕)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "광양매실축제위원회", + "value": "2600", + "points": 1, + "category": "OneAnswer", + "item": "문구 (광양매실축제위원회)/② 크기 (26pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "searchValue": "광양매실축제위원회", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (광양매실축제위원회)/③ 정렬 (가운데 정렬)" + }, + "25": { + "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "DIAT", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구 (DIAT)/① 글꼴 (굴림)" + }, + "26": { + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "DIAT", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/② 크기 (9pt)" + }, + "27": { + "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", + "searchValue": "DIAT", + "value": "Right", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "value": "CircledDigit", + "points": 2, + "category": "PageNumber", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "desc1": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomCenter", + "points": 2, + "category": "PageNumber", + "item": "가운데 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } + }, + "30": { + "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", + "value": "180", + "points": 2, + "category": "LineSpacing", + "item": "문제 1 줄간격 180% 설정", + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)" + } + }, + "2": { + "1": { + "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside", + "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]", + "value": { + "header_inside": true, + "all_double_slim": true + }, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "2": { + "path": "count(//SECTION)>1", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//COLDEF", + "value": "2", + "points": 3, + "category": "TwoColumn", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "매화와 매실", + "value": "55", + "points": 2, + "category": "mmSize", + "item": "문구 (매화와 매실)/① 크기-너비 (55 mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "매화와 매실", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (매화와 매실)/② 크기-높이 (12 mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "매화와 매실", + "value": [ "DoubleSlim", "283" ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (매화와 매실)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "매화와 매실", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (매화와 매실)/④ 글상자 모서리 (둥근모양)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "매화와 매실", + "value": "122,179,64", + "points": 2, + "category": "Color", + "item": "문구 (매화와 매실)/⑤ 채우기 : 색상(RGB:122,179,64)" + }, + "9": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "매화와 매실", + "value": "true", + "points": 1, + "category": "OneAnswer", + "item": "문구 (매화와 매실)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "searchValue": "매화와 매실", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (매화와 매실)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "11": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "매화와 매실", + "value": "중고딕", + "points": 1, + "category": "FontName", + "item": "문구 (매화와 매실)/⑧ 글씨체 (중고딕)" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "매화와 매실", + "value": "2000", + "points": 1, + "category": "OneAnswer", + "item": "문구 (매화와 매실)/⑨ 글씨크기 (20 pt)", + "desc":"1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "매화와 매실", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (매화와 매실)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림B.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "85", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (85 mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "40", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (40 mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", + "value": "24", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 매화의 특징", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구① (1. 매화의 특징)/① 글씨체 (돋움)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 매화의 특징", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구① (1. 매화의 특징)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 매화의 특징", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 매화의 특징)/③ 진하게" + }, + + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 매실의 효능", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구② (2. 매실의 효능)/① 글씨체 (돋움)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 매실의 효능", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구② (2. 매실의 효능)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 매실의 효능", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 매실의 효능)/③ 진하게" + }, + + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "option": "문인화", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (문인화)/① 각주 설정 및 문구 입력" + }, + "26": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구 (문인화)/② 글씨체 (돋움체)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", + "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (문인화)/③ 크기 (9pt)" + }, + + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림", + "value": "CircledHangulSyllable", + "points": 2, + "category": "OneAnswer", + "item": "문구 (문인화)/④ 각주 번호모양", + "desc": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + } + }, + + "29": { + "path": "boolean(//CHAR[contains(text(),'Vitamin')])", + "ignoreWord": "Vitamin", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Vitamin/영단어 미입력, 대소문자/오타 시 전체 감점", + "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" + }, + "30": { + "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", + "word":[ + ["매향", "梅香"], + ["불의", "不義"], + ["국화", "菊花"], + ["매실", "梅實"], + ["해독", "解讀"] + ], + "value": 10, + "points": 10, + "category": "Hanja", + "item": "① 매향(梅香), ② 불의(不義), ③ 국화(菊花), ④ 매실(梅實), ⑤ 해독(解讀)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'흰색,분홍')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (청색, 분홍색, 붉은색 등 다양한 색을…)/청 → 흰 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'킨과폴리')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (항산화 성분인 폴리페놀은 카테킨과 해독(解讀)과…)/ 폴리페놀은 / 카테킨과 순서바꿈" + }, + "33": { + "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", + "searchValue": "광양매실축제 만족도(단위 : %)", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/① 글씨체 (굴림체)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "광양매실축제 만족도(단위 : %)", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/② 크기 (12pt)" + }, + "35": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "광양매실축제 만족도(단위 : %)", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "광양매실축제 만족도(단위 : %)", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "value": "233,174,43", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" + }, + "38": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "위쪽 제목 셀/② 진하게", + "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음" + }, + "39": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type", + "value": "DoubleSlim", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/① 이중실선" + }, + "40": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width", + "value": "0.5mm", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/② 0.5mm" + }, + "41": { + "path": "//TABLE//TEXT/@CharShape", + "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", + "value": "돋움", + "points": 1, + "category": "TableFontName", + "category_tmp": "FontName", + "item": "글자모양/① 글씨체 (돋움)", + "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", + "value": "1000", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "AVG", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "chart_xpath": "", + "chart_type": "묶은세로막대형", + "value": true, + "points": 2, + "category": "ChartType", + "item": "① 종류 (묶은세로막대형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" + }, + "46": { + "chart_xpath": "//c:valAx/c:majorTickMark/@val", + "value": "out", + "points": 2, + "category": "OneAnswer", + "item": "② 값 축 주 눈금선", + "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "③ 크기-너비 (80 mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", + "value": "90", + "points": 2, + "category": "mmSize", + "item": "④ 크기-높이 (90 mm)" + }, + "49": { + "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", + "value": true, + "points": 2, + "category": "Boolean", + "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)", + "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리" + }, + "50": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "searchValue": "광양매실축제 만족도", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (광양매실축제 만족도)/① 글씨체 (궁서체)" + }, + "51": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "searchValue": "광양매실축제 만족도", + "value": "1300", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (광양매실축제 만족도)/② 크기 (13pt)" + }, + "52": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", + "searchValue": "광양매실축제 만족도", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (광양매실축제 만족도)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "53": { + "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/① 글꼴 (바탕)" + }, + "54": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "ChartOneAnswer", + "item": "X축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "56": { + "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/① 글꼴 (바탕)" + }, + "57": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "ChartOneAnswer", + "item": "Y축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "59": { + "chart_xpath": "//c:legend//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "OneAnswer", + "item": "범례/① 글꼴 (바탕)" + }, + "60": { + "chart_xpath": "//c:legend//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "chart_xpath": "//c:legend//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "범례/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + } + } +} \ No newline at end of file diff --git a/회차별채점자료/2505/json_채점기준표/0611/DIW_2505C.json b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505C.json new file mode 100644 index 0000000..634fe12 --- /dev/null +++ b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505C.json @@ -0,0 +1,840 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "1": { + "path": "//PAGEMARGIN", + "value": { + "Top": 20, + "Bottom": 20, + "Left": 20, + "Right": 20, + "Header": 10, + "Footer": 10, + "Gutter": 0 + }, + "tolerance": 1, + "points": 4, + "category": "PageSetting", + "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" + }, + "2": { + "path": "", + "value": { + "FontName": "바탕", + "FontSize": "1000", + "Alignment": "Justify", + "LineSpacing": "160" + }, + "points": 4, + "category": "BasicSetting", + "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" + }, + "3": { + "path": "", + "value": null, + "points": 40, + "category": "오타감점", + "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" + } + }, + "1": { + "1": { + "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", + "searchValue": "별사랑천문대캠프안내", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "문구 (별사랑천문대캠프안내)/① 글씨체 (궁서체)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "searchValue": "별사랑천문대캠프안내", + "value": "53,164,78", + "points": 2, + "category": "Color", + "item": "문구 (별사랑천문대캠프안내)/② 채우기 : 색상(RGB:53,164,78)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "별사랑천문대캠프안내", + "value": "120", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (별사랑천문대캠프안내)/③ 크기-너비 (120 mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "searchValue": "별사랑천문대캠프안내", + "value": "20", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (별사랑천문대캠프안내)/④ 크기-높이 (20 mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "별사랑천문대캠프안내", + "value": "true", + "points": 2, + "category": "OneAnswer", + "item": "문구 (별사랑천문대캠프안내)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "별사랑천문대캠프안내", + "value": "Center", + "points": 2, + "category": "OneAnswer", + "item": "문구 (별사랑천문대캠프안내)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "//TEXTART[@Text='{searchValue}']", + "searchValue": "별사랑천문대캠프안내", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (별사랑천문대캠프안내)/⑦ 글맵시모양 (육안확인)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", + "searchValue": "별", + "value": { + "Height": 2800, + "Width": 2800 + }, + "tolerance": 200, + "points": 1, + "category": "TwoLineSize", + "item": "별/① 모양 (2줄)" + }, + "9": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "별", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "별/② 글씨체 (굴림체)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "별", + "value": "211,202,24", + "points": 2, + "category": "Color", + "item": "별/③ 면색 : 색상(RGB:211,202,24)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", + "searchValue": "별", + "value": "3.0", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "별/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "천문우주과학 체험학습", + "value": "BOLD", + "points": 2, + "category": "FontAttribute", + "item": "문구 (천문우주과학 체험학습)/① 진하게" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "천문우주과학 체험학습", + "value": "UNDERLINE", + "points": 2, + "category": "FontAttribute", + "item": "문구 (천문우주과학 체험학습)/② 밑줄" + }, + "14": { + "path": "//CHAR[contains(text(),'{char1}')]", + "path2": "//CHAR[contains(text(),'{char2}')]", + "path3": "//CHAR[contains(text(),'{char3}')]", + "char1": "●", + "char2": "●", + "char3": "※", + "value": 3, + "points": 3, + "category": "SpecialChar", + "item": "① ● , ② ● , ③ ※" + }, + "15": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "참가안내", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구 (● 참가안내 ●)/① 글씨체 (굴림)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "참가안내", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (● 참가안내 ●)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "그룹별 20명(선착순 마감)", + "value": "ITALIC", + "points": 1, + "category": "FontAttribute", + "item": "문구 (그룹별 20명(선착순 마감))/① 기울임" + }, + "18": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "그룹별 20명(선착순 마감)", + "value": "UNDERLINE", + "points": 1, + "category": "FontAttribute", + "item": "문구 (그룹별 20명(선착순 마감))/② 밑줄" + }, + "19": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", + "searchValue": "기타사항", + "value": { + "Left": 15, + "Indent": 14 + }, + "points": 2, + "category": "ParaShape", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (14pt)", + "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "searchValue": "2025. 05. 24.", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 05. 24.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "별사랑천문대", + "value": "견고딕", + "points": 1, + "category": "FontName", + "item": "문구 (별사랑천문대)/① 글씨체 (견고딕)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "별사랑천문대", + "value": "2600", + "points": 1, + "category": "OneAnswer", + "item": "문구 (별사랑천문대)/② 크기 (26pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "searchValue": "별사랑천문대", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (별사랑천문대)/③ 정렬 (가운데 정렬)" + }, + "25": { + "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "DIAT", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구 (DIAT)/① 글꼴 (돋움)" + }, + "26": { + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "DIAT", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/② 크기 (9pt)" + }, + "27": { + "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", + "searchValue": "DIAT", + "value": "Right", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "value": "LatinCapital", + "points": 2, + "category": "PageNumber", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "desc1": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomCenter", + "points": 2, + "category": "PageNumber", + "item": "가운데 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } + }, + "30": { + "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", + "value": "180", + "points": 2, + "category": "LineSpacing", + "item": "문제 1 줄간격 180% 설정", + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)" + } + }, + "2": { + "1": { + "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside", + "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]", + "value": { + "header_inside": true, + "all_double_slim": true + }, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "2": { + "path": "count(//SECTION)>1", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//COLDEF", + "value": "2", + "points": 3, + "category": "TwoColumn", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "별자리", + "value": "60", + "points": 2, + "category": "mmSize", + "item": "문구 (별자리)/① 크기-너비 (60 mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "별자리", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (별자리)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "별자리", + "value": [ "DoubleSlim", "283" ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (별자리)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "별자리", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (별자리)/④ 글상자 모서리 (반원)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "별자리", + "value": "191,179,233", + "points": 2, + "category": "Color", + "item": "문구 (별자리)/⑤ 채우기 : 색상(RGB:191,179,233)" + }, + "9": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "별자리", + "value": "true", + "points": 1, + "category": "OneAnswer", + "item": "문구 (별자리)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "searchValue": "별자리", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (별자리)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "11": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "별자리", + "value": "중고딕", + "points": 1, + "category": "FontName", + "item": "문구 (별자리)/⑧ 글씨체 (중고딕)" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "별자리", + "value": "1600", + "points": 1, + "category": "OneAnswer", + "item": "문구 (별자리)/⑨ 글씨크기 (16pt)", + "desc":"1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "별자리", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (별자리)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림C.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (80 mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "40", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (40 mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", + "value": "24", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 별자리란", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구① (1. 별자리란)/① 글씨체 (돋움체)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 별자리란", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구① (1. 별자리란)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 별자리란", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 별자리란)/③ 진하게" + }, + + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 우리나라 계절별 별자리", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구② (2. 우리나라 계절별 별자리)/① 글씨체 (돋움체)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 우리나라 계절별 별자리", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구② (2. 우리나라 계절별 별자리)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 우리나라 계절별 별자리", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 우리나라 계절별 별자리)/③ 진하게" + }, + + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "option": "북두칠성", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (북두칠성)/① 각주 설정 및 문구 입력" + }, + "26": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구 (북두칠성)/② 글씨체 (굴림)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", + "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (북두칠성)/③ 크기 (9pt)" + }, + + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별", + "value": "CircledLatinCapital", + "points": 2, + "category": "OneAnswer", + "item": "문구 (북두칠성)/④ 각주 번호모양", + "desc": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + } + }, + + "29": { + "path": "boolean(//CHAR[contains(text(),'Babylonia')])", + "ignoreWord": "Babylonia", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Babylonia/영단어 미입력, 대소문자/오타 시 전체 감점", + "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" + }, + "30": { + "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", + "word":[ + ["성좌", "星座"], + ["유래", "由來"], + ["표석", "標石"], + ["천구", "天球"], + ["계절", "季節"] + ], + "value": 10, + "points": 10, + "category": "Hanja", + "item": "① 성좌(星座), ② 유래(由來), ③ 표석(標石), ④ 천구(天球), ⑤ 계절(季節)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'역에해당')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…지역이 해당하는 티그리스강과…)/이 → 에 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'나는반드')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…둘 중 반드시 하나는…)/반드시 / 하나는 순서바꿈" + }, + "33": { + "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", + "searchValue": "지역별 천문대 수", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "제목 문구 (지역별 천문대 수)/① 글씨체 (돋움체)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "지역별 천문대 수", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (지역별 천문대 수)/② 크기 (12pt)" + }, + "35": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "지역별 천문대 수", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "제목 문구 (지역별 천문대 수)/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "지역별 천문대 수", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (지역별 천문대 수)/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "value": "255,164,95", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:255,164,95)" + }, + "38": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "위쪽 제목 셀/② 진하게", + "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음" + }, + "39": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type", + "value": "DoubleSlim", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/① 이중실선" + }, + "40": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width", + "value": "0.5mm", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/② 0.5mm" + }, + "41": { + "path": "//TABLE//TEXT/@CharShape", + "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", + "value": "궁서", + "points": 1, + "category": "TableFontName", + "category_tmp": "FontName", + "item": "글자모양/① 글씨체 (궁서)", + "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", + "value": "1000", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "SUM", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "chart_xpath": "", + "chart_type": "묶은가로막대형", + "value": true, + "points": 2, + "category": "ChartType", + "item": "① 종류 (묶은가로막대형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" + }, + "46": { + "chart_xpath": "//c:valAx/c:majorTickMark/@val", + "value": "out", + "points": 2, + "category": "OneAnswer", + "item": "② 값 축 주 눈금선", + "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "③ 크기-너비 (80 mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", + "value": "90", + "points": 2, + "category": "mmSize", + "item": "④ 크기-높이 (90 mm)" + }, + "49": { + "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", + "value": true, + "points": 2, + "category": "Boolean", + "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)", + "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리" + }, + "50": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "searchValue": "지역별 천문대 수", + "value": "맑은 고딕", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (지역별 천문대 수)/① 글씨체 (맑은 고딕)" + }, + "51": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "searchValue": "지역별 천문대 수", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (지역별 천문대 수)/② 크기 (14pt)" + }, + "52": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", + "searchValue": "지역별 천문대 수", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (지역별 천문대 수)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "53": { + "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "OneAnswer", + "item": "X축/① 글꼴 (바탕)" + }, + "54": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "X축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "56": { + "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "OneAnswer", + "item": "Y축/① 글꼴 (바탕)" + }, + "57": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "Y축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "59": { + "chart_xpath": "//c:legend//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "OneAnswer", + "item": "범례/① 글꼴 (바탕)" + }, + "60": { + "chart_xpath": "//c:legend//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "chart_xpath": "//c:legend//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "범례/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + } + } +} \ No newline at end of file diff --git a/회차별채점자료/2505/json_채점기준표/0611/DIW_2505D.json b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505D.json new file mode 100644 index 0000000..d8d8f7e --- /dev/null +++ b/회차별채점자료/2505/json_채점기준표/0611/DIW_2505D.json @@ -0,0 +1,841 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "1": { + "path": "//PAGEMARGIN", + "value": { + "Top": 20, + "Bottom": 20, + "Left": 20, + "Right": 20, + "Header": 10, + "Footer": 10, + "Gutter": 0 + }, + "tolerance": 1, + "points": 4, + "category": "PageSetting", + "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" + }, + "2": { + "path": "", + "value": { + "FontName": "바탕", + "FontSize": "1000", + "Alignment": "Justify", + "LineSpacing": "160" + }, + "points": 4, + "category": "BasicSetting", + "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" + }, + "3": { + "path": "", + "value": null, + "points": 40, + "category": "오타감점", + "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" + } + }, + "1": { + "1": { + "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "문구 (여름방학특집해양스포츠체험교실)/① 글씨체 (궁서체)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "49,95,151", + "points": 2, + "category": "Color", + "item": "문구 (여름방학특집해양스포츠체험교실)/② 채우기 : 색상(RGB:49,95,151)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "120", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (여름방학특집해양스포츠체험교실)/③ 크기-너비 (120 mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "20", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (여름방학특집해양스포츠체험교실)/④ 크기-높이 (20 mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "true", + "points": 2, + "category": "OneAnswer", + "item": "문구 (여름방학특집해양스포츠체험교실)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "Center", + "points": 2, + "category": "OneAnswer", + "item": "문구 (여름방학특집해양스포츠체험교실)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "//TEXTART[@Text='{searchValue}']", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (여름방학특집해양스포츠체험교실)/⑦ 글맵시모양 (육안확인)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", + "searchValue": "여", + "value": { + "Height": 2800, + "Width": 2800 + }, + "tolerance": 200, + "points": 1, + "category": "TwoLineSize", + "item": "여/① 모양 (2줄)" + }, + "9": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "여", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "여/② 글씨체 (굴림체)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "여", + "value": "144,231,51", + "points": 2, + "category": "Color", + "item": "여/③ 면색 : 색상(RGB:144,231,51)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", + "searchValue": "여", + "value": "3.0", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "여/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "시원한 바다와 함께하는 해양 스포츠 체험 교실", + "value": "BOLD", + "points": 2, + "category": "FontAttribute", + "item": "문구 (시원한 바다와 함께하는 해양 스포츠 체험 교실)/① 진하게" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "시원한 바다와 함께하는 해양 스포츠 체험 교실", + "value": "UNDERLINE", + "points": 2, + "category": "FontAttribute", + "item": "문구 (시원한 바다와 함께하는 해양 스포츠 체험 교실)/② 밑줄" + }, + "14": { + "path": "//CHAR[contains(text(),'{char1}')]", + "path2": "//CHAR[contains(text(),'{char2}')]", + "path3": "//CHAR[contains(text(),'{char3}')]", + "char1": "◐", + "char2": "◑", + "char3": "※", + "value": 3, + "points": 3, + "category": "SpecialChar", + "item": "① ◐ , ② ◑ , ③ ※" + }, + "15": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "참가안내", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구 (◐ 참가안내 ◑)/① 글씨체 (돋움)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "참가안내", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (◐ 참가안내 ◑)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "해양소년단 연맹 홈페이지(http://www.ihd.or.kr)", + "value": "ITALIC", + "points": 1, + "category": "FontAttribute", + "item": "문구 (해양소년단 연맹 홈페이지(http://www.ihd.or.kr))/① 기울임" + }, + "18": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "해양소년단 연맹 홈페이지(http://www.ihd.or.kr)", + "value": "UNDERLINE", + "points": 1, + "category": "FontAttribute", + "item": "문구 (해양소년단 연맹 홈페이지(http://www.ihd.or.kr))/② 밑줄" + }, + "19": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", + "searchValue": "기타사항", + "value": { + "Left": 10, + "Indent": 12 + }, + "points": 2, + "category": "ParaShape", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "searchValue": "2025. 05. 24.", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 05. 24.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "해양스포츠홍보위원회", + "value": "견고딕", + "points": 1, + "category": "FontName", + "item": "문구 (해양스포츠홍보위원회)/① 글씨체 (견고딕)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "해양스포츠홍보위원회", + "value": "2600", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양스포츠홍보위원회)/② 크기 (26pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "searchValue": "해양스포츠홍보위원회", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양스포츠홍보위원회)/③ 정렬 (가운데 정렬)" + }, + "25": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "DIAT", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구 (DIAT)/① 글꼴 (굴림)" + }, + "26": { + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "DIAT", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/② 크기 (9pt)" + }, + "27": { + "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", + "searchValue": "DIAT", + "value": "Right", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "value": "CircledDigit", + "points": 2, + "category": "PageNumber", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "desc1": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomRight", + "points": 2, + "category": "PageNumber", + "item": "가운데 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } + }, + "30": { + "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='{option}'])", + "option": "180", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문제 1 줄간격 180% 설정", + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)" + } + }, + "2": { + "1": { + "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside", + "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]", + "value": { + "header_inside": true, + "all_double_slim": true + }, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "2": { + "path": "count(//SECTION)>1", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//COLDEF/@Count", + "value": "2", + "points": 3, + "category": "OneAnswer", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "해양 스포츠의 세계", + "value": "60", + "points": 2, + "category": "mmSize", + "item": "문구 (해양 스포츠의 세계)/① 크기-너비 (60 mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "해양 스포츠의 세계", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (해양 스포츠의 세계)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "해양 스포츠의 세계", + "value": [ "DoubleSlim", "283" ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (해양 스포츠의 세계)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "해양 스포츠의 세계", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/④ 글상자 모서리 (반원)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "해양 스포츠의 세계", + "value": "248,231,130", + "points": 2, + "category": "Color", + "item": "문구 (해양 스포츠의 세계)/⑤ 채우기 : 색상(RGB:248,231,130)" + }, + "9": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "해양 스포츠의 세계", + "value": "true", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "searchValue": "해양 스포츠의 세계", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "11": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "해양 스포츠의 세계", + "value": "궁서", + "points": 1, + "category": "FontName", + "item": "문구 (해양 스포츠의 세계)/⑧ 글씨체 (궁서)" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "해양 스포츠의 세계", + "value": "1800", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑨ 글씨크기 (18pt)", + "desc":"1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "해양 스포츠의 세계", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림D.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (80 mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "40", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (40 mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@VertOffset", + "value": "24", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 국립해양박물관", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구① (1. 국립해양박물관)/① 글씨체 (돋움체)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 국립해양박물관", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구① (1. 국립해양박물관)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 국립해양박물관", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 국립해양박물관)/③ 진하게" + }, + + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 윈드 서핑", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구② (2. 윈드 서핑)/① 글씨체 (돋움체)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 윈드 서핑", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구② (2. 윈드 서핑)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 윈드 서핑", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 윈드 서핑)/③ 진하게" + }, + + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "option": "마스트", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (마스트)/① 각주 설정 및 문구 입력" + }, + "26": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "선체의 갑판 위에 세워진 기둥", + "value": "바탕체", + "points": 1, + "category": "FontName", + "item": "문구 (마스트)/② 글씨체 (바탕체)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", + "searchValue": "선체의 갑판 위에 세워진 기둥", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (마스트)/③ 크기 (9pt)" + }, + + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "searchValue": "선체의 갑판 위에 세워진 기둥", + "value": "CircledDigit", + "points": 2, + "category": "OneAnswer", + "item": "문구 (마스트)/④ 각주 번호모양", + "desc": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + } + }, + + "29": { + "path": "boolean(//CHAR[contains(text(),'Display')])", + "ignoreWord": "Display", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Display/영단어 미입력, 대소문자/오타 시 전체 감점", + "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" + }, + "30": { + "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", + "word":[ + ["유물", "遺物"], + ["상설", "常設"], + ["체험", "體驗"], + ["해양", "海洋"], + ["기교", "技巧"] + ], + "value": 10, + "points": 10, + "category": "Hanja", + "item": "① 유물(遺物), ② 상설(常設), ③ 체험(體驗), ④ 해양(海洋), ⑤ 기교(技巧)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'을헤치는')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…물살을 헤치은…)/ 은 → 는 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'연의바람')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…바람을 자연의 이용하여…)/바람을 / 자연의 순서바꿈" + }, + "33": { + "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "중고딕", + "points": 1, + "category": "FontName", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/① 글씨체 (중고딕)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/② 크기 (12pt)" + }, + "35": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "value": "233,162,149", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:233,162,149)" + }, + "38": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "위쪽 제목 셀/② 진하게", + "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음" + }, + "39": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type", + "value": "DoubleSlim", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/① 이중실선" + }, + "40": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width", + "value": "0.5mm", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/② 0.5mm" + }, + "41": { + "path": "//TABLE//TEXT/@CharShape", + "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", + "value": "굴림체", + "points": 1, + "category": "TableFontName", + "category_tmp": "FontName", + "item": "글자모양/① 글씨체 (굴림체)", + "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", + "value": "1000", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "SUM", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "chart_xpath": "", + "chart_type": "묶은세로막대형", + "value": true, + "points": 2, + "category": "ChartType", + "item": "① 종류 (묶은세로막대형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" + }, + "46": { + "chart_xpath": "//c:valAx/c:majorTickMark/@val", + "value": "out", + "points": 2, + "category": "OneAnswer", + "item": "② 값 축 주 눈금선", + "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "③ 크기-너비 (80 mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", + "value": "90", + "points": 2, + "category": "mmSize", + "item": "④ 크기-높이 (90 mm)" + }, + "49": { + "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", + "value": true, + "points": 2, + "category": "Boolean", + "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)", + "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리" + }, + "50": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/① 글씨체 (궁서체)" + }, + "51": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "1300", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/② 크기 (13pt)" + }, + "52": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "53": { + "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", + "value": "맑은 고딕", + "points": 1, + "category": "OneAnswer", + "item": "X축/① 글꼴 (맑은 고딕)" + }, + "54": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "X축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "56": { + "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", + "value": "맑은 고딕", + "points": 1, + "category": "OneAnswer", + "item": "Y축/① 글꼴 (맑은 고딕)" + }, + "57": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "Y축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "59": { + "chart_xpath": "//c:legend//a:ea/@typeface", + "value": "맑은고딕", + "points": 1, + "category": "OneAnswer", + "item": "범례/① 글꼴 (맑은고딕)" + }, + "60": { + "chart_xpath": "//c:legend//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "chart_xpath": "//c:legend//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "범례/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + } + } +} \ No newline at end of file diff --git a/회차별채점자료/2506_3/excel_채점기준표/DIW2506_3.xlsx b/회차별채점자료/2506_3/excel_채점기준표/DIW2506_3.xlsx new file mode 100644 index 0000000..2a3fe5b Binary files /dev/null and b/회차별채점자료/2506_3/excel_채점기준표/DIW2506_3.xlsx differ diff --git a/회차별채점자료/2506_3/hml_변환/DIW2506_3A.hml b/회차별채점자료/2506_3/hml_변환/DIW2506_3A.hml new file mode 100644 index 0000000..f15086c --- /dev/null +++ b/회차별채점자료/2506_3/hml_변환/DIW2506_3A.hml @@ -0,0 +1,4969 @@ +user2025년 5월 15일 목요일 오전 10:46:18^1.^2.^3)^4)(^5)(^6)^7^8^1.^2.^3)^4)(^5)(^6)^7^8