diff --git a/.bashrc.local b/.bashrc.local new file mode 100644 index 0000000..910d1bf --- /dev/null +++ b/.bashrc.local @@ -0,0 +1,4 @@ +# 프로젝트 루트 폴더/.bashrc.local +if [ -f .venv/Scripts/activate ]; then + source .venv/Scripts/activate +fi \ No newline at end of file diff --git a/.gitignore b/.gitignore index 800b1ff..7d21f4b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ output/ input/ ~$*.xlsx + +.venv/ \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 8322d04..2c66c00 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,8 @@ "type": "debugpy", "request": "launch", "program": "${file}", - "console": "integratedTerminal" + "console": "integratedTerminal", + "cwd": "${fileDirname}" } ] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b698158..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "cSpell.words": [ - "BINITEM", - "charshape", - "chartxml", - "currect", - "FIELDBEGIN", - "FIELDEND", - "targ", - "TEXTART" - ] -} \ No newline at end of file diff --git a/00_dividepage.py b/00_dividepage.py index 8b05fd8..a801ee0 100644 --- a/00_dividepage.py +++ b/00_dividepage.py @@ -1,6 +1,5 @@ import win32com.client as win32 import os -import time constants = win32.constants diff --git a/01_copy_all_hwp.py b/01_copy_all_hwp.py index 9feb777..03751b0 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 = "2506" -source_directory = r"C:\Users\dra\project\data\제2506회 정기\답안파일\제2506회 디지털정보활용능력 답안파일" +exam_round = "2507" +source_directory = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2507\hwp_정답" 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 b391b7f..29edba2 100644 --- a/02_conversion_hwp_to_xml.py +++ b/02_conversion_hwp_to_xml.py @@ -24,7 +24,6 @@ import os import logging import shutil from pathlib import Path -from pywinauto import Application from itertools import chain import time @@ -166,18 +165,18 @@ if __name__ == "__main__": exam_rounds = [ # "2506_3", - "2506" + "2507" ] # 변환할 폴더 경로 설정 # 배열 동시에 변환하면 에러발생 -> 하나씩 변환 -> 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}\\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"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"), + (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\B\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\B\\DIW"), + (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"), + (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), + (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), ] # folders = [ diff --git a/250714_DIW_2506C_TEST.xlsx b/250714_DIW_2506C_TEST.xlsx new file mode 100644 index 0000000..83dff04 Binary files /dev/null and b/250714_DIW_2506C_TEST.xlsx differ diff --git a/250728_DIW_2507A_채점결과.xlsx b/250728_DIW_2507A_채점결과.xlsx new file mode 100644 index 0000000..32ce973 Binary files /dev/null and b/250728_DIW_2507A_채점결과.xlsx differ diff --git a/250728_DIW_2507B_채점결과.xlsx b/250728_DIW_2507B_채점결과.xlsx new file mode 100644 index 0000000..df3d644 Binary files /dev/null and b/250728_DIW_2507B_채점결과.xlsx differ diff --git a/250729_DIW_2507A_채점결과.xlsx b/250729_DIW_2507A_채점결과.xlsx new file mode 100644 index 0000000..d55c3dd Binary files /dev/null and b/250729_DIW_2507A_채점결과.xlsx differ diff --git a/250729_DIW_2507B_채점결과.xlsx b/250729_DIW_2507B_채점결과.xlsx new file mode 100644 index 0000000..24fc0d0 Binary files /dev/null and b/250729_DIW_2507B_채점결과.xlsx differ diff --git a/250729_DIW_2507C_채점결과.xlsx b/250729_DIW_2507C_채점결과.xlsx new file mode 100644 index 0000000..bcac26e Binary files /dev/null and b/250729_DIW_2507C_채점결과.xlsx differ diff --git a/250729_DIW_2507D_채점결과.xlsx b/250729_DIW_2507D_채점결과.xlsx new file mode 100644 index 0000000..f83da57 Binary files /dev/null and b/250729_DIW_2507D_채점결과.xlsx differ diff --git a/DIW_2506_5A.json b/DIW_2506_5A.json deleted file mode 100644 index 0276672..0000000 --- a/DIW_2506_5A.json +++ /dev/null @@ -1,852 +0,0 @@ -{ - "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. 30.", - "value": "1400", - "points": 1, - "category": "OneAnswer", - "item": "문구 (2025. 06. 30.)/① 크기 (14pt)", - "desc": "1pt당 100" - }, - "21": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 06. 30.", - "value": "Center", - "points": 1, - "category": "OneAnswer", - "item": "문구 (2025. 06. 30.)/② 정렬 (가운데 정렬)" - }, - "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": "200", - "first_word": "지", - "points": 2, - "category": "LineSpacing", - "item": "문제 1 줄간격 200% 설정", - "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": "TEXT/COLDEF/@Count", - "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", - "searchValue": "골프", - "value": { - "Style": "DoubleSlim", - "Width": "283" - }, - "points": 2, - "category": "LineShape", - "item": "문구 (골프)/③ 테두리 : 이중 실선(1.00mm)", - "desc": "1mm = 283pt value['Width']에 pt값 입력" - }, - "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": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", - "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/DIW_2507A.json b/DIW_2507A.json new file mode 100644 index 0000000..2b0c7c1 --- /dev/null +++ b/DIW_2507A.json @@ -0,0 +1,839 @@ +{ + "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": "48,117,196", + "points": 2, + "category": "Color", + "item": "문구 (한국평생교육학회학술포럼)/② 채우기 : 색상(RGB:48,117,196)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "한국평생교육학회학술포럼", + "value": "130", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (한국평생교육학회학술포럼)/③ 크기-너비 (130 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": "248,190,122", + "points": 2, + "category": "Color", + "item": "한/③ 면색 : 색상(RGB:248,190,122)" + }, + "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": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색", + "value": "UNDERLINE", + "points": 2, + "category": "FontAttribute", + "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE" + }, + "14": { + "path": "//CHAR[contains(string(.),'{char1}')]/text()", + "path2": "//CHAR[contains(string(.),'{char2}')]/text()", + "path3": "//CHAR[contains(string(.),'{char3}')]/text()", + "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(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", + "match_str": "행사안내", + "value": "Center", + "points": 1, + "category": "Align", + "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) 참조)/① ITALIC" + }, + "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) 참조)/② UNDERLINE" + }, + "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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "searchValue": "2025. 07. 26.", + "value": "1300", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 07. 26.)/① 크기 (1300)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 07. 26.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)" + }, + "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": "2500", + "points": 1, + "category": "OneAnswer", + "item": "문구 (한국평생교육학회)/② 크기 (2500)" + }, + "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": "① 쪽 번호 매기기 (가,나,다 순으로)", + "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", + "desc": "정답에 맞는 값 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", + "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": "TEXT/COLDEF/@Count", + "value": "2", + "points": 3, + "category": "TwoColumn", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "평생교육시대", + "value": "65", + "points": 2, + "category": "mmSize", + "item": "문구 (평생교육시대)/① 크기-너비 (65 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", + "searchValue": "평생교육시대", + "value": { + "Style": "DoubleSlim", + "Width": "283" + }, + "points": 2, + "category": "LineShape", + "item": "문구 (평생교육시대)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt value['Width']에 pt값 입력" + }, + "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": "224,122,146", + "points": 2, + "category": "Color", + "item": "문구 (평생교육시대)/⑤ 채우기 : 색상(RGB:224,122,146)" + }, + "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": "문구 (평생교육시대)/⑨ 글씨크기 (2000)", + "desc": "1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "평생교육시대", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (평생교육시대)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림A.jpg\" 삽입", + "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" + }, + "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": "⑤ 위치 (어울림 : 세로-쪽의 위 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. 평생교육사의 개념)/② 크기 (1200)" + }, + "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": "UserChar", + "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", + "+,++,+++": "UserChar", + "정답에 맞는 값 value에 입력": "" + } + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Development')])", + "ignoreWord": "Development", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Development/영단어 미입력, 대소문자/오타 시 전체 감점", + "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(), ' ', ''),'21과목')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…총 21종목이다…)>'종' → '과' 글자바꿈" + }, + "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": "제목 문구 (평생교육사 자격증 발급(단위: 명))/② 크기 (1200)" + }, + "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": "글자모양/② 크기 (1000)" + }, + "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": "ChartOneAnswer", + "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": "제목 문구 (평생교육사 자격증 발급)/② 크기 (1300)" + }, + "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" + } + } +} diff --git a/DIW_2506B.json b/DIW_2507B.json similarity index 73% rename from DIW_2506B.json rename to DIW_2507B.json index 578cded..cef8bf7 100644 --- a/DIW_2506B.json +++ b/DIW_2507B.json @@ -46,65 +46,65 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "동물등록제시행안내", - "value": "맑은고딕", + "searchValue": "슬기로운미디어생활특강안내", + "value": "휴먼옛체", "points": 1, "category": "OneAnswer", - "item": "문구 (동물등록제시행안내)/① 글씨체 (맑은고딕)" + "item": "문구 (슬기로운미디어생활특강안내)/① 글씨체 (휴먼옛체)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "동물등록제시행안내", - "value": "233,174,43", + "searchValue": "슬기로운미디어생활특강안내", + "value": "53,149,164", "points": 2, "category": "Color", - "item": "문구 (동물등록제시행안내)/② 채우기 : 색상(RGB:233,174,43)" + "item": "문구 (슬기로운미디어생활특강안내)/② 채우기 : 색상(RGB:53,149,164)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "동물등록제시행안내", + "searchValue": "슬기로운미디어생활특강안내", "value": "110", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (동물등록제시행안내)/③ 크기-너비 (110mm)" + "item": "문구 (슬기로운미디어생활특강안내)/③ 크기-너비 (110mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "동물등록제시행안내", + "searchValue": "슬기로운미디어생활특강안내", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (동물등록제시행안내)/④ 크기-높이 (20 mm)" + "item": "문구 (슬기로운미디어생활특강안내)/④ 크기-높이 (20 mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "동물등록제시행안내", + "searchValue": "슬기로운미디어생활특강안내", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (동물등록제시행안내)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (슬기로운미디어생활특강안내)/⑤ 위치 (글자처럼 취급)" }, "6": { "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "동물등록제시행안내", + "searchValue": "슬기로운미디어생활특강안내", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (동물등록제시행안내)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (슬기로운미디어생활특강안내)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "동물등록제시행안내", + "searchValue": "슬기로운미디어생활특강안내", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (동물등록제시행안내)/⑦ 글맵시모양 (육안확인)" + "item": "문구 (슬기로운미디어생활특강안내)/⑦ 글맵시모양 (육안확인)" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "searchValue": "반", + "searchValue": "이", "value": { "Height": 2800, "Width": 2800 @@ -112,94 +112,94 @@ "tolerance": 200, "points": 1, "category": "TwoLineSize", - "item": "반/① 모양 (2줄)" + "item": "이/① 모양 (2줄)" }, "9": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "반", - "value": "돋움체", + "searchValue": "이", + "value": "맑은고딕", "points": 1, "category": "FontName", - "item": "반/② 글씨체 (돋움체)" + "item": "이/② 글씨체 (맑은고딕)" }, "10": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "반", - "value": "144,210,66", + "searchValue": "이", + "value": "172,235,62", "points": 2, "category": "Color", - "item": "반/③ 면색 : 색상(RGB:144,210,66)" + "item": "이/③ 면색 : 색상(RGB:172,235,62)" }, "11": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "searchValue": "반", + "searchValue": "이", "value": "3.0", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "반/④ 본문과의 간격 : 3.0mm" + "item": "이/④ 본문과의 간격 : 3.0mm" }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "동물병원이나 펫샵, 동물등록대행업체에서", - "value": "BOLD", + "searchValue": "동영상 콘텐츠의 현재와 미래", + "value": "ITALIC", "points": 2, "category": "FontAttribute", - "item": "문구 (동물병원이나 펫샵, 동물등록대행업체에서)/① BOLD" + "item": "문구 (동영상 콘텐츠의 현재와 미래)/① ITALIC" }, "13": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "동물병원이나 펫샵, 동물등록대행업체에서", + "searchValue": "동영상 콘텐츠의 현재와 미래", "value": "UNDERLINE", "points": 2, "category": "FontAttribute", - "item": "문구 (동물병원이나 펫샵, 동물등록대행업체에서)/② UNDERLINE" + "item": "문구 (동영상 콘텐츠의 현재와 미래)/② UNDERLINE" }, "14": { "path": "//CHAR[contains(string(.),'{char1}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()", - "char1": "★", - "char2": "★", + "char1": "◎", + "char2": "◎", "char3": "※", "value": 3, "points": 3, "category": "SpecialChar", - "item": "① ★ , ② ★ , ③ ※" + "item": "① ◎, ② ◎, ③ ※" }, "15": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "사업안내", - "value": "돋움", + "searchValue": "행사안내", + "value": "궁서", "points": 1, "category": "FontName", - "item": "문구 (★ 사업안내 ★)/① 글씨체 (돋움)" + "item": "문구 (◎ 행사안내 ◎)/① 글씨체 (궁서)" }, "16": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", - "match_str": "사업안내", + "match_str": "행사안내", "value": "Center", "points": 1, "category": "Align", - "item": "문구 (★ 사업안내 ★)/② 정렬 (가운데 정렬)" + "item": "문구 (◎ 행사안내 ◎)/② 정렬 (가운데 정렬)" }, "17": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "1마리당 3만원, 세대당 최대 1회 지원", + "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구 (1마리당 3만원, 세대당 최대 1회 지원)/① BOLD" + "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/① BOLD" }, "18": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "1마리당 3만원, 세대당 최대 1회 지원", + "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활", "value": "ITALIC", "points": 1, "category": "FontAttribute", - "item": "문구 (1마리당 3만원, 세대당 최대 1회 지원)/② ITALIC" + "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/② ITALIC" }, "19": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", @@ -210,57 +210,57 @@ }, "points": 2, "category": "ParaShape", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)", "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 06. 28.", + "searchValue": "2025. 07. 26.", "value": "1300", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/① 크기 (1300)", + "item": "문구 (2025. 07. 26.)/① 크기 (1300)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 06. 28.", + "searchValue": "2025. 07. 26.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "세종시반려동물과", - "value": "궁서", + "searchValue": "중랑미디어센터", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구 (세종시반려동물과)/① 글씨체 (궁서)" + "item": "문구 (중랑미디어센터)/① 글씨체 (굴림)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "세종시반려동물과", - "value": "2400", + "searchValue": "중랑미디어센터", + "value": "2300", "points": 1, "category": "OneAnswer", - "item": "문구 (세종시반려동물과)/② 크기 (2400)" + "item": "문구 (중랑미디어센터)/② 크기 (2300)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "세종시반려동물과", + "searchValue": "중랑미디어센터", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (세종시반려동물과)/③ 정렬 (가운데 정렬)" + "item": "문구 (중랑미디어센터)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "DIAT", - "value": "굴림", + "value": "중고딕", "points": 1, "category": "FontName", - "item": "문구 (DIAT)/① 글꼴 (굴림)" + "item": "문구 (DIAT)/① 글꼴 (중고딕)" }, "26": { "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", @@ -280,7 +280,7 @@ }, "28": { "path": "//PAGENUM/@FormatType", - "value": "HangulSyllable", + "value": "RomanCapital", "points": 2, "category": "PageNumber", "item": "① 쪽 번호 매기기 (가,나,다 순으로)", @@ -296,29 +296,32 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", + "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "desc": "정답에 맞는 값 value에 입력" }, "desc2": "1, 2페이지 모두 정답이어야 점수 부여" }, "29": { "path": "//PAGENUM/@Pos", - "value": "BottomCenter", + "value": "BottomLeft", "points": 2, "category": "PageNumber", "item": "가운데 아래", "desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc2": { + "왼쪽 아래": "BottomLeft", "가운데 아래": "BottomCenter", "오른쪽 아래": "BottomRight" } }, "30": { "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", - "value": "200", - "first_word": "반", + "value": "190", + "first_word": "이", "points": 2, "category": "LineSpacing", - "item": "문제 1 줄간격 200% 설정", + "item": "문제 1 줄간격 190% 설정", "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." } }, @@ -351,89 +354,89 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": "60", "points": 2, "category": "mmSize", - "item": "문구 (동물등록제)/① 크기-너비 (60 mm)" + "item": "문구 (방송 콘텐츠)/① 크기-너비 (60 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (동물등록제)/② 크기-높이 (12 mm)" + "item": "문구 (방송 콘텐츠)/② 크기-높이 (12 mm)" }, "6": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": { "Style": "DoubleSlim", "Width": "283" }, "points": 2, "category": "LineShape", - "item": "문구 (동물등록제)/③ 테두리 : 이중 실선(1.00mm)", + "item": "문구 (방송 콘텐츠)/③ 테두리 : 이중 실선(1.00mm)", "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": "20", "points": 2, "category": "OneAnswer", - "item": "문구 (동물등록제)/④ 글상자 모서리 (반원)", + "item": "문구 (방송 콘텐츠)/④ 글상자 모서리 (반원)", "desc": "모서리 비율 반원:50 / 둥근모양:20" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "동물등록제", - "value": "244,86,167", + "searchValue": "방송 콘텐츠", + "value": "227,220,193", "points": 2, "category": "Color", - "item": "문구 (동물등록제)/⑤ 채우기 : 색상(RGB:244,86,167)" + "item": "문구 (방송 콘텐츠)/⑤ 채우기 : 색상(RGB:227,220,193)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (동물등록제)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (방송 콘텐츠)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (동물등록제)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (방송 콘텐츠)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "동물등록제", - "value": "휴먼옛체", + "searchValue": "방송 콘텐츠", + "value": "견고딕", "points": 1, "category": "FontName", - "item": "문구 (동물등록제)/⑧ 글씨체 (휴먼옛체)" + "item": "문구 (방송 콘텐츠)/⑧ 글씨체 (견고딕)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": "2000", "points": 1, "category": "OneAnswer", - "item": "문구 (동물등록제)/⑨ 글씨크기 (2000)", + "item": "문구 (방송 콘텐츠)/⑨ 글씨크기 (2000)", "desc": "1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "동물등록제", + "searchValue": "방송 콘텐츠", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (동물등록제)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (방송 콘텐츠)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", @@ -466,88 +469,88 @@ }, "18": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", - "value": "22", + "value": "24", "points": 2, "category": "mmSize", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)" }, "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 제도의 필요성", - "value": "중고딕", + "searchValue": "1. 최근 콘텐츠 동향", + "value": "돋움", "points": 1, "category": "FontName", - "item": "문구① (1. 제도의 필요성)/① 글씨체 (중고딕)" + "item": "문구① (1. 최근 콘텐츠 동향)/① 글씨체 (돋움)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 제도의 필요성", + "searchValue": "1. 최근 콘텐츠 동향", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 제도의 필요성)/② 크기 (12pt)" + "item": "문구① (1. 최근 콘텐츠 동향)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 제도의 필요성", + "searchValue": "1. 최근 콘텐츠 동향", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 제도의 필요성)/③ 진하게" + "item": "문구① (1. 최근 콘텐츠 동향)/③ 진하게" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 동물등록현황", - "value": "중고딕", + "searchValue": "2. OTT 서비스의 미래", + "value": "돋움", "points": 1, "category": "FontName", - "item": "문구② (2. 동물등록현황)/① 글씨체 (중고딕)" + "item": "문구② (2. OTT 서비스의 미래)/① 글씨체 (돋움)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 동물등록현황", + "searchValue": "2. OTT 서비스의 미래", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 동물등록현황)/② 크기 (1200)" + "item": "문구② (2. OTT 서비스의 미래)/② 크기 (1200)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 동물등록현황", + "searchValue": "2. OTT 서비스의 미래", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 동물등록현황)/③ 진하게" + "item": "문구② (2. OTT 서비스의 미래)/③ 진하게" }, "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": "유기동물", + "option": "코로나", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (유기동물)/① 각주 설정 및 문구 입력" + "item": "문구 (코로나)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "사람과 함께 집에서 더불어 살아가는 동물", - "value": "궁서", + "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병", + "value": "중고딕", "points": 1, "category": "FontName", - "item": "문구 (유기동물)/② 글씨체 (궁서)" + "item": "문구 (코로나)/② 글씨체 (중고딕)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "사람과 함께 집에서 더불어 살아가는 동물", + "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (유기동물)/③ 크기 (9pt)" + "item": "문구 (코로나)/③ 크기 (9pt)" }, "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "사람과 함께 집에서 더불어 살아가는 동물", - "value": "DecagonCircleHanja", + "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병", + "value": "DecagonCircle", "points": 2, "category": "OneAnswer", "item": "문구 (전당)/④ 각주 번호모양", @@ -564,85 +567,86 @@ "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "정답에 맞는 값 value에 입력": "" } }, "29": { - "path": "boolean(//CHAR[contains(text(),'Petshop')])", - "ignoreWord": "Petshop", + "path": "boolean(//CHAR[contains(text(),'Streaming')])", + "ignoreWord": "Streaming", "value": true, "points": 3, "category": "Boolean", - "item": "Petshop/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Streaming/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word": [ - ["방지", "防止"], - ["제도", "制度"], - ["정보", "情報"], - ["부여", "附與"], - ["복지", "福祉"] + ["시청", "視聽"], + ["송출", "送出"], + ["취향", "趣向"], + ["성장", "成長"], + ["근절", "根絶"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 방지(防止), ② 제도(制度), ③ 정보(情報), ④ 부여(附與), ⑤ 복지(福祉)" + "item": "① 시청(視聽), ② 송출(送出), ③ 취향(趣向), ④ 성장(成長), ⑤ 근절(根絶)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'생후2개')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간에원하')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…생후 1개월 이상의 반려견을…)>'1' → '2' 글자바꿈" + "item": "문구 (…언제든지 원하는 원하는 시간에 순서로…) > '원하는' / '시간에' 순서바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'동물문제')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'수익구조')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…책임을 명확히 하고 문제를 유기동물 예방하는 데…)>'문제를 / 기동물' 순서바꿈" + "item": "문구 (…이익구조가 열악하다.…) > '이' → '수' 글자바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "동물등록현황(단위 : 백 건)", + "searchValue": "동영상 플랫폼 이용률(%)", "value": "굴림체", "points": 1, "category": "FontName", - "item": "제목 문구 (동물등록현황(단위 : 백 건))/① 글씨체 (굴림체)" + "item": "제목 문구 (동영상 플랫폼 이용률(%))/① 글씨체 (굴림체)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "동물등록현황(단위 : 백 건)", + "searchValue": "동영상 플랫폼 이용률(%)", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (동물등록현황(단위 : 백 건))/② 크기 (1200)" + "item": "제목 문구 (동영상 플랫폼 이용률(%))/② 크기 (1200)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "동물등록현황(단위 : 백 건)", + "searchValue": "동영상 플랫폼 이용률(%)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (동물등록현황(단위 : 백 건))/③ 진하게" + "item": "제목 문구 (동영상 플랫폼 이용률(%))/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "동물등록현황(단위 : 백 건)", + "searchValue": "동영상 플랫폼 이용률(%)", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (동물등록현황(단위 : 백 건))/④ 정렬 (가운데 정렬)" + "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": "221,162,248", + "value": "95,229,218", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:221,162,248)" + "item": "위쪽 제목 셀/① 색상(RGB:95,229,218)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -671,11 +675,11 @@ "41": { "path": "//TABLE//TEXT/@CharShape", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "value": "굴림", + "value": "궁서체", "points": 1, "category": "TableFontName", "category_tmp": "FontName", - "item": "글자모양/① 글씨체 (굴림)", + "item": "글자모양/① 글씨체 (궁서체)", "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" }, "42": { @@ -711,10 +715,10 @@ "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" }, "46": { - "chart_xpath": "//c:valAx/c:majorTickMark/@val", - "value": "out", + "chart_xpath": "//c:majorGridlines", + "value": true, "points": 2, - "category": "ChartOneAnswer", + "category": "majorGridlines", "item": "② 값 축 주 눈금선", "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" }, @@ -742,36 +746,36 @@ }, "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "searchValue": "동물등록현황", - "value": "궁서체", + "searchValue": "동영상 플랫폼 이용률", + "value": "굴림", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (동물등록현황)/① 글씨체 (궁서체)" + "item": "제목 문구 (동영상 플랫폼 이용률)/① 글씨체 (굴림)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "searchValue": "동물등록현황", - "value": "1300", + "searchValue": "동영상 플랫폼 이용률", + "value": "1400", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (동물등록현황)/② 크기 (1300)" + "item": "제목 문구 (동영상 플랫폼 이용률)/② 크기 (1400)" }, "52": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "option": "b", - "searchValue": "동물등록현황", + "searchValue": "동영상 플랫폼 이용률", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (동물등록현황)/③ 진하게", + "item": "제목 문구 (동영상 플랫폼 이용률)/③ 진하게", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", - "value": "굴림", + "value": "돋움체", "points": 1, "category": "ChartOneAnswer", - "item": "X축/① 글꼴 (굴림)" + "item": "X축/① 글꼴 (돋움체)" }, "54": { "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", @@ -791,10 +795,10 @@ }, "56": { "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", - "value": "굴림", + "value": "돋움체", "points": 1, "category": "ChartOneAnswer", - "item": "Y축/① 글꼴 (굴림)" + "item": "Y축/① 글꼴 (돋움체)" }, "57": { "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", @@ -814,10 +818,10 @@ }, "59": { "chart_xpath": "//c:legend//a:ea/@typeface", - "value": "굴림", + "value": "돋움체", "points": 1, "category": "OneAnswer", - "item": "범례/① 글꼴 (굴림)" + "item": "범례/① 글꼴 (돋움체)" }, "60": { "chart_xpath": "//c:legend//a:defRPr/@sz", diff --git a/HWP.code-workspace b/HWP.code-workspace new file mode 100644 index 0000000..19ba4c0 --- /dev/null +++ b/HWP.code-workspace @@ -0,0 +1,10 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "terminal.integrated.cwd": "${workspaceFolder}" + } +} \ No newline at end of file diff --git a/diwScoring2.py b/diwScoring2.py index 1b5a09b..8ade1f6 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -1,5 +1,3 @@ -import tkinter as tk -from tkinter import filedialog, messagebox from datetime import datetime import difflib import json @@ -373,7 +371,7 @@ class XMLScorer: # [1-16] ◈ 행사안내 ◈ # 특수문자와 글자의 속성이 같고 문서 내부에 '행사안내'와 같은 문자가 있을 경우 - # 유사도 문제로 의도치 않은 부분의 속성이 채점되는것을 방지하고자 + # 유사도 문제로 의도치 않은 다른 부분의 텍스트 속성이 채점되는것을 방지하고자 # 해당 문자를 포함하는 모든 문단의 속성을 판단해 # 정렬값이 정답과 일치하는 경우 정답으로 채점 elif (category or "") == "Align": @@ -387,7 +385,35 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points) if scoring['points'] > 0: break + + elif (category or "") == "majorGridlines": + # 줄/칸 전환여부 확인 + table_col_count = root.xpath("//SECTION[2]//TABLE/@ColCount") + + print("🟡테이블 열 개수: ", int(table_col_count[0]) if table_col_count else 0) + + chart_ser_count = chart_tree.xpath("count(//c:ser)", namespaces=namespaces) if chart_xpath else 0 + + print("🟡차트 데이터 개수: ", int(chart_ser_count) if isinstance(chart_ser_count, (int, float)) else 0) + + isXYtransposed = False + if table_col_count and chart_ser_count: + if int(chart_ser_count) >= int(table_col_count[0]): + isXYtransposed = True + # 값 축 주눈금선 존재하는지 여부 확인 + items = chart_tree.xpath(chart_xpath, namespaces=namespaces) if chart_xpath else [] + + for item in items: + # item이 존재하면 True, 없으면 False + user_answer = (item is not None) and isXYtransposed + + # 정답과 수험자 답안 비교 + self.evaluate_answer(scoring, user_answer, right_answer, points) + if scoring['points'] > 0: + break + + # 정답이 하나인 경우 # elif (category or "") == "OneAnswer": elif (category or "") in ["OneAnswer", "ChartOneAnswer"]: @@ -732,6 +758,7 @@ class XMLScorer: linespacing = root.xpath(xpath) user_answer = linespacing[0] + # print("🟡줄간격: ", user_answer) if user_answer != right_answer: linespacing_match = False break @@ -741,7 +768,7 @@ class XMLScorer: # 2. 해당 문제의 정답 줄간격 (180% = 28pt / 200% = 30pt ) # 두 경우의 글자 크기가 아니라면 오답처리 firstword = criterion.get('first_word', None) - result = root.xpath(f"//CHARSHAPE[@Id=//TEXT[CHAR[text()='{firstword}']]/@CharShape]/@Height") + result = root.xpath(f"//CHARSHAPE[@Id=//RECTANGLE//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]): @@ -1244,14 +1271,14 @@ class XMLScorer: def main(): # 시험회차 및 유형 - exam_round = '2506' + exam_round = '2507' # exam_round = '2506_5' # 채점하고자 하는 유형은 주석 해제 exam_types = [ # 'A', - # 'B', - 'C', + 'B', + # 'C', # 'D', ] diff --git a/hwp_conversion.log b/hwp_conversion.log index 87c5803..3bbaaff 100644 --- a/hwp_conversion.log +++ b/hwp_conversion.log @@ -17197,3 +17197,55 @@ 2025-07-04 17:17:19,014 - INFO - 변환 성공: 워드(한글)-006517-최지율.hwpx -> 워드(한글)-006517-최지율.hml 2025-07-04 17:17:19,364 - INFO - 변환 성공: 워드(한글)-006517-최지율2.hwpx -> 워드(한글)-006517-최지율2.hml 2025-07-04 17:17:19,713 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2506\C\TEST -> C:\Users\dra\project\HWP\HWP-Scoring\output\2506\C\TEST +2025-07-28 16:18:21,443 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:18:23,486 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:18:23,987 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:18:25,264 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:18:25,766 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:18:27,029 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:18:27,530 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:18:28,811 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:18:29,312 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW +2025-07-28 16:18:30,572 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW +2025-07-28 16:19:32,905 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:19:34,441 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:19:34,942 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:19:36,234 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:19:36,735 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:19:38,033 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:19:38,535 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:19:39,744 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:19:40,245 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW +2025-07-28 16:19:41,522 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW +2025-07-28 16:21:08,794 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:21:12,498 - INFO - 변환 성공: DIW_2507A.hwpx -> DIW_2507A.hml +2025-07-28 16:21:12,935 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:21:13,437 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:26:30,901 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:26:34,375 - INFO - 변환 성공: DIW_2507A.hwpx -> DIW_2507A.hml +2025-07-28 16:26:34,743 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:26:35,244 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:26:37,969 - INFO - 변환 성공: DIW_2507B.hwpx -> DIW_2507B.hml +2025-07-28 16:26:38,382 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:26:38,883 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:26:41,123 - INFO - 변환 성공: DIW_2507C.hwpx -> DIW_2507C.hml +2025-07-28 16:26:41,559 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:26:42,061 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:26:44,684 - INFO - 변환 성공: DIW_2507D.hwpx -> DIW_2507D.hml +2025-07-28 16:26:45,124 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:26:45,625 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\E\DIW +2025-07-28 16:26:46,936 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\E\DIW +2025-07-28 16:33:39,305 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:33:42,528 - INFO - 변환 성공: DIW_2507A.hwpx -> DIW_2507A.hml +2025-07-28 16:33:42,931 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW +2025-07-28 16:33:43,431 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:33:46,111 - INFO - 변환 성공: DIW_2507B.hwpx -> DIW_2507B.hml +2025-07-28 16:33:46,580 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW +2025-07-28 16:33:47,081 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:33:49,236 - INFO - 변환 성공: DIW_2507C.hwpx -> DIW_2507C.hml +2025-07-28 16:33:49,610 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW +2025-07-28 16:33:50,111 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:33:52,179 - INFO - 변환 성공: DIW_2507D.hwpx -> DIW_2507D.hml +2025-07-28 16:33:52,585 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW +2025-07-28 16:33:53,087 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\E\DIW +2025-07-28 16:33:54,437 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\E\DIW diff --git a/zzz.xbook b/zzz.xbook index b786044..2d50cd3 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":"//PARASHAPE[@Id=//CHAR[contains(text(),'사업안내')]/ancestor::P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHAR[contains(text(),'행사안내')]"},{"kind":2,"language":"xpath","value":"//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format=\"JPG\"]"},{"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":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}] \ 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":"//SECTION[2]//TABLE/@ColCount"},{"kind":2,"language":"xpath","value":"count(//c:ser) > 2"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//RECTANGLE//TEXT[CHAR[text()='여']]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//c:majorGridlines"},{"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":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}] \ No newline at end of file diff --git a/회차별채점자료/2507/excel_채점기준표/DIW_2507A.xlsx b/회차별채점자료/2507/excel_채점기준표/DIW_2507A.xlsx new file mode 100644 index 0000000..6b09d52 Binary files /dev/null and b/회차별채점자료/2507/excel_채점기준표/DIW_2507A.xlsx differ diff --git a/회차별채점자료/2507/excel_채점기준표/DIW_2507B.xlsx b/회차별채점자료/2507/excel_채점기준표/DIW_2507B.xlsx new file mode 100644 index 0000000..acb27fa Binary files /dev/null and b/회차별채점자료/2507/excel_채점기준표/DIW_2507B.xlsx differ diff --git a/회차별채점자료/2507/excel_채점기준표/DIW_2507C.xlsx b/회차별채점자료/2507/excel_채점기준표/DIW_2507C.xlsx new file mode 100644 index 0000000..c58d09e Binary files /dev/null and b/회차별채점자료/2507/excel_채점기준표/DIW_2507C.xlsx differ diff --git a/회차별채점자료/2507/excel_채점기준표/DIW_2507D.xlsx b/회차별채점자료/2507/excel_채점기준표/DIW_2507D.xlsx new file mode 100644 index 0000000..f6d1c21 Binary files /dev/null and b/회차별채점자료/2507/excel_채점기준표/DIW_2507D.xlsx differ diff --git a/회차별채점자료/2507/hwp_정답/1교시/DIW/DIW_2507A.hwpx b/회차별채점자료/2507/hwp_정답/1교시/DIW/DIW_2507A.hwpx new file mode 100644 index 0000000..7864692 Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/1교시/DIW/DIW_2507A.hwpx differ diff --git a/회차별채점자료/2507/hwp_정답/2교시/DIW/DIW_2507B.hwpx b/회차별채점자료/2507/hwp_정답/2교시/DIW/DIW_2507B.hwpx new file mode 100644 index 0000000..f2c36e1 Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/2교시/DIW/DIW_2507B.hwpx differ diff --git a/회차별채점자료/2507/hwp_정답/3교시/DIW/DIW_2507C.hwpx b/회차별채점자료/2507/hwp_정답/3교시/DIW/DIW_2507C.hwpx new file mode 100644 index 0000000..27a918d Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/3교시/DIW/DIW_2507C.hwpx differ diff --git a/회차별채점자료/2507/hwp_정답/4교시/DIW/DIW_2507D.hwpx b/회차별채점자료/2507/hwp_정답/4교시/DIW/DIW_2507D.hwpx new file mode 100644 index 0000000..fa3401b Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/4교시/DIW/DIW_2507D.hwpx differ diff --git a/회차별채점자료/2507/hwp_정답/DIW_2507A_문제.hwpx b/회차별채점자료/2507/hwp_정답/DIW_2507A_문제.hwpx new file mode 100644 index 0000000..0f592e4 Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/DIW_2507A_문제.hwpx differ diff --git a/회차별채점자료/2507/hwp_정답/DIW_2507B_문제.hwpx b/회차별채점자료/2507/hwp_정답/DIW_2507B_문제.hwpx new file mode 100644 index 0000000..785f216 Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/DIW_2507B_문제.hwpx differ diff --git a/회차별채점자료/2507/hwp_정답/DIW_2507C_문제.hwpx b/회차별채점자료/2507/hwp_정답/DIW_2507C_문제.hwpx new file mode 100644 index 0000000..2d8ff56 Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/DIW_2507C_문제.hwpx differ diff --git a/회차별채점자료/2507/hwp_정답/DIW_2507D_문제.hwpx b/회차별채점자료/2507/hwp_정답/DIW_2507D_문제.hwpx new file mode 100644 index 0000000..7084a88 Binary files /dev/null and b/회차별채점자료/2507/hwp_정답/DIW_2507D_문제.hwpx differ diff --git a/DIW_2506A.json b/회차별채점자료/2507/json_채점기준표/DIW_2507A.json similarity index 74% rename from DIW_2506A.json rename to 회차별채점자료/2507/json_채점기준표/DIW_2507A.json index a72ac94..2febb8d 100644 --- a/DIW_2506A.json +++ b/회차별채점자료/2507/json_채점기준표/DIW_2507A.json @@ -46,65 +46,65 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "생활가전수거캠페인", - "value": "굴림체", + "searchValue": "한국평생교육학회학술포럼", + "value": "궁서체", "points": 1, "category": "OneAnswer", - "item": "문구 (생활가전수거캠페인)/① 글씨체 (굴림체)" + "item": "문구 (한국평생교육학회학술포럼)/① 글씨체 (궁서체)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "생활가전수거캠페인", - "value": "209,114,108", + "searchValue": "한국평생교육학회학술포럼", + "value": "48,117,196", "points": 2, "category": "Color", - "item": "문구 (생활가전수거캠페인)/② 채우기 : 색상(RGB:209,114,108)" + "item": "문구 (한국평생교육학회학술포럼)/② 채우기 : 색상(RGB:48,117,196)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "생활가전수거캠페인", - "value": "110", + "searchValue": "한국평생교육학회학술포럼", + "value": "130", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (생활가전수거캠페인)/③ 크기-너비 (110 mm)" + "item": "문구 (한국평생교육학회학술포럼)/③ 크기-너비 (130 mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "생활가전수거캠페인", + "searchValue": "한국평생교육학회학술포럼", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (생활가전수거캠페인)/④ 크기-높이 (20 mm)" + "item": "문구 (한국평생교육학회학술포럼)/④ 크기-높이 (20 mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "생활가전수거캠페인", + "searchValue": "한국평생교육학회학술포럼", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (생활가전수거캠페인)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (한국평생교육학회학술포럼)/⑤ 위치 (글자처럼 취급)" }, "6": { "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "생활가전수거캠페인", + "searchValue": "한국평생교육학회학술포럼", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (생활가전수거캠페인)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (한국평생교육학회학술포럼)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "생활가전수거캠페인", + "searchValue": "한국평생교육학회학술포럼", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (생활가전수거캠페인)/⑦ 글맵시모양 (육안확인)" + "item": "문구 (한국평생교육학회학술포럼)/⑦ 글맵시모양 (육안확인)" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "searchValue": "서", + "searchValue": "한", "value": { "Height": 2800, "Width": 2800 @@ -112,94 +112,94 @@ "tolerance": 200, "points": 1, "category": "TwoLineSize", - "item": "서/① 모양 (2줄)" + "item": "한/① 모양 (2줄)" }, "9": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "서", - "value": "중고딕", + "searchValue": "한", + "value": "굴림", "points": 1, "category": "FontName", - "item": "서/② 글씨체 (중고딕)" + "item": "한/② 글씨체 (굴림)" }, "10": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "서", - "value": "230,209,48", + "searchValue": "한", + "value": "248,190,122", "points": 2, "category": "Color", - "item": "서/③ 면색 : 색상(RGB:230,209,48)" + "item": "한/③ 면색 : 색상(RGB:248,190,122)" }, "11": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "searchValue": "서", + "searchValue": "한", "value": "3.0", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "서/④ 본문과의 간격 : 3.0mm" + "item": "한/④ 본문과의 간격 : 3.0mm" }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "2025년 7월부터 생활가전수거 캠페인을 시행", + "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색", "value": "BOLD", "points": 2, "category": "FontAttribute", - "item": "문구 (2025년 7월부터 생활가전수거 캠페인을 시행)/① BOLD" + "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD" }, "13": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "2025년 7월부터 생활가전수거 캠페인을 시행", + "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색", "value": "UNDERLINE", "points": 2, "category": "FontAttribute", - "item": "문구 (2025년 7월부터 생활가전수거 캠페인을 시행)/② UNDERLINE" + "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE" }, "14": { "path": "//CHAR[contains(string(.),'{char1}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()", - "char1": "●", - "char2": "●", + "char1": "◆", + "char2": "◆", "char3": "※", "value": 3, "points": 3, "category": "SpecialChar", - "item": "① ● , ② ● , ③ ※" + "item": "① ◆, ② ◆, ③ ※" }, "15": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "홍보안내", - "value": "돋움", + "searchValue": "행사안내", + "value": "궁서", "points": 1, "category": "FontName", - "item": "문구 (● 홍보안내 ●)/① 글씨체 (돋움)" + "item": "문구 (◆ 행사안내 ◆)/① 글씨체 (궁서)" }, "16": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", - "match_str": "홍보안내", + "match_str": "행사안내", "value": "Center", "points": 1, "category": "Align", - "item": "문구 (● 홍보안내 ●)/② 정렬 (가운데 정렬)" + "item": "문구 (◆ 행사안내 ◆)/② 정렬 (가운데 정렬)" }, "17": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "서울시 25개 자치구 및 인근 지역", - "value": "BOLD", + "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조", + "value": "ITALIC", "points": 1, "category": "FontAttribute", - "item": "문구 (서울시 25개 자치구 및 인근 지역)/① BOLD" + "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/① ITALIC" }, "18": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "서울시 25개 자치구 및 인근 지역", - "value": "ITALIC", + "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조", + "value": "UNDERLINE", "points": 1, "category": "FontAttribute", - "item": "문구 (서울시 25개 자치구 및 인근 지역)/② ITALIC" + "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/② UNDERLINE" }, "19": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", @@ -215,52 +215,52 @@ }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 06. 28.", + "searchValue": "2025. 07. 26.", "value": "1300", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/① 크기 (1300)", + "item": "문구 (2025. 07. 26.)/① 크기 (1300)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 06. 28.", + "searchValue": "2025. 07. 26.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "한국자원순환센터", - "value": "궁서", + "searchValue": "한국평생교육학회", + "value": "견고딕", "points": 1, "category": "FontName", - "item": "문구 (한국자원순환센터)/① 글씨체 (궁서)" + "item": "문구 (한국평생교육학회)/① 글씨체 (견고딕)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "한국자원순환센터", - "value": "2400", + "searchValue": "한국평생교육학회", + "value": "2500", "points": 1, "category": "OneAnswer", - "item": "문구 (한국자원순환센터)/② 크기 (2400)" + "item": "문구 (한국평생교육학회)/② 크기 (2500)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "한국자원순환센터", + "searchValue": "한국평생교육학회", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (한국자원순환센터)/③ 정렬 (가운데 정렬)" + "item": "문구 (한국평생교육학회)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "DIAT", - "value": "굴림", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "문구 (DIAT)/① 글꼴 (굴림)" + "item": "문구 (DIAT)/① 글꼴 (굴림체)" }, "26": { "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", @@ -280,7 +280,7 @@ }, "28": { "path": "//PAGENUM/@FormatType", - "value": "HangulSyllable", + "value": "LatinCapital", "points": 2, "category": "PageNumber", "item": "① 쪽 번호 매기기 (가,나,다 순으로)", @@ -296,26 +296,29 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", + "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "desc": "정답에 맞는 값 value에 입력" }, "desc2": "1, 2페이지 모두 정답이어야 점수 부여" }, "29": { "path": "//PAGENUM/@Pos", - "value": "BottomCenter", + "value": "BottomRight", "points": 2, "category": "PageNumber", "item": "오른쪽 아래", "desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc2": { + "왼쪽 아래": "BottomLeft", "가운데 아래": "BottomCenter", "오른쪽 아래": "BottomRight" } }, "30": { "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", - "value": "180", - "first_word": "지", + "value": "200", + "first_word": "한", "points": 2, "category": "LineSpacing", "item": "문제 1 줄간격 180% 설정", @@ -351,89 +354,89 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "자원순환", - "value": "60", + "searchValue": "평생교육시대", + "value": "65", "points": 2, "category": "mmSize", - "item": "문구 (자원순환)/① 크기-너비 (60 mm)" + "item": "문구 (평생교육시대)/① 크기-너비 (65 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "자원순환", + "searchValue": "평생교육시대", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (자원순환)/② 크기-높이 (12 mm)" + "item": "문구 (평생교육시대)/② 크기-높이 (12 mm)" }, "6": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", - "searchValue": "자원순환", + "searchValue": "평생교육시대", "value": { "Style": "DoubleSlim", "Width": "283" }, "points": 2, "category": "LineShape", - "item": "문구 (자원순환)/③ 테두리 : 이중 실선(1.00mm)", + "item": "문구 (평생교육시대)/③ 테두리 : 이중 실선(1.00mm)", "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "자원순환", - "value": "50", + "searchValue": "평생교육시대", + "value": "20", "points": 2, "category": "OneAnswer", - "item": "문구 (자원순환)/④ 글상자 모서리 (반원)", + "item": "문구 (평생교육시대)/④ 글상자 모서리 (반원)", "desc": "모서리 비율 반원:50 / 둥근모양:20" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "자원순환", - "value": "131,194,68", + "searchValue": "평생교육시대", + "value": "224,122,146", "points": 2, "category": "Color", - "item": "문구 (자원순환)/⑤ 채우기 : 색상(RGB:131,194,68)" + "item": "문구 (평생교육시대)/⑤ 채우기 : 색상(RGB:224,122,146)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "자원순환", + "searchValue": "평생교육시대", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (자원순환)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (평생교육시대)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "자원순환", + "searchValue": "평생교육시대", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (자원순환)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (평생교육시대)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "자원순환", - "value": "궁서체", + "searchValue": "평생교육시대", + "value": "휴먼옛체", "points": 1, "category": "FontName", - "item": "문구 (자원순환)/⑧ 글씨체 (궁서체)" + "item": "문구 (평생교육시대)/⑧ 글씨체 (휴먼옛체)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "자원순환", + "searchValue": "평생교육시대", "value": "2000", "points": 1, "category": "OneAnswer", - "item": "문구 (자원순환)/⑨ 글씨크기 (2000)", + "item": "문구 (평생교육시대)/⑨ 글씨크기 (2000)", "desc": "1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "자원순환", + "searchValue": "평생교육시대", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (자원순환)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (평생교육시대)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", @@ -466,88 +469,88 @@ }, "18": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", - "value": "22", + "value": "24", "points": 2, "category": "mmSize", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)" }, "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 자원순환의 필요성", - "value": "돋움", + "searchValue": "1. 평생교육이란?", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구① (1. 자원순환의 필요성)/① 글씨체 (돋움)" + "item": "문구① (1. 평생교육이란?)/① 글씨체 (굴림)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 자원순환의 필요성", + "searchValue": "1. 평생교육이란?", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 자원순환의 필요성)/② 크기 (12pt)" + "item": "문구① (1. 평생교육이란?)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 자원순환의 필요성", + "searchValue": "1. 평생교육이란?", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 자원순환의 필요성)/③ 진하게" + "item": "문구① (1. 평생교육이란?)/③ 진하게" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 자원순환 실천 방법", - "value": "돋움", + "searchValue": "2. 평생교육사의 개념", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구② (2. 자원순환 실천 방법)/① 글씨체 (돋움)" + "item": "문구② (2. 평생교육사의 개념)/① 글씨체 (굴림)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 자원순환 실천 방법", + "searchValue": "2. 평생교육사의 개념", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 자원순환 실천 방법)/② 크기 (1200)" + "item": "문구② (2. 평생교육사의 개념)/② 크기 (1200)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 자원순환 실천 방법", + "searchValue": "2. 평생교육사의 개념", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 자원순환 실천 방법)/③ 진하게" + "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": "온실가스", + "option": "유네스코", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (온실가스)/① 각주 설정 및 문구 입력" + "item": "문구 (유네스코)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "땅으로 복사되는 에너지를 흡수하여 온실효과를 내는 기체", - "value": "바탕체", + "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구", + "value": "궁서", "points": 1, "category": "FontName", - "item": "문구 (온실가스)/② 글씨체 (바탕체)" + "item": "문구 (유네스코)/② 글씨체 (궁서)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "땅으로 복사되는 에너지를 흡수하여 온실효과를 내는 기체", + "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (온실가스)/③ 크기 (9pt)" + "item": "문구 (유네스코)/③ 크기 (9pt)" }, "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "땅으로 복사되는 에너지를 흡수하여 온실효과를 내는 기체", - "value": "CircledDigit", + "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구", + "value": "UserChar", "points": 2, "category": "OneAnswer", "item": "문구 (전당)/④ 각주 번호모양", @@ -563,85 +566,87 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", + "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "정답에 맞는 값 value에 입력": "" } }, "29": { - "path": "boolean(//CHAR[contains(text(),'Platform')])", - "ignoreWord": "Platform", + "path": "boolean(//CHAR[contains(text(),'Development')])", + "ignoreWord": "Development", "value": true, "points": 3, "category": "Boolean", - "item": "Platform/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Development/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word": [ - ["이익", "利益"], - ["환경", "環境"], - ["실천", "實踐"], - ["낭비", "浪費"], - ["촉진", "促進"] + ["평생", "平生"], + ["교육", "敎育"], + ["신념", "信念"], + ["현장", "現場"], + ["자격", "資格"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 이익(利益), ② 환경(環境), ③ 실천(實踐), ④ 낭비(浪費), ⑤ 촉진(促進)" + "item": "① 평생(平生), ② 교육(敎育), ③ 신념(信念), ④ 현장(現場), ⑤ 자격(資格)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'경을보호')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'하는사람')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…또한 보호하는 환경을 지속 가능한 발전을…) > 보호하는 / 환경을 순서바꿈" + "item": "문구 (…어느 하나에 사람에게 해당하는 평생교육사의…) > '사람에게'/'해당하는' 순서바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'건의수명')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'21과목')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…낭비(浪費)하지 않고 물건이 수명을 연장하는 데…) > 이 → 의 글자바꿈" + "item": "문구 (…총 21종목이다…)>'종' → '과' 글자바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "연도별 자원순환율 추이(%)", - "value": "굴림체", + "searchValue": "평생교육사 자격증 발급(단위: 명)", + "value": "돋움", "points": 1, "category": "FontName", - "item": "제목 문구 (연도별 자원순환율 추이(%))/① 글씨체 (굴림체)" + "item": "제목 문구 (평생교육사 자격증 발급(단위: 명))/① 글씨체 (돋움)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "연도별 자원순환율 추이(%)", + "searchValue": "평생교육사 자격증 발급(단위: 명)", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 자원순환율 추이(%))/② 크기 (1200)" + "item": "제목 문구 (평생교육사 자격증 발급(단위: 명))/② 크기 (1200)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "연도별 자원순환율 추이(%)", + "searchValue": "평생교육사 자격증 발급(단위: 명)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (연도별 자원순환율 추이(%))/③ 진하게" + "item": "제목 문구 (평생교육사 자격증 발급(단위: 명))/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "연도별 자원순환율 추이(%)", + "searchValue": "평생교육사 자격증 발급(단위: 명)", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 자원순환율 추이(%))/④ 정렬 (가운데 정렬)" + "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": "235,179,218", + "value": "233,174,43", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:235,179,218)" + "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -670,11 +675,11 @@ "41": { "path": "//TABLE//TEXT/@CharShape", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "value": "돋움", + "value": "중고딕", "points": 1, "category": "TableFontName", "category_tmp": "FontName", - "item": "글자모양/① 글씨체 (돋움)", + "item": "글자모양/① 글씨체 (중고딕)", "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" }, "42": { @@ -693,7 +698,7 @@ }, "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", + "option": "SUM", "value": true, "points": 4, "category": "Boolean", @@ -742,10 +747,10 @@ "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "searchValue": "연도별 자원순환율 추이", - "value": "궁서체", + "value": "바탕체", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 자원순환율 추이)/① 글씨체 (궁서체)" + "item": "제목 문구 (연도별 자원순환율 추이)/① 글씨체 (바탕체)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", diff --git a/DIW_2506D.json b/회차별채점자료/2507/json_채점기준표/DIW_2507B.json similarity index 73% rename from DIW_2506D.json rename to 회차별채점자료/2507/json_채점기준표/DIW_2507B.json index b17c167..73cdaa6 100644 --- a/DIW_2506D.json +++ b/회차별채점자료/2507/json_채점기준표/DIW_2507B.json @@ -46,65 +46,65 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "태국문화체험페스티벌안내", - "value": "궁서", + "searchValue": "슬기로운미디어생활특강안내", + "value": "휴먼옛체", "points": 1, "category": "OneAnswer", - "item": "문구 (태국문화체험페스티벌안내)/① 글씨체 (궁서)" + "item": "문구 (슬기로운미디어생활특강안내)/① 글씨체 (휴먼옛체)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "태국문화체험페스티벌안내", - "value": "79,156,22", + "searchValue": "슬기로운미디어생활특강안내", + "value": "53,149,164", "points": 2, "category": "Color", - "item": "문구 (태국문화체험페스티벌안내)/② 채우기 : 색상(RGB:79,156,22)" + "item": "문구 (슬기로운미디어생활특강안내)/② 채우기 : 색상(RGB:53,149,164)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "태국문화체험페스티벌안내", - "value": "130", + "searchValue": "슬기로운미디어생활특강안내", + "value": "110", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (태국문화체험페스티벌안내)/③ 크기-너비 (130 mm)" + "item": "문구 (슬기로운미디어생활특강안내)/③ 크기-너비 (110mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "태국문화체험페스티벌안내", + "searchValue": "슬기로운미디어생활특강안내", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (태국문화체험페스티벌안내)/④ 크기-높이 (20 mm)" + "item": "문구 (슬기로운미디어생활특강안내)/④ 크기-높이 (20 mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "태국문화체험페스티벌안내", + "searchValue": "슬기로운미디어생활특강안내", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (태국문화체험페스티벌안내)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (슬기로운미디어생활특강안내)/⑤ 위치 (글자처럼 취급)" }, "6": { "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "태국문화체험페스티벌안내", + "searchValue": "슬기로운미디어생활특강안내", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (태국문화체험페스티벌안내)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (슬기로운미디어생활특강안내)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "태국문화체험페스티벌안내", + "searchValue": "슬기로운미디어생활특강안내", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (태국문화체험페스티벌안내)/⑦ 글맵시모양 (육안확인)" + "item": "문구 (슬기로운미디어생활특강안내)/⑦ 글맵시모양 (육안확인)" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "searchValue": "태", + "searchValue": "이", "value": { "Height": 2800, "Width": 2800 @@ -112,68 +112,68 @@ "tolerance": 200, "points": 1, "category": "TwoLineSize", - "item": "태/① 모양 (2줄)" + "item": "이/① 모양 (2줄)" }, "9": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "태", - "value": "맑은 고딕", + "searchValue": "이", + "value": "맑은고딕", "points": 1, "category": "FontName", - "item": "태/② 글씨체 (맑은 고딕)" + "item": "이/② 글씨체 (맑은고딕)" }, "10": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "태", - "value": "244,212,29", + "searchValue": "이", + "value": "172,235,62", "points": 2, "category": "Color", - "item": "태/③ 면색 : 색상(RGB:244,212,29)" + "item": "이/③ 면색 : 색상(RGB:172,235,62)" }, "11": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "searchValue": "태", + "searchValue": "이", "value": "3.0", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "태/④ 본문과의 간격 : 3.0mm" + "item": "이/④ 본문과의 간격 : 3.0mm" }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!", - "value": "BOLD", - "points": 2, - "category": "FontAttribute", - "item": "문구 (태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!)/① BOLD" - }, - "13": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!", + "searchValue": "동영상 콘텐츠의 현재와 미래", "value": "ITALIC", "points": 2, "category": "FontAttribute", - "item": "문구 (태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!)/② ITALIC" + "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(string(.),'{char1}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()", - "char1": "◇", - "char2": "◇", + "char1": "◎", + "char2": "◎", "char3": "※", "value": 3, "points": 3, "category": "SpecialChar", - "item": "① ◇ , ② ◇ , ③ ※" + "item": "① ◎, ② ◎, ③ ※" }, "15": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "searchValue": "행사안내", - "value": "돋움", + "value": "궁서", "points": 1, "category": "FontName", - "item": "문구 (◇ 행사안내 ◇)/① 글씨체 (돋움)" + "item": "문구 (◎ 행사안내 ◎)/① 글씨체 (궁서)" }, "16": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", @@ -181,25 +181,25 @@ "value": "Center", "points": 1, "category": "Align", - "item": "문구 (◇ 행사안내 ◇)/② 정렬 (가운데 정렬)" + "item": "문구 (◎ 행사안내 ◎)/② 정렬 (가운데 정렬)" }, "17": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "오전/오후 총 2회", - "value": "ITALIC", + "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활", + "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구 (오전/오후 총 2회)/① ITALIC" + "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/① BOLD" }, "18": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "오전/오후 총 2회", - "value": "UNDERLINE", + "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활", + "value": "ITALIC", "points": 1, "category": "FontAttribute", - "item": "문구 (오전/오후 총 2회)/② UNDERLINE" + "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/② ITALIC" }, "19": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", @@ -210,57 +210,57 @@ }, "points": 2, "category": "ParaShape", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)", "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 06. 28.", + "searchValue": "2025. 07. 26.", "value": "1300", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/① 크기 (1300)", + "item": "문구 (2025. 07. 26.)/① 크기 (1300)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 06. 28.", + "searchValue": "2025. 07. 26.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "광진다문화체험관", - "value": "돋움체", + "searchValue": "중랑미디어센터", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구 (광진다문화체험관)/① 글씨체 (돋움체)" + "item": "문구 (중랑미디어센터)/① 글씨체 (굴림)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "광진다문화체험관", - "value": "2400", + "searchValue": "중랑미디어센터", + "value": "2300", "points": 1, "category": "OneAnswer", - "item": "문구 (광진다문화체험관)/② 크기 (2400)" + "item": "문구 (중랑미디어센터)/② 크기 (2300)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "광진다문화체험관", + "searchValue": "중랑미디어센터", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (광진다문화체험관)/③ 정렬 (가운데 정렬)" + "item": "문구 (중랑미디어센터)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "DIAT", - "value": "굴림", + "value": "중고딕", "points": 1, "category": "FontName", - "item": "문구 (DIAT)/① 글꼴 (굴림)" + "item": "문구 (DIAT)/① 글꼴 (중고딕)" }, "26": { "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", @@ -280,14 +280,15 @@ }, "28": { "path": "//PAGENUM/@FormatType", - "value": "CircledDigit", + "value": "RomanCapital", "points": 2, "category": "PageNumber", - "item": "① 쪽 번호 매기기 (①,②,③ 순으로)", + "item": "① 쪽 번호 매기기 (가,나,다 순으로)", "desc1": { "가,나,다": "HangulSyllable", "1,2,3": "Digit", "갑,을,병": "DecagonCircle", + "甲,乙,丙": "DecagonCircleHanja", "A,B,C": "LatinCapital", "a,b,c": "LatinSmall", "①,②,③": "CircledDigit", @@ -296,7 +297,7 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", - "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "desc": "정답에 맞는 값 value에 입력" }, "desc2": "1, 2페이지 모두 정답이어야 점수 부여" @@ -316,11 +317,11 @@ }, "30": { "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", - "value": "200", - "first_word": "태", + "value": "190", + "first_word": "이", "points": 2, "category": "LineSpacing", - "item": "문제 1 줄간격 200% 설정", + "item": "문제 1 줄간격 190% 설정", "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." } }, @@ -353,104 +354,104 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "미소의 나라, 태국", - "value": "70", + "searchValue": "방송 콘텐츠", + "value": "60", "points": 2, "category": "mmSize", - "item": "문구 (미소의 나라, 태국)/① 크기-너비 (70 mm)" + "item": "문구 (방송 콘텐츠)/① 크기-너비 (60 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "미소의 나라, 태국", + "searchValue": "방송 콘텐츠", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (미소의 나라, 태국)/② 크기-높이 (12 mm)" + "item": "문구 (방송 콘텐츠)/② 크기-높이 (12 mm)" }, "6": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", - "searchValue": "미소의 나라, 태국", + "searchValue": "방송 콘텐츠", "value": { "Style": "DoubleSlim", "Width": "283" }, "points": 2, "category": "LineShape", - "item": "문구 (미소의 나라, 태국)/③ 테두리 : 이중 실선(1.00mm)", + "item": "문구 (방송 콘텐츠)/③ 테두리 : 이중 실선(1.00mm)", "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "미소의 나라, 태국", - "value": "50", + "searchValue": "방송 콘텐츠", + "value": "20", "points": 2, "category": "OneAnswer", - "item": "문구 (미소의 나라, 태국)/④ 글상자 모서리 (직각)", + "item": "문구 (방송 콘텐츠)/④ 글상자 모서리 (직각)", "desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "미소의 나라, 태국", - "value": "61,164,73", + "searchValue": "방송 콘텐츠", + "value": "227,220,193", "points": 2, "category": "Color", - "item": "문구 (미소의 나라, 태국)/⑤ 채우기 : 색상(RGB:61,164,73)" + "item": "문구 (방송 콘텐츠)/⑤ 채우기 : 색상(RGB:227,220,193)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "미소의 나라, 태국", + "searchValue": "방송 콘텐츠", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (미소의 나라, 태국)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (방송 콘텐츠)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "미소의 나라, 태국", + "searchValue": "방송 콘텐츠", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (미소의 나라, 태국)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (방송 콘텐츠)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "미소의 나라, 태국", - "value": "굴림체", + "searchValue": "방송 콘텐츠", + "value": "견고딕", "points": 1, "category": "FontName", - "item": "문구 (미소의 나라, 태국)/⑧ 글씨체 (굴림체)" + "item": "문구 (방송 콘텐츠)/⑧ 글씨체 (견고딕)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "미소의 나라, 태국", + "searchValue": "방송 콘텐츠", "value": "2000", "points": 1, "category": "OneAnswer", - "item": "문구 (미소의 나라, 태국)/⑨ 글씨크기 (2000)", + "item": "문구 (방송 콘텐츠)/⑨ 글씨크기 (2000)", "desc": "1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "미소의 나라, 태국", + "searchValue": "방송 콘텐츠", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (미소의 나라, 태국)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (방송 콘텐츠)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", "value": true, "points": 2, "category": "Boolean", - "item": "① 파일명 \"그림D.jpg\" 삽입", + "item": "① 파일명 \"그림B.jpg\" 삽입", "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" }, "15": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", - "value": "85", + "value": "80", "points": 2, "category": "mmSize", - "item": "② 크기-너비 (85 mm)" + "item": "② 크기-너비 (80 mm)" }, "16": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", @@ -468,87 +469,87 @@ }, "18": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", - "value": "22", + "value": "24", "points": 2, "category": "mmSize", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)" }, "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 태국의 환경", - "value": "돋움체", + "searchValue": "1. 최근 콘텐츠 동향", + "value": "돋움", "points": 1, "category": "FontName", - "item": "문구① (1. 태국의 환경)/① 글씨체 (돋움체)" + "item": "문구① (1. 최근 콘텐츠 동향)/① 글씨체 (돋움)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 태국의 환경", + "searchValue": "1. 최근 콘텐츠 동향", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 태국의 환경)/② 크기 (12pt)" + "item": "문구① (1. 최근 콘텐츠 동향)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 태국의 환경", + "searchValue": "1. 최근 콘텐츠 동향", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 태국의 환경)/③ 진하게" + "item": "문구① (1. 최근 콘텐츠 동향)/③ 진하게" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 태국의 주요 도시", - "value": "돋움체", + "searchValue": "2. OTT 서비스의 미래", + "value": "돋움", "points": 1, "category": "FontName", - "item": "문구② (2. 태국의 주요 도시)/① 글씨체 (돋움체)" + "item": "문구② (2. OTT 서비스의 미래)/① 글씨체 (돋움)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 태국의 주요 도시", + "searchValue": "2. OTT 서비스의 미래", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 태국의 주요 도시)/② 크기 (1200)" + "item": "문구② (2. OTT 서비스의 미래)/② 크기 (1200)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 태국의 주요 도시", + "searchValue": "2. OTT 서비스의 미래", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 태국의 주요 도시)/③ 진하게" + "item": "문구② (2. OTT 서비스의 미래)/③ 진하게" }, "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": "카오소이", + "option": "코로나", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (카오소이)/① 각주 설정 및 문구 입력" + "item": "문구 (코로나)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", - "value": "굴림", + "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병", + "value": "궁서", "points": 1, "category": "FontName", - "item": "문구 (카오소이)/② 글씨체 (굴림)" + "item": "문구 (코로나)/② 글씨체 (궁서)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", + "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (카오소이)/③ 크기 (9pt)" + "item": "문구 (코로나)/③ 크기 (9pt)" }, "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", + "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병", "value": "DecagonCircle", "points": 2, "category": "OneAnswer", @@ -566,85 +567,86 @@ "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "정답에 맞는 값 value에 입력": "" } }, "29": { - "path": "boolean(//CHAR[contains(text(),'Temple')])", - "ignoreWord": "Temple", + "path": "boolean(//CHAR[contains(text(),'Streaming')])", + "ignoreWord": "Streaming", "value": true, "points": 3, "category": "Boolean", - "item": "Temple/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Streaming/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word": [ - ["절벽", "絶壁"], - ["산림", "山林"], - ["서식", "棲息"], - ["비옥", "肥沃"], - ["매력", "魅力"] + ["시청", "視聽"], + ["송출", "送出"], + ["취향", "趣向"], + ["성장", "成長"], + ["근절", "根絶"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 절벽(絶壁), ② 산림(山林), ③ 서식(棲息), ④ 비옥(肥沃), ⑤ 매력(魅力)" + "item": "① 시청(視聽), ② 송출(送出), ③ 취향(趣向), ④ 성장(成長), ⑤ 근절(根絶)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'대성기후')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간에원하')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…따뜻한 열대강 기후를 가진…)>'강' → '성' 글자바꿈" + "item": "문구 (…언제든지 원하는 원하는 시간에 순서로…) > '원하는' / '시간에' 순서바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'타낸표현')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'수익구조')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…특성을 가장 잘 표현이기도 나타낸 하다…)>'표현이기도 / 나타낸' 순서바꿈" + "item": "문구 (…이익구조가 열악하다.…) > '이' → '수' 글자바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "지역별 관광객 수(단위:만 명)", - "value": "맑은 고딕", + "searchValue": "동영상 플랫폼 이용률(%)", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "제목 문구 (지역별 관광객 수(단위:만 명))/① 글씨체 (맑은 고딕)" + "item": "제목 문구 (동영상 플랫폼 이용률(%))/① 글씨체 (굴림체)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "지역별 관광객 수(단위:만 명)", + "searchValue": "동영상 플랫폼 이용률(%)", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (지역별 관광객 수(단위:만 명))/② 크기 (1200)" + "item": "제목 문구 (동영상 플랫폼 이용률(%))/② 크기 (1200)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "지역별 관광객 수(단위:만 명)", + "searchValue": "동영상 플랫폼 이용률(%)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (지역별 관광객 수(단위:만 명))/③ 진하게" + "item": "제목 문구 (동영상 플랫폼 이용률(%))/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "지역별 관광객 수(단위:만 명)", + "searchValue": "동영상 플랫폼 이용률(%)", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (지역별 관광객 수(단위:만 명))/④ 정렬 (가운데 정렬)" + "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": "144,231,53", + "value": "95,229,218", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:144,231,53)" + "item": "위쪽 제목 셀/① 색상(RGB:95,229,218)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -673,19 +675,19 @@ "41": { "path": "//TABLE//TEXT/@CharShape", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "value": "돋움", + "value": "궁서체", "points": 1, "category": "TableFontName", "category_tmp": "FontName", - "item": "글자모양/① 글씨체 (돋움)", + "item": "글자모양/① 글씨체 (궁서체)", "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" }, "42": { "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", - "value": "1100", + "value": "1000", "points": 1, "category": "TableAnswer", - "item": "글자모양/② 크기 (1100)" + "item": "글자모양/② 크기 (1000)" }, "43": { "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", @@ -696,7 +698,7 @@ }, "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", + "option": "AVG", "value": true, "points": 4, "category": "Boolean", @@ -705,11 +707,11 @@ }, "45": { "chart_xpath": "", - "chart_type": "묶은세로막대형", + "chart_type": "묶은가로막대형", "value": true, "points": 2, "category": "ChartType", - "item": "① 종류 (묶은세로막대형)", + "item": "① 종류 (묶은가로막대형)", "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" }, "46": { @@ -744,36 +746,36 @@ }, "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "searchValue": "지역별 관광객 수", - "value": "돋움", + "searchValue": "동영상 플랫폼 이용률", + "value": "굴림", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (지역별 관광객 수)/① 글씨체 (돋움)" + "item": "제목 문구 (동영상 플랫폼 이용률)/① 글씨체 (굴림)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "searchValue": "지역별 관광객 수", - "value": "1200", + "searchValue": "동영상 플랫폼 이용률", + "value": "1400", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (지역별 관광객 수)/② 크기 (1200)" + "item": "제목 문구 (동영상 플랫폼 이용률)/② 크기 (1400)" }, "52": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "option": "b", - "searchValue": "지역별 관광객 수", + "searchValue": "동영상 플랫폼 이용률", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (지역별 관광객 수)/③ 진하게", + "item": "제목 문구 (동영상 플랫폼 이용률)/③ 진하게", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", - "value": "굴림", + "value": "돋움체", "points": 1, "category": "ChartOneAnswer", - "item": "X축/① 글꼴 (굴림)" + "item": "X축/① 글꼴 (돋움체)" }, "54": { "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", @@ -793,10 +795,10 @@ }, "56": { "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", - "value": "굴림", + "value": "돋움체", "points": 1, "category": "ChartOneAnswer", - "item": "Y축/① 글꼴 (굴림)" + "item": "Y축/① 글꼴 (돋움체)" }, "57": { "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", @@ -816,10 +818,10 @@ }, "59": { "chart_xpath": "//c:legend//a:ea/@typeface", - "value": "굴림", + "value": "돋움체", "points": 1, "category": "OneAnswer", - "item": "범례/① 글꼴 (굴림)" + "item": "범례/① 글꼴 (돋움체)" }, "60": { "chart_xpath": "//c:legend//a:defRPr/@sz", diff --git a/DIW_2506C.json b/회차별채점자료/2507/json_채점기준표/DIW_2507C.json similarity index 74% rename from DIW_2506C.json rename to 회차별채점자료/2507/json_채점기준표/DIW_2507C.json index d3b2a3b..cd81c76 100644 --- a/DIW_2506C.json +++ b/회차별채점자료/2507/json_채점기준표/DIW_2507C.json @@ -46,57 +46,57 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "인공지능융합일자리박람회", - "value": "맑은고딕", + "searchValue": "물절약포스터대회", + "value": "견고딕", "points": 1, "category": "OneAnswer", - "item": "문구 (인공지능융합일자리박람회)/① 글씨체 (맑은고딕)" + "item": "문구 (물절약포스터대회)/① 글씨체 (견고딕)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "인공지능융합일자리박람회", - "value": "58,118,152", + "searchValue": "물절약포스터대회", + "value": "233,106,147", "points": 2, "category": "Color", - "item": "문구 (인공지능융합일자리박람회)/② 채우기 : 색상(RGB:58,118,152)" + "item": "문구 (물절약포스터대회)/② 채우기 : 색상(RGB:233,106,147)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "인공지능융합일자리박람회", - "value": "130", + "searchValue": "물절약포스터대회", + "value": "120", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (인공지능융합일자리박람회)/③ 크기-너비 (130 mm)" + "item": "문구 (물절약포스터대회)/③ 크기-너비 (120 mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "인공지능융합일자리박람회", + "searchValue": "물절약포스터대회", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (인공지능융합일자리박람회)/④ 크기-높이 (20 mm)" + "item": "문구 (물절약포스터대회)/④ 크기-높이 (20 mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "인공지능융합일자리박람회", + "searchValue": "물절약포스터대회", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (인공지능융합일자리박람회)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (물절약포스터대회)/⑤ 위치 (글자처럼 취급)" }, "6": { "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "인공지능융합일자리박람회", + "searchValue": "물절약포스터대회", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (인공지능융합일자리박람회)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (물절약포스터대회)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "인공지능융합일자리박람회", + "searchValue": "물절약포스터대회", "value": true, "points": 2, "category": "Boolean", @@ -104,7 +104,7 @@ }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "searchValue": "작", + "searchValue": "물", "value": { "Height": 2800, "Width": 2800 @@ -112,94 +112,94 @@ "tolerance": 200, "points": 1, "category": "TwoLineSize", - "item": "작/① 모양 (2줄)" + "item": "물/① 모양 (2줄)" }, "9": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "작", - "value": "굴림체", + "searchValue": "물", + "value": "궁서체", "points": 1, "category": "FontName", - "item": "작/② 글씨체 (굴림체)" + "item": "물/② 글씨체 (궁서체)" }, "10": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "작", - "value": "17,227,206", + "searchValue": "물", + "value": "242,144,240", "points": 2, "category": "Color", - "item": "작/③ 면색 : 색상(RGB:17,227,206)" + "item": "물/③ 면색 : 색상(RGB:242,144,240)" }, "11": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "searchValue": "작", + "searchValue": "물", "value": "3.0", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "작/④ 본문과의 간격 : 3.0mm" + "item": "물/④ 본문과의 간격 : 3.0mm" }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "구직자와 기업 간의 효과적인 매칭", + "searchValue": "소중한 물 절약 포스터", "value": "BOLD", "points": 2, "category": "FontAttribute", - "item": "문구 (구직자와 기업 간의 효과적인 매칭)/① BOLD" + "item": "문구 (소중한 물 절약 포스터)/① BOLD" }, "13": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "구직자와 기업 간의 효과적인 매칭", + "searchValue": "소중한 물 절약 포스터", "value": "ITALIC", "points": 2, "category": "FontAttribute", - "item": "문구 (구직자와 기업 간의 효과적인 매칭)/② ITALIC" + "item": "문구 (소중한 물 절약 포스터)/② ITALIC" }, "14": { "path": "//CHAR[contains(string(.),'{char1}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()", - "char1": "◈", - "char2": "◈", + "char1": "♠", + "char2": "♠", "char3": "※", "value": 3, "points": 3, "category": "SpecialChar", - "item": "① ◈ , ② ◈ , ③ ※" + "item": "① ♠, ② ♠, ③ ※" }, "15": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "행사안내", - "value": "돋움", + "searchValue": "대회안내", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "문구 (◈ 행사안내 ◈)/① 글씨체 (돋움)" + "item": "문구 (♠ 대회안내 ♠)/① 글씨체 (굴림체)" }, "16": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", - "match_str": "행사안내", + "match_str": "대회안내", "value": "Center", "points": 1, "category": "Align", - "item": "문구 (◈ 행사안내 ◈)/② 정렬 (가운데 정렬)" + "item": "문구 (♠ 대회안내 ♠)/② 정렬 (가운데 정렬)" }, "17": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "대전코엑스 3층 대강당", + "searchValue": "2025년 8월 16일(토) 10시 ~ 16시", "value": "ITALIC", "points": 1, "category": "FontAttribute", - "item": "문구 (대전코엑스 3층 대강당)/① ITALIC" + "item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/① ITALIC" }, "18": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "대전코엑스 3층 대강당", + "searchValue": "2025년 8월 16일(토) 10시 ~ 16시", "value": "UNDERLINE", "points": 1, "category": "FontAttribute", - "item": "문구 (대전코엑스 3층 대강당)/② UNDERLINE" + "item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/② UNDERLINE" }, "19": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", @@ -210,57 +210,57 @@ }, "points": 2, "category": "ParaShape", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)", "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 06. 28.", - "value": "1400", + "searchValue": "2025. 07. 26.", + "value": "1300", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/① 크기 (1400)", + "item": "문구 (2025. 07. 26.)/① 크기 (1300)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 06. 28.", + "searchValue": "2025. 07. 26.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "차세대융합일자리협회", - "value": "궁서체", + "searchValue": "코리아워터협회", + "value": "중고딕", "points": 1, "category": "FontName", - "item": "문구 (차세대융합일자리협회)/① 글씨체 (궁서체)" + "item": "문구 (코리아워터협회)/① 글씨체 (중고딕)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "차세대융합일자리협회", - "value": "2300", + "searchValue": "코리아워터협회", + "value": "2400", "points": 1, "category": "OneAnswer", - "item": "문구 (차세대융합일자리협회)/② 크기 (2300)" + "item": "문구 (코리아워터협회)/② 크기 (2400)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "차세대융합일자리협회", + "searchValue": "코리아워터협회", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (차세대융합일자리협회)/③ 정렬 (가운데 정렬)" + "item": "문구 (코리아워터협회)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "DIAT", - "value": "굴림", + "value": "궁서", "points": 1, "category": "FontName", - "item": "문구 (DIAT)/① 글꼴 (굴림)" + "item": "문구 (DIAT)/① 글꼴 (궁서)" }, "26": { "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", @@ -280,7 +280,7 @@ }, "28": { "path": "//PAGENUM/@FormatType", - "value": "RomanSmall", + "value": "DecagonCircleHanja", "points": 2, "category": "PageNumber", "item": "① 쪽 번호 매기기 (가,나,다 순으로)", @@ -288,6 +288,7 @@ "가,나,다": "HangulSyllable", "1,2,3": "Digit", "갑,을,병": "DecagonCircle", + "甲,乙,丙": "DecagonCircleHanja", "A,B,C": "LatinCapital", "a,b,c": "LatinSmall", "①,②,③": "CircledDigit", @@ -296,7 +297,7 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", - "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "desc": "정답에 맞는 값 value에 입력" }, "desc2": "1, 2페이지 모두 정답이어야 점수 부여" @@ -316,11 +317,11 @@ }, "30": { "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", - "value": "180", - "first_word": "작", + "value": "200", + "first_word": "물", "points": 2, "category": "LineSpacing", - "item": "문제 1 줄간격 180% 설정", + "item": "문제 1 줄간격 200% 설정", "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." } }, @@ -353,89 +354,89 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "인공지능의 영향", - "value": "65", + "searchValue": "댐의 종류", + "value": "45", "points": 2, "category": "mmSize", - "item": "문구 (인공지능의 영향)/① 크기-너비 (65 mm)" + "item": "문구 (댐의 종류)/① 크기-너비 (45 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "인공지능의 영향", + "searchValue": "댐의 종류", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (인공지능의 영향)/② 크기-높이 (12 mm)" + "item": "문구 (댐의 종류)/② 크기-높이 (12 mm)" }, "6": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", - "searchValue": "인공지능의 영향", + "searchValue": "댐의 종류", "value": { "Style": "DoubleSlim", "Width": "283" }, "points": 2, "category": "LineShape", - "item": "문구 (인공지능의 영향)/③ 테두리 : 이중 실선(1.00mm)", + "item": "문구 (댐의 종류)/③ 테두리 : 이중 실선(1.00mm)", "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "인공지능의 영향", - "value": "0", + "searchValue": "댐의 종류", + "value": "50", "points": 2, "category": "OneAnswer", - "item": "문구 (인공지능의 영향)/④ 글상자 모서리 (직각)", + "item": "문구 (댐의 종류)/④ 글상자 모서리 (직각)", "desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "인공지능의 영향", - "value": "239,238,20", + "searchValue": "댐의 종류", + "value": "249,207,27", "points": 2, "category": "Color", - "item": "문구 (인공지능의 영향)/⑤ 채우기 : 색상(RGB:239,238,20)" + "item": "문구 (댐의 종류)/⑤ 채우기 : 색상(RGB:249,207,27)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "인공지능의 영향", + "searchValue": "댐의 종류", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (인공지능의 영향)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (댐의 종류)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "인공지능의 영향", + "searchValue": "댐의 종류", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (인공지능의 영향)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (댐의 종류)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "인공지능의 영향", - "value": "돋움체", + "searchValue": "댐의 종류", + "value": "맑은 고딕", "points": 1, "category": "FontName", - "item": "문구 (인공지능의 영향)/⑧ 글씨체 (돋움체)" + "item": "문구 (댐의 종류)/⑧ 글씨체 (맑은 고딕)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "인공지능의 영향", - "value": "2300", + "searchValue": "댐의 종류", + "value": "1800", "points": 1, "category": "OneAnswer", - "item": "문구 (인공지능의 영향)/⑨ 글씨크기 (2300)", + "item": "문구 (댐의 종류)/⑨ 글씨크기 (1800)", "desc": "1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "인공지능의 영향", + "searchValue": "댐의 종류", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (인공지능의 영향)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (댐의 종류)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", @@ -447,10 +448,10 @@ }, "15": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", - "value": "85", + "value": "80", "points": 2, "category": "mmSize", - "item": "② 크기-너비 (85 mm)" + "item": "② 크기-너비 (80 mm)" }, "16": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", @@ -468,93 +469,94 @@ }, "18": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", - "value": "22", + "value": "24", "points": 2, "category": "mmSize", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)" }, "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 취업시장의 변화", - "value": "궁서", + "searchValue": "1. 댐의 기원", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구① (1. 취업시장의 변화)/① 글씨체 (궁서)" + "item": "문구① (1. 댐의 기원)/① 글씨체 (돋움체)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 취업시장의 변화", + "searchValue": "1. 댐의 기원", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 취업시장의 변화)/② 크기 (12pt)" + "item": "문구① (1. 댐의 기원)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 취업시장의 변화", + "searchValue": "1. 댐의 기원", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 취업시장의 변화)/③ 진하게" + "item": "문구① (1. 댐의 기원)/③ 진하게" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 중장년층의 일자리", - "value": "궁서", + "searchValue": "2. 댐의 종류", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구② (2. 중장년층의 일자리)/① 글씨체 (궁서)" + "item": "문구② (2. 댐의 종류)/① 글씨체 (돋움체)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 중장년층의 일자리", + "searchValue": "2. 댐의 종류", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 중장년층의 일자리)/② 크기 (1200)" + "item": "문구② (2. 댐의 종류)/② 크기 (1200)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 중장년층의 일자리", + "searchValue": "2. 댐의 종류", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 중장년층의 일자리)/③ 진하게" + "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": "디지털 리터러시", + "option": "수문", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (디지털 리터러시)/① 각주 설정 및 문구 입력" + "item": "문구 (수문)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "디지털 기술에 대한 이해와 활용 능력", + "searchValue": "저수지나 수로에 설치하여 수량을 조절하는 문", "value": "굴림", "points": 1, "category": "FontName", - "item": "문구 (디지털 리터러시)/② 글씨체 (굴림)" + "item": "문구 (수문)/② 글씨체 (굴림)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "디지털 기술에 대한 이해와 활용 능력", + "searchValue": "저수지나 수로에 설치하여 수량을 조절하는 문", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (디지털 리터러시)/③ 크기 (9pt)" + "item": "문구 (수문)/③ 크기 (9pt)" }, "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "디지털 기술에 대한 이해와 활용 능력", - "value": "Digit", + "searchValue": "저수지나 수로에 설치하여 수량을 조절하는 문", + "value": "CircledLatinSmall", "points": 2, "category": "OneAnswer", "item": "문구 (전당)/④ 각주 번호모양", "desc": { "가,나,다": "HangulSyllable", + "㉮,㉯,㉰": "CircledHangulSyllable", "1,2,3": "Digit", "갑,을,병": "DecagonCircle", "A,B,C": "LatinCapital", @@ -565,86 +567,87 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", - "甲,乙,丙": "DecagonCircleHanja", + "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", "정답에 맞는 값 value에 입력": "" } }, "29": { - "path": "boolean(//CHAR[contains(text(),'Cooperation')])", - "ignoreWord": "Cooperation", + "path": "boolean(//CHAR[contains(text(),'Landslide')])", + "ignoreWord": "Landslide", "value": true, "points": 3, "category": "Boolean", - "item": "Cooperation/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Landslide/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word": [ - ["양상", "樣相"], - ["확보", "確保"], - ["불균형", "不均衡"], - ["대체", "代替"], - ["창출", "創出"] + ["유적", "遺跡"], + ["축조", "築造"], + ["선구", "先驅"], + ["획기적", "劃期的"], + ["방류", "放流"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 양상(樣相), ② 확보(確保), ③ 불균형(不均衡), ④ 대체(代替), ⑤ 창출(創出)" + "item": "① 유적(遺跡), ② 축조(築造), ③ 선구(先驅), ④ 획기적(劃期的), ⑤ 방류(放流)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'전통산업')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이와더불')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…전손 산업과 신산업 간의…)>'손' → '통' 글자바꿈" + "item": "문구 (…이는 더불어…)>'는' → '와' 글자바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간이연장')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'향을미치')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…경제활동 연장되면서 기간이 60세…)>'연장되면서 / 기간이' 순서바꿈" + "item": "문구 (…크게 미치지 영향을 않을 만큼…)>'미치지' / '영향을' 순서바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "연도별 구직률 현황(%)", - "value": "돋움체", + "searchValue": "국가별 연평균 강수량(단위:밀리미터)", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "제목 문구 (연도별 구직률 현황(%))/① 글씨체 (돋움체)" + "item": "제목 문구 (국가별 연평균 강수량(단위:밀리미터))/① 글씨체 (굴림체)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "연도별 구직률 현황(%)", - "value": "1200", + "searchValue": "국가별 연평균 강수량(단위:밀리미터)", + "value": "1100", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 구직률 현황(%))/② 크기 (1200)" + "item": "제목 문구 (국가별 연평균 강수량(단위:밀리미터))/② 크기 (1100)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "연도별 구직률 현황(%)", + "searchValue": "국가별 연평균 강수량(단위:밀리미터)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (연도별 구직률 현황(%))/③ 진하게" + "item": "제목 문구 (국가별 연평균 강수량(단위:밀리미터))/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "연도별 구직률 현황(%)", + "searchValue": "국가별 연평균 강수량(단위:밀리미터)", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 구직률 현황(%))/④ 정렬 (가운데 정렬)" + "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": "229,183,242", + "value": "179,197,243", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:229,183,242)" + "item": "위쪽 제목 셀/① 색상(RGB:179,197,243)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -673,11 +676,11 @@ "41": { "path": "//TABLE//TEXT/@CharShape", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "value": "굴림체", + "value": "돋움", "points": 1, "category": "TableFontName", "category_tmp": "FontName", - "item": "글자모양/① 글씨체 (굴림체)", + "item": "글자모양/① 글씨체 (돋움)", "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" }, "42": { @@ -705,11 +708,11 @@ }, "45": { "chart_xpath": "", - "chart_type": "꺾은선형", + "chart_type": "묶은 가로 막대형", "value": true, "points": 2, "category": "ChartType", - "item": "① 종류 (꺾은선형)", + "item": "① 종류 (묶은 가로 막대형)", "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" }, "46": { @@ -744,28 +747,28 @@ }, "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "searchValue": "연도별 구직률 현황(%)", + "searchValue": "국가별 연평균 강수량", "value": "궁서체", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 구직률 현황(%))/① 글씨체 (궁서체)" + "item": "제목 문구 (국가별 연평균 강수량)/① 글씨체 (궁서체)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "searchValue": "연도별 구직률 현황(%)", - "value": "1400", + "searchValue": "국가별 연평균 강수량", + "value": "1300", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 구직률 현황(%))/② 크기 (1400)" + "item": "제목 문구 (국가별 연평균 강수량)/② 크기 (1300)" }, "52": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "option": "b", - "searchValue": "연도별 구직률 현황(%)", + "searchValue": "국가별 연평균 강수량", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (연도별 구직률 현황(%))/③ 진하게", + "item": "제목 문구 (국가별 연평균 강수량)/③ 진하게", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { diff --git a/회차별채점자료/2507/json_채점기준표/DIW_2507D.json b/회차별채점자료/2507/json_채점기준표/DIW_2507D.json new file mode 100644 index 0000000..b959436 --- /dev/null +++ b/회차별채점자료/2507/json_채점기준표/DIW_2507D.json @@ -0,0 +1,844 @@ +{ + "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": "249,230,188", + "points": 2, + "category": "Color", + "item": "여/③ 면색 : 색상(RGB:249,230,188)" + }, + "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": "문구 (시원한 바다와 함께하는 해양 스포츠 체험 교실)/① BOLD" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "시원한 바다와 함께하는 해양 스포츠 체험 교실", + "value": "UNDERLINE", + "points": 2, + "category": "FontAttribute", + "item": "문구 (시원한 바다와 함께하는 해양 스포츠 체험 교실)/② UNDERLINE" + }, + "14": { + "path": "//CHAR[contains(string(.),'{char1}')]/text()", + "path2": "//CHAR[contains(string(.),'{char2}')]/text()", + "path3": "//CHAR[contains(string(.),'{char3}')]/text()", + "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(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", + "match_str": "참가안내", + "value": "Center", + "points": 1, + "category": "Align", + "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))/① ITALIC" + }, + "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))/② 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. 07. 26.", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 07. 26.)/① 크기 (1400)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 07. 26.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)" + }, + "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": "문구 (해양스포츠홍보위원회)/② 크기 (2600)" + }, + "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": "① 쪽 번호 매기기 (①,②,③ 순으로)", + "desc1": { + "가,나,다": "HangulSyllable", + "1,2,3": "Digit", + "갑,을,병": "DecagonCircle", + "甲,乙,丙": "DecagonCircleHanja", + "A,B,C": "LatinCapital", + "a,b,c": "LatinSmall", + "①,②,③": "CircledDigit", + "一,二,三": "Ideograph", + "㉠,㉡,㉢": "CircledHangulJamo", + "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", + "i,ii,iii": "RomanSmall", + "I,II,III": "RomanCapital", + "+,++,+++": "UserChar", + "desc": "정답에 맞는 값 value에 입력" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomRight", + "points": 2, + "category": "PageNumber", + "item": "가운데 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight", + "왼쪽 아래": "BottomLeft" + } + }, + "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": "TEXT/COLDEF/@Count", + "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": "문구 (해양 스포츠의 세계)/② 크기-높이 (12 mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", + "searchValue": "해양 스포츠의 세계", + "value": { + "Style": "DoubleSlim", + "Width": "283" + }, + "points": 2, + "category": "LineShape", + "item": "문구 (해양 스포츠의 세계)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt value['Width']에 pt값 입력" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "해양 스포츠의 세계", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/④ 글상자 모서리 (직각)", + "desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" + }, + "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": "문구 (해양 스포츠의 세계)/⑨ 글씨크기 (1800)", + "desc": "1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "해양 스포츠의 세계", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림D.jpg\" 삽입", + "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" + }, + "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. 윈드서핑)/② 크기 (1200)" + }, + "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": { + "가,나,다": "HangulSyllable", + "㉮,㉯,㉰": "CircledHangulSyllable", + "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", + "甲,乙,丙": "DecagonCircleHanja", + "+,++,+++": "UserChar", + "정답에 맞는 값 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": "제목 문구 (종목별 해양 스포츠 참가자 수)/② 크기 (1200)" + }, + "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": "글자모양/② 크기 (1000)" + }, + "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": "ChartOneAnswer", + "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": "제목 문구 (해양 스포츠 참가자 수)/② 크기 (1300)" + }, + "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" + } + } +}