diff --git a/250508_DIW_2504회_C형_TEST.xlsx b/250508_DIW_2504회_C형_TEST.xlsx deleted file mode 100644 index 5e897a9..0000000 Binary files a/250508_DIW_2504회_C형_TEST.xlsx and /dev/null differ diff --git a/250512_DIW_2504회_A형_TEST.xlsx b/250512_DIW_2504회_A형_TEST.xlsx deleted file mode 100644 index 8eb06b5..0000000 Binary files a/250512_DIW_2504회_A형_TEST.xlsx and /dev/null differ diff --git a/250513_DIW_2504회_A형_TEST.xlsx b/250513_DIW_2504회_A형_TEST.xlsx deleted file mode 100644 index ed29204..0000000 Binary files a/250513_DIW_2504회_A형_TEST.xlsx and /dev/null differ diff --git a/250514_DIW_2504회_A형_TEST.xlsx b/250514_DIW_2504회_A형_TEST.xlsx deleted file mode 100644 index 8d23596..0000000 Binary files a/250514_DIW_2504회_A형_TEST.xlsx and /dev/null differ diff --git a/250515_DIW_2504회_A형_TEST.xlsx b/250515_DIW_2504회_A형_TEST.xlsx deleted file mode 100644 index bcea5bd..0000000 Binary files a/250515_DIW_2504회_A형_TEST.xlsx and /dev/null differ diff --git a/250516_DIW_2504회_A형_TEST.xlsx b/250516_DIW_2504회_A형_TEST.xlsx deleted file mode 100644 index 9ce21ce..0000000 Binary files a/250516_DIW_2504회_A형_TEST.xlsx and /dev/null differ diff --git a/250519_DIW_2504회_A형_TEST.xlsx b/250519_DIW_2504회_A형_TEST.xlsx deleted file mode 100644 index b0bb8b6..0000000 Binary files a/250519_DIW_2504회_A형_TEST.xlsx and /dev/null differ diff --git a/250519_DIW_2504회_A형_채점결과.xlsx b/250519_DIW_2504회_A형_채점결과.xlsx index 5da9d37..f29e9f4 100644 Binary files a/250519_DIW_2504회_A형_채점결과.xlsx and b/250519_DIW_2504회_A형_채점결과.xlsx differ diff --git a/250520_DIW_2504회_A형_채점결과.xlsx b/250520_DIW_2504회_A형_채점결과.xlsx new file mode 100644 index 0000000..b37f418 Binary files /dev/null and b/250520_DIW_2504회_A형_채점결과.xlsx differ diff --git a/250520_DIW_2504회_B형_TEST.xlsx b/250520_DIW_2504회_B형_TEST.xlsx new file mode 100644 index 0000000..6b1944e Binary files /dev/null and b/250520_DIW_2504회_B형_TEST.xlsx differ diff --git a/250520_DIW_2504회_B형_채점결과.xlsx b/250520_DIW_2504회_B형_채점결과.xlsx new file mode 100644 index 0000000..b7c2a16 Binary files /dev/null and b/250520_DIW_2504회_B형_채점결과.xlsx differ diff --git a/DIW_2504A_new.json b/DIW_2504A_new.json index e04d5fa..04045c8 100644 --- a/DIW_2504A_new.json +++ b/DIW_2504A_new.json @@ -24,7 +24,7 @@ "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" }, "2": { - "path": "//STYLE[@Name='바탕글']", + "path": "", "value": { "FontName": "바탕", "FontSize": "1000", @@ -304,15 +304,20 @@ "points": 2, "category": "PageNumber", "item": "오른쪽 아래", - "desc": "1, 2페이지 모두 정답이어야 점수 부여" + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } }, "30": { - "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='200'])", + "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='{option}'])", + "option": "200", "value": true, "points": 2, "category": "Boolean", "item": "문제 1 줄간격 200% 설정", - "desc": "1페이지 문단의 줄간격이 200%가 아닌 문단이 있으면 False(감점)" + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)" } }, "2": { @@ -374,7 +379,8 @@ "value": "50", "points": 2, "category": "OneAnswer", - "item": "문구 (클라우드 컴퓨팅)/④ 글상자 모서리 (반원)" + "item": "문구 (클라우드 컴퓨팅)/④ 글상자 모서리 (반원)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", @@ -681,7 +687,7 @@ "item": "글자모양/③ 정렬 (가운데 정렬)" }, "44": { - "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last() or position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "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, @@ -745,12 +751,14 @@ "item": "제목 문구 (클라우드 보안 투자)/② 크기 (13pt)" }, "52": { - "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", "searchValue": "클라우드 보안 투자", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (클라우드 보안 투자)/③ 진하게" + "item": "제목 문구 (클라우드 보안 투자)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { "chart_xpath": "//c:catAx//a:ea/@typeface", diff --git a/DIW_2504B_new.json b/DIW_2504B_new.json new file mode 100644 index 0000000..7e2ec5e --- /dev/null +++ b/DIW_2504B_new.json @@ -0,0 +1,834 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "1": { + "path": "//PAGEMARGIN", + "value": { + "Bottom": 5669, + "Footer": 2834, + "Gutter": 0, + "Header": 2834, + "Left": 5669, + "Right": 5669, + "Top": 5669 + }, + "tolerance": 1, + "points": 4, + "category": "PageSetting", + "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" + }, + "2": { + "path": "", + "value": { + "FontName": "바탕", + "FontSize": "1000", + "Alignment": "Justify", + "LineSpacing": "160" + }, + "points": 4, + "category": "BasicSetting", + "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" + }, + "3": { + "path": "", + "value": null, + "points": 40, + "category": "오타감점", + "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" + } + }, + "1": { + "1": { + "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", + "searchValue": "친환경에너지박람회", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "문구 (친환경에너지박람회)/① 글씨체 (궁서체)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "searchValue": "친환경에너지박람회", + "value": "199,82,82", + "points": 2, + "category": "Color", + "item": "문구 (친환경에너지박람회)/② 채우기 : 색상(RGB:100,170,92)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "친환경에너지박람회", + "value": "110", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (친환경에너지박람회)/③ 크기-너비 (110mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "searchValue": "친환경에너지박람회", + "value": "20", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (친환경에너지박람회)/④ 크기-높이 (20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "친환경에너지박람회", + "value": "true", + "points": 2, + "category": "OneAnswer", + "item": "문구 (친환경에너지박람회)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "친환경에너지박람회", + "value": "Center", + "points": 2, + "category": "OneAnswer", + "item": "문구 (친환경에너지박람회)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "//TEXTART[@Text='{searchValue}']", + "searchValue": "친환경에너지박람회", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (친환경에너지박람회)/⑦ 글맵시모양 (육안확인)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", + "searchValue": "지", + "value": { + "Height": 2800, + "Width": 2800 + }, + "tolerance": 200, + "points": 1, + "category": "TwoLineSize", + "item": "지/① 모양 (2줄)" + }, + "9": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "지", + "value": "궁서", + "points": 1, + "category": "FontName", + "item": "지/② 글씨체 (궁서)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "지", + "value": "58,220,255", + "points": 2, + "category": "Color", + "item": "지/③ 면색 : 색상(RGB:58,220,255)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", + "searchValue": "지", + "value": "3.0", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "지/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "태양광, 풍력, 수소에너지 등 신재생 에너지 기술", + "value": "BOLD", + "points": 2, + "category": "FontAttribute", + "item": "문구 (태양광, 풍력, 수소에너지 등 신재생 에너지 기술)/① 진하게" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "태양광, 풍력, 수소에너지 등 신재생 에너지 기술", + "value": "UNDERLINE", + "points": 2, + "category": "FontAttribute", + "item": "문구 (태양광, 풍력, 수소에너지 등 신재생 에너지 기술)/② 밑줄" + }, + "14": { + "path": "//CHAR[contains(text(),'{char1}')]", + "path2": "//CHAR[contains(text(),'{char2}')]", + "path3": "//CHAR[contains(text(),'{char3}')]", + "char1": "▶", + "char2": "◀", + "char3": "※", + "value": 3, + "points": 3, + "category": "SpecialChar", + "item": "① ▶, ② ◀, ③ ※" + }, + "15": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "행사안내", + "value": "중고딕", + "points": 1, + "category": "FontName", + "item": "문구 (▶ 행사안내 ◀)/① 글씨체 (중고딕)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "행사안내", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (▶ 행사안내 ◀)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구 (블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록)/① 진하게" + }, + "18": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록", + "value": "ITALIC", + "points": 1, + "category": "FontAttribute", + "item": "문구 (블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록)/② 기울임" + }, + "19": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", + "searchValue": "기타사항", + "value": { + "Left": 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. 04. 26.", + "value": "1300", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 04. 26.)/① 크기 (14pt)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 04. 26.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 04. 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": "2700", + "points": 1, + "category": "OneAnswer", + "item": "문구 (친환경에너지발전협의회)/② 크기 (27pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "searchValue": "친환경에너지발전협의회", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (친환경에너지발전협의회)/③ 정렬 (가운데 정렬)" + }, + "25": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "DIAT", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구 (DIAT)/① 글꼴 (굴림)" + }, + "26": { + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "DIAT", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/② 크기 (9pt)" + }, + "27": { + "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", + "searchValue": "DIAT", + "value": "Right", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "value": "HangulSyllable", + "points": 2, + "category": "PageNumber", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "desc1": { + "가,나,다":"HangulSyllable", + "1,2,3":"Digit", + "갑,을,병":"DecagonCircle", + "A,B,C":"LatinCapital", + "①,②,③":"CircledDigit", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomCenter", + "points": 2, + "category": "PageNumber", + "item": "가운데 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } + }, + "30": { + "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='{option}'])", + "option": "180", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문제 1 줄간격 180% 설정", + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)" + } + }, + "2": { + "1": { + "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside", + "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]", + "value": { + "header_inside": true, + "all_double_slim": true + }, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "2": { + "path": "count(//SECTION)>1", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//COLDEF/@Count", + "value": "2", + "points": 3, + "category": "OneAnswer", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "친환경 에너지", + "value": "50", + "points": 2, + "category": "mmSize", + "item": "문구 (친환경 에너지)/① 크기-너비 (50mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "친환경 에너지", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (친환경 에너지)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "친환경 에너지", + "value": [ "DoubleSlim", "283" ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (친환경 에너지)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "친환경 에너지", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (친환경 에너지)/④ 글상자 모서리 (둥근모양)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "친환경 에너지", + "value": "53,135,145", + "points": 2, + "category": "Color", + "item": "문구 (친환경 에너지)/⑤ 채우기 : 색상(RGB:53,135,145)" + }, + "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": "문구 (친환경 에너지)/⑧ 글씨체 (궁서체)", + "desc": "폰트 '견고딕'과 '중고딕'은 한글프로그램 내부적으로 '한양견고딕', '한양중고딕'처리 되어서 프로그램 내부에서 수험자 답변에서 '한양'을 제거하는 과정을 거침" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "친환경 에너지", + "value": "2000", + "points": 1, + "category": "OneAnswer", + "item": "문구 (친환경 에너지)/⑨ 글씨크기 (20pt)", + "desc":"1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "친환경 에너지", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (친환경 에너지)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "85", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (85mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "40", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (40mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@VertOffset", + "value": "24", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 친환경 에너지 개요", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구① (1. 친환경 에너지 개요)/① 글씨체 (돋움)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 친환경 에너지 개요", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구① (1. 친환경 에너지 개요)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 친환경 에너지 개요", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 친환경 에너지 개요)/③ 진하게" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 신재생 에너지", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구② (2. 신재생 에너지)/① 글씨체 (돋움)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 신재생 에너지", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구② (2. 신재생 에너지)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 신재생 에너지", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 신재생 에너지)/③ 진하게" + }, + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{searchValue}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{searchValue}') + 1) = '{searchValue}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "searchValue": "태양전지", + "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": "CircledHangulJamo", + "points": 2, + "category": "OneAnswer", + "item": "문구 (태양전지)/④ 각주 번호모양", + "desc": { + "가,나,다":"HangulSyllable", + "1,2,3":"Digit", + "갑,을,병":"DecagonCircle", + "A,B,C":"LatinCapital", + "①,②,③":"CircledDigit", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + } + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Campaign')])", + "ignoreWord": "Campaign", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Campaign/영단어 미입력, 대소문자/오타 시 전체 감점", + "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": "202,86,167", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:202,86,167)" + }, + "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": "OneAnswer", + "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": "OneAnswer", + "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": "OneAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "AVG", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "chart_xpath": "", + "chart_type": "꺾은선형", + "value": true, + "points": 2, + "category": "ChartType", + "item": "① 종류 (꺾은선형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (띄어쓰기 처리됨)" + }, + "46": { + "chart_xpath": "//c:valAx/c:majorTickMark/@val", + "value": "out", + "points": 2, + "category": "OneAnswer", + "item": "② 값 축 주 눈금선", + "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "③ 크기-너비 (80mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "④ 크기-높이 (80mm)" + }, + "49": { + "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", + "value": true, + "points": 2, + "category": "Boolean", + "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)", + "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리" + }, + "50": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "searchValue": "친환경 에너지 성장률", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (친환경 에너지 성장률)/① 글씨체 (궁서체)" + }, + "51": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "searchValue": "친환경 에너지 성장률", + "value": "1300", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (친환경 에너지 성장률)/② 크기 (13pt)" + }, + "52": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", + "searchValue": "친환경 에너지 성장률", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (친환경 에너지 성장률)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "53": { + "chart_xpath": "//c:catAx//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "OneAnswer", + "item": "X축/① 글꼴 (바탕)" + }, + "54": { + "chart_xpath": "//c:catAx//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "chart_xpath": "//c:catAx//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "X축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "56": { + "chart_xpath": "//c:valAx//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "OneAnswer", + "item": "Y축/① 글꼴 (바탕)" + }, + "57": { + "chart_xpath": "//c:valAx//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "chart_xpath": "//c:valAx//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "Y축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + + }, + "59": { + "chart_xpath": "//c:legend//a:ea/@typeface", + "value": "바탕", + "points": 1, + "category": "OneAnswer", + "item": "범례/① 글꼴 (바탕)" + }, + "60": { + "chart_xpath": "//c:legend//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "chart_xpath": "//c:legend//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "범례/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + } + } +} \ No newline at end of file diff --git a/DIW_2504_2A.json b/DIW_2504_2A.json deleted file mode 100644 index e6d409e..0000000 --- a/DIW_2504_2A.json +++ /dev/null @@ -1,863 +0,0 @@ -{ - "0": { - "0": { - "path": "", - "path2": "", - "points": 0, - "category": "파일저장", - "item": "파일명 (수검번호.hwp/hwpx)" - }, - "1": { - "path": "boolean(//PAGEMARGIN[(@Bottom='5668'or @Bottom='5669') and (@Footer='2834' or @Footer='2835') and @Gutter='0' and (@Header='2834' or @Header='2835') and (@Left='5668' or @Left='5669') and (@Right='5668' or @Right='5669') and (@Top='5668' or @Top='5669')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "용지설정", - "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" - }, - "2": { - "path": "boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "기본설정", - "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" - }, - "3": { - "path": "", - "path2": null, - "searchValue": null, - "value": null, - "points": 40, - "category": "오타감점", - "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" - } - }, - "1": { - "1": { - "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "궁서", - "points": 1, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)" - }, - "2": { - "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "6072932", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)" - }, - "3": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": 28346, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)" - }, - "4": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": 5669, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)" - }, - "5": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "true", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)" - }, - "6": { - "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "Center", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)" - }, - "7": { - "path": "boolean(//TEXTART[@Text='{searchValue}'])", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": true, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)" - }, - "8": { - "path": "boolean(//RECTANGLE[.//CHAR[text()='자']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])", - "path2": null, - "searchValue": null, - "value": true, - "points": 1, - "category": "문단첫글자장식", - "item": "자/① 모양 (2줄)" - }, - "9": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='자']]/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": null, - "value": "맑은 고딕", - "points": 1, - "category": "문단첫글자장식", - "item": "자/② 글씨체 (맑은 고딕)" - }, - "10": { - "path": "//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": null, - "value": "9537333", - "points": 2, - "category": "문단첫글자장식", - "item": "자/③ 면색 : 색상(RGB:105,155,55)" - }, - "11": { - "path": "//RECTANGLE[.//CHAR[text()='자']]//OUTSIDEMARGIN/@Right", - "path2": null, - "searchValue": null, - "value": "850", - "points": 2, - "category": "문단첫글자장식", - "item": "자/④ 본문과의 간격 : 3.0mm" - }, - "12": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", - "path2": null, - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": true, - "points": 2, - "category": "글꼴 속성", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 기울임" - }, - "13": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", - "path2": null, - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": true, - "points": 2, - "category": "글꼴 속성", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄" - }, - "14": { - "path": "count(//CHAR[contains(text(),'■')]) + count(//CHAR[contains(text(),'※')])", - "path2": "string-length(//CHAR[contains(text(),'■')]) - string-length(translate(//CHAR[contains(text(),'■')], '■', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))", - "searchValue": null, - "value": 3, - "points": 3, - "category": "특수문자", - "item": "① ■, ② ■, ③ ※" - }, - "15": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "행사안내", - "value": "돋움", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (■ 행사안내 ■)/① 글씨체 (돋움)" - }, - "16": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "행사안내", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)" - }, - "17": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", - "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", - "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": true, - "points": 1, - "category": "Hyperlink", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 진하게" - }, - "18": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", - "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", - "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": true, - "points": 1, - "category": "Hyperlink", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄" - }, - "19": { - "path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)", - "path2": null, - "searchValue": "기타사항", - "value": true, - "points": 2, - "category": "문단모양", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)" - }, - "20": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "2025. 03. 22.", - "value": 1300, - "points": 1, - "category": "글꼴 속성", - "item": "문구 (2025. 03. 22.)/① 크기 (13pt)" - }, - "21": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "2025. 03. 22.", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)" - }, - "22": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "한국고건축협회", - "value": "궁서", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/① 글씨체 (궁서)" - }, - "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "한국고건축협회", - "value": 2400, - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/② 크기 (24pt)" - }, - "24": { - "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "한국고건축협회", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)" - }, - "25": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "DIAT", - "value": "굴림", - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/① 글꼴 (굴림)" - }, - "26": { - "path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "DIAT", - "value": 900, - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/② 크기 (9pt)" - }, - "27": { - "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "DIAT", - "value": "Right", - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" - }, - "28": { - "path": "//PAGENUM/@FormatType", - "path2": null, - "searchValue": null, - "value": "HangulSyllable", - "points": 2, - "category": "쪽번호", - "item": "① 쪽 번호 매기기 (가,나,다 순으로)" - }, - "29": { - "path": "//PAGENUM/@Pos", - "path2": null, - "searchValue": null, - "value": "BottomCenter", - "points": 2, - "category": "쪽번호", - "item": "② 가운데 아래" - }, - "30": { - "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "줄간격", - "item": "문제 1 줄간격 180% 설정" - } - }, - "2": { - "1": { - "path": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "쪽 테두리", - "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" - }, - "2": { - "path": "count(//SECTION)>1", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "다단", - "item": "① 구역나누기" - }, - "3": { - "path": "//COLDEF/@Count>1", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "다단", - "item": "② 다단 2단" - }, - "4": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 19842, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/① 크기-너비 (70mm)" - }, - "5": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 3401, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/② 크기-높이 (12mm)" - }, - "6": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "DoubleSlim", - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/③ 테두리 (이중실선(1.00mm))" - }, - "7": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 20, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/④ 글상자 모서리 (반원)" - }, - "8": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "12704995", - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑤ 채우기 : 색상(RGB:53,135,145)" - }, - "9": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "true", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑥ 글상자 위치 (글자처럼 취급)" - }, - "10": { - "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "Center", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑦ 글상자 정렬 (가운데 정렬)" - }, - "11": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "한양견고딕", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑧ 글씨체 (견고딕)" - }, - "12": { - "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": true, - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑨ 글씨크기 (20pt)" - }, - "13": { - "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "Center", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑩ 정렬 (가운데 정렬)" - }, - "14": { - "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", - "path2": null, - "searchValue": "원본 그림의 이름: 그림", - "value": true, - "points": 2, - "category": "그림삽입", - "item": "① 파일명 \"그림A.jpg\" 삽입" - }, - "15": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": null, - "value": 24094, - "points": 2, - "category": "그림삽입", - "item": "② 크기-너비 (85mm)" - }, - "16": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": null, - "value": 11338, - "points": 2, - "category": "그림삽입", - "item": "③ 크기-높이 (40mm)" - }, - "17": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset", - "path2": null, - "searchValue": null, - "value": 0, - "points": 2, - "category": "그림삽입", - "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" - }, - "18": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", - "path2": null, - "searchValue": null, - "value": 6236, - "points": 2, - "category": "그림삽입", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)" - }, - "19": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "1. 한옥", - "value": "돋움", - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/① 글씨체 (돋움)" - }, - "20": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "1. 한옥", - "value": 1200, - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/② 크기 (12pt)" - }, - "21": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "1. 한옥", - "value": true, - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/③ 진하게" - }, - "22": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": "돋움", - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/① 글씨체 (돋움)" - }, - "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": 1200, - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/② 크기 (12pt)" - }, - "24": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": true, - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/③ 진하게" - }, - "25": { - "path": "boolean(//CHAR[contains(text(),'기초')]/ancestor::TEXT/FOOTNOTE/descendant::CHAR)", - "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('기초') + 1) = '기초']/following-sibling::FOOTNOTE/descendant::CHAR)", - "searchValue": null, - "value": true, - "points": 2, - "category": "각주", - "item": "문구 (기초)/① 각주 설정 및 문구 입력" - }, - "26": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": "한양중고딕", - "points": 1, - "category": "각주", - "item": "문구 (기초)/② 글씨체 (한양중고딕)" - }, - "27": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": 900, - "points": 1, - "category": "각주", - "item": "문구 (기초)/③ 크기 (9pt)" - }, - "28": { - "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": "CircledDigit", - "points": 2, - "category": "각주", - "item": "문구 (기초)/④ 각주 번호모양" - }, - "29": { - "path": "boolean(//CHAR[contains(text(),'cornerstone')])", - "path2": null, - "ignoreWord": "cornerstone", - "value": true, - "points": 3, - "category": "영단어", - "item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점" - }, - "30": { - "path": "(count(//CHAR[contains(text(),'한옥')][contains(text(),'韓屋')])+count(//CHAR[contains(text(),'사계절')][contains(text(),'四季節')])+count(//CHAR[contains(text(),'거주')][contains(text(),'居住')])+count(//CHAR[contains(text(),'구조')][contains(text(),'構造')])+count(//CHAR[contains(text(),'골격')][contains(text(),'骨格')]))*2", - "path2": null, - "searchValue": null, - "value": 10, - "points": 10, - "category": "한자", - "item": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)" - }, - "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'철의추운')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "편집", - "item": "문구 (…더운 날씨와 겨울철이 추운…)/\"이\" → \"의\" 글자바꿈" - }, - "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'돌과마루')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "편집", - "item": "문구 (…대비해 마루를 온돌과 갖고…)/\"마루를\" / \"온돌과\" 순서바꿈" - }, - "33": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "궁서", - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (궁서)" - }, - "34": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1200, - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/② 크기 (12pt)" - }, - "35": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": true, - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" - }, - "36": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "Center", - "points": 1, - "category": "표", - "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='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", - "searchValue": null, - "value": "7629528", - "points": 2, - "category": "표", - "item": "위쪽 제목 셀/① 색상(RGB:216,106,116)" - }, - "38": { - "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": null, - "value": true, - "points": 1, - "category": "표", - "item": "위쪽 제목 셀/② 진하게" - }, - "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='2']/@BorderFill]/BOTTOMBORDER/@Type", - "searchValue": null, - "value": "DoubleSlim", - "points": 2, - "category": "표", - "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='2']/@BorderFill]/BOTTOMBORDER/@Width", - "searchValue": null, - "value": "0.5mm", - "points": 2, - "category": "표", - "item": "제목 셀 아래선/② 0.5mm" - }, - "41": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "표", - "item": "글자모양/① 글씨체 (굴림)" - }, - "42": { - "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": null, - "value": 1000, - "points": 1, - "category": "표", - "item": "글자모양/② 크기 (10pt)" - }, - "43": { - "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", - "path2": null, - "searchValue": null, - "value": "Center", - "points": 1, - "category": "표", - "item": "글자모양/③ 정렬 (가운데 정렬)" - }, - "44": { - "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]])", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "표", - "item": "블록계산식/평균" - }, - "45": { - "path": "boolean(//c:lineChart/c:grouping/@val='standard')", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "chart_xml", - "item": "① 종류 (묶은세로막대형)" - }, - "46": { - "path": "//c:valAx/c:majorTickMark/@val", - "path2": null, - "searchValue": null, - "value": "out", - "points": 2, - "category": "chart_xml", - "item": "② 값 축 주 눈금선" - }, - "47": { - "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", - "path2": null, - "searchValue": null, - "value": 22677, - "points": 2, - "category": "차트", - "item": "③ 크기-너비 (80mm)" - }, - "48": { - "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", - "path2": null, - "searchValue": null, - "value": 25511, - "points": 2, - "category": "차트", - "item": "④ 크기-높이 (90mm)" - }, - "49": { - "path": "//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='평균'])", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "chart_xml", - "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" - }, - "50": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "굴림체", - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (굴림체)" - }, - "51": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1300, - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/② 크기 (13pt)" - }, - "52": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" - }, - "53": { - "path": "//c:catAx//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "X축/① 글꼴 (굴림)" - }, - "54": { - "path": "//c:catAx//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "X축/② 크기 (9pt)" - }, - "55": { - "path": "//c:catAx//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "X축/③ 기울임" - }, - "56": { - "path": "//c:valAx//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "Y축/① 글꼴 (굴림)" - }, - "57": { - "path": "//c:valAx//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "Y축/② 크기 (9pt)" - }, - "58": { - "path": "//c:valAx//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "Y축/③ 기울임" - }, - "59": { - "path": "//c:legend//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "범례/① 글꼴 (굴림)" - }, - "60": { - "path": "//c:legend//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "범례/② 크기 (9pt)" - }, - "61": { - "path": "//c:legend//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "범례/③ 기울임" - } - } -} \ No newline at end of file diff --git a/DIW_2504_2_A_new.json b/DIW_2504_2_A_new.json deleted file mode 100644 index ce4dc92..0000000 --- a/DIW_2504_2_A_new.json +++ /dev/null @@ -1,314 +0,0 @@ -{ - "0": { - "0": { - "path": "", - "path2": "", - "points": 0, - "category": "파일저장", - "item": "파일명 (수검번호.hwp/hwpx)" - }, - "1": { - "path": "//PAGEMARGIN", - "value": { - "Bottom": 5669, - "Footer": 2834, - "Gutter": 0, - "Header": 2834, - "Left": 5669, - "Right": 5669, - "Top": 5669 - }, - "tolerance": 1, - "points": 4, - "category": "PageSetting", - "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" - }, - "2": { - "path": "//STYLE[@Name='바탕글']", - "value": { - "FontName": "바탕", - "FontSize": "1000", - "Alignment": "Justify", - "LineSpacing": "160" - }, - "points": 4, - "category": "BasicSetting", - "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" - }, - "3": { - "path": "", - "searchValue": null, - "value": null, - "points": 40, - "category": "오타감점", - "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" - } - }, - "1": { - "1": { - "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "한옥마을사생대회안내", - "value": "궁서", - "points": 1, - "category": "SingleAnswer", - "item": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)" - }, - "2": { - "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "한옥마을사생대회안내", - "value": "100,170,92", - "points": 2, - "category": "Color", - "item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)" - }, - "3": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "한옥마을사생대회안내", - "value": "28346", - "points": 2, - "category": "SingleAnswer", - "item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)" - }, - "4": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "한옥마을사생대회안내", - "value": "5669", - "points": 2, - "category": "SingleAnswer", - "item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)" - }, - "5": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "한옥마을사생대회안내", - "value": "true", - "points": 2, - "category": "SingleAnswer", - "item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)" - }, - "6": { - "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "한옥마을사생대회안내", - "value": "Center", - "points": 2, - "category": "SingleAnswer", - "item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)" - }, - "7": { - "path": "//TEXTART[@Text='{searchValue}']", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": true, - "points": 2, - "category": "Boolean", - "item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)" - }, - "8": { - "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "path2": null, - "searchValue": "자", - "value": { - "Height": 2800, - "Width": 2800 - }, - "tolerance": 200, - "points": 1, - "category": "TwoLineSize", - "item": "자/① 모양 (2줄)" - }, - "9": { - "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "path2": null, - "searchValue": "자", - "value": "맑은 고딕", - "points": 1, - "category": "FontName", - "item": "자/② 글씨체 (맑은 고딕)" - }, - "10": { - "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": "자", - "value": "53,135,145", - "points": 2, - "category": "Color", - "item": "자/③ 면색 : 색상(RGB:53,135,145)" - }, - "11": { - "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "path2": null, - "searchValue": "자", - "value": "850", - "points": 2, - "category": "SingleAnswer", - "item": "자/④ 본문과의 간격 : 3.0mm" - }, - "12": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "path2": null, - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": "BOLD", - "points": 2, - "category": "FontAttribute", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 진하게" - }, - "13": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": "UNDERLINE", - "points": 2, - "category": "FontAttribute", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄" - }, - "14": { - "path": "//CHAR[contains(text(),'{char1}')]", - "path2": "//CHAR[contains(text(),'{char2}')]", - "char1": "■", - "char2": "※", - "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": "SingleAnswer", - "item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)" - }, - "17": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": "ITALIC", - "points": 1, - "category": "FontAttribute", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 기울임" - }, - "18": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": "UNDERLINE", - "points": 1, - "category": "FontAttribute", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄" - }, - "19": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", - "searchValue": "기타사항", - "value": { - "Left": 15, - "Indent": 12 - }, - "points": 2, - "category": "ParaShape", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)", - "desc": "내부적으로 내어쓰기는 음수값" - }, - "20": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 03. 22.", - "value": "1300", - "points": 1, - "category": "SingleAnswer", - "item": "문구 (2025. 03. 22.)/① 크기 (13pt)" - }, - "21": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 03. 22.", - "value": "Center", - "points": 1, - "category": "SingleAnswer", - "item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)" - }, - "22": { - "path": "//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape", - "searchValue": "한국고건축협회", - "value": "궁서", - "points": 1, - "category": "FontName", - "item": "문구 (한국고건축협회)/① 글씨체 (궁서)" - }, - "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "searchValue": "한국고건축협회", - "value": "2400", - "points": 1, - "category": "SingleAnswer", - "item": "문구 (한국고건축협회)/② 크기 (24pt)" - }, - "24": { - "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "한국고건축협회", - "value": "Center", - "points": 1, - "category": "SingleAnswer", - "item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)" - }, - "25": { - "path": "//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape", - "searchValue": "DIAT", - "value": "굴림", - "points": 1, - "category": "FontName", - "item": "문구 (DIAT)/① 글꼴 (굴림)" - }, - "26": { - "path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "searchValue": "DIAT", - "value": "900", - "points": 1, - "category": "SingleAnswer", - "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": "SingleAnswer", - "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" - }, - "28": { - "path": "//PAGENUM/@FormatType", - "value": "HangulSyllable", - "points": 2, - "category": "SingleAnswer", - "item": "① 쪽 번호 매기기 (가,나,다 순으로)" - }, - "29": { - "path": "//PAGENUM/@Pos", - "value": "BottomCenter", - "points": 2, - "category": "SingleAnswer", - "item": "② 가운데 아래" - }, - "30": { - "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])", - "value": true, - "points": 2, - "category": "Boolean", - "item": "문제 1 줄간격 180% 설정", - "desc": "1페이지 문단의 줄간격이 180%가 아닌 문단이 있으면 False(감점)" - } - }, - "2": { - "1": { - "path": "//SECTION[2]//PAGEBORDERFILL[@Type='Both' or @Type='Even']", - "path2": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')", - "value": true, - "points": 4, - "category": "PageBorder", - "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" - }, - "61": {} - } -} \ No newline at end of file diff --git a/DIW_2504_3B.json b/DIW_2504_3B.json deleted file mode 100644 index e6d409e..0000000 --- a/DIW_2504_3B.json +++ /dev/null @@ -1,863 +0,0 @@ -{ - "0": { - "0": { - "path": "", - "path2": "", - "points": 0, - "category": "파일저장", - "item": "파일명 (수검번호.hwp/hwpx)" - }, - "1": { - "path": "boolean(//PAGEMARGIN[(@Bottom='5668'or @Bottom='5669') and (@Footer='2834' or @Footer='2835') and @Gutter='0' and (@Header='2834' or @Header='2835') and (@Left='5668' or @Left='5669') and (@Right='5668' or @Right='5669') and (@Top='5668' or @Top='5669')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "용지설정", - "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" - }, - "2": { - "path": "boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "기본설정", - "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" - }, - "3": { - "path": "", - "path2": null, - "searchValue": null, - "value": null, - "points": 40, - "category": "오타감점", - "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" - } - }, - "1": { - "1": { - "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "궁서", - "points": 1, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)" - }, - "2": { - "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "6072932", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)" - }, - "3": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": 28346, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)" - }, - "4": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": 5669, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)" - }, - "5": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "true", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)" - }, - "6": { - "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "Center", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)" - }, - "7": { - "path": "boolean(//TEXTART[@Text='{searchValue}'])", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": true, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)" - }, - "8": { - "path": "boolean(//RECTANGLE[.//CHAR[text()='자']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])", - "path2": null, - "searchValue": null, - "value": true, - "points": 1, - "category": "문단첫글자장식", - "item": "자/① 모양 (2줄)" - }, - "9": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='자']]/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": null, - "value": "맑은 고딕", - "points": 1, - "category": "문단첫글자장식", - "item": "자/② 글씨체 (맑은 고딕)" - }, - "10": { - "path": "//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": null, - "value": "9537333", - "points": 2, - "category": "문단첫글자장식", - "item": "자/③ 면색 : 색상(RGB:105,155,55)" - }, - "11": { - "path": "//RECTANGLE[.//CHAR[text()='자']]//OUTSIDEMARGIN/@Right", - "path2": null, - "searchValue": null, - "value": "850", - "points": 2, - "category": "문단첫글자장식", - "item": "자/④ 본문과의 간격 : 3.0mm" - }, - "12": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", - "path2": null, - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": true, - "points": 2, - "category": "글꼴 속성", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 기울임" - }, - "13": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", - "path2": null, - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": true, - "points": 2, - "category": "글꼴 속성", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄" - }, - "14": { - "path": "count(//CHAR[contains(text(),'■')]) + count(//CHAR[contains(text(),'※')])", - "path2": "string-length(//CHAR[contains(text(),'■')]) - string-length(translate(//CHAR[contains(text(),'■')], '■', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))", - "searchValue": null, - "value": 3, - "points": 3, - "category": "특수문자", - "item": "① ■, ② ■, ③ ※" - }, - "15": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "행사안내", - "value": "돋움", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (■ 행사안내 ■)/① 글씨체 (돋움)" - }, - "16": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "행사안내", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)" - }, - "17": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", - "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", - "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": true, - "points": 1, - "category": "Hyperlink", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 진하게" - }, - "18": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", - "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", - "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": true, - "points": 1, - "category": "Hyperlink", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄" - }, - "19": { - "path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)", - "path2": null, - "searchValue": "기타사항", - "value": true, - "points": 2, - "category": "문단모양", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)" - }, - "20": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "2025. 03. 22.", - "value": 1300, - "points": 1, - "category": "글꼴 속성", - "item": "문구 (2025. 03. 22.)/① 크기 (13pt)" - }, - "21": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "2025. 03. 22.", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)" - }, - "22": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "한국고건축협회", - "value": "궁서", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/① 글씨체 (궁서)" - }, - "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "한국고건축협회", - "value": 2400, - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/② 크기 (24pt)" - }, - "24": { - "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "한국고건축협회", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)" - }, - "25": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "DIAT", - "value": "굴림", - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/① 글꼴 (굴림)" - }, - "26": { - "path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "DIAT", - "value": 900, - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/② 크기 (9pt)" - }, - "27": { - "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "DIAT", - "value": "Right", - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" - }, - "28": { - "path": "//PAGENUM/@FormatType", - "path2": null, - "searchValue": null, - "value": "HangulSyllable", - "points": 2, - "category": "쪽번호", - "item": "① 쪽 번호 매기기 (가,나,다 순으로)" - }, - "29": { - "path": "//PAGENUM/@Pos", - "path2": null, - "searchValue": null, - "value": "BottomCenter", - "points": 2, - "category": "쪽번호", - "item": "② 가운데 아래" - }, - "30": { - "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "줄간격", - "item": "문제 1 줄간격 180% 설정" - } - }, - "2": { - "1": { - "path": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "쪽 테두리", - "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" - }, - "2": { - "path": "count(//SECTION)>1", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "다단", - "item": "① 구역나누기" - }, - "3": { - "path": "//COLDEF/@Count>1", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "다단", - "item": "② 다단 2단" - }, - "4": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 19842, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/① 크기-너비 (70mm)" - }, - "5": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 3401, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/② 크기-높이 (12mm)" - }, - "6": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "DoubleSlim", - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/③ 테두리 (이중실선(1.00mm))" - }, - "7": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 20, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/④ 글상자 모서리 (반원)" - }, - "8": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "12704995", - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑤ 채우기 : 색상(RGB:53,135,145)" - }, - "9": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "true", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑥ 글상자 위치 (글자처럼 취급)" - }, - "10": { - "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "Center", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑦ 글상자 정렬 (가운데 정렬)" - }, - "11": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "한양견고딕", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑧ 글씨체 (견고딕)" - }, - "12": { - "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": true, - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑨ 글씨크기 (20pt)" - }, - "13": { - "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "Center", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑩ 정렬 (가운데 정렬)" - }, - "14": { - "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", - "path2": null, - "searchValue": "원본 그림의 이름: 그림", - "value": true, - "points": 2, - "category": "그림삽입", - "item": "① 파일명 \"그림A.jpg\" 삽입" - }, - "15": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": null, - "value": 24094, - "points": 2, - "category": "그림삽입", - "item": "② 크기-너비 (85mm)" - }, - "16": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": null, - "value": 11338, - "points": 2, - "category": "그림삽입", - "item": "③ 크기-높이 (40mm)" - }, - "17": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset", - "path2": null, - "searchValue": null, - "value": 0, - "points": 2, - "category": "그림삽입", - "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" - }, - "18": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", - "path2": null, - "searchValue": null, - "value": 6236, - "points": 2, - "category": "그림삽입", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)" - }, - "19": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "1. 한옥", - "value": "돋움", - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/① 글씨체 (돋움)" - }, - "20": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "1. 한옥", - "value": 1200, - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/② 크기 (12pt)" - }, - "21": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "1. 한옥", - "value": true, - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/③ 진하게" - }, - "22": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": "돋움", - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/① 글씨체 (돋움)" - }, - "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": 1200, - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/② 크기 (12pt)" - }, - "24": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": true, - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/③ 진하게" - }, - "25": { - "path": "boolean(//CHAR[contains(text(),'기초')]/ancestor::TEXT/FOOTNOTE/descendant::CHAR)", - "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('기초') + 1) = '기초']/following-sibling::FOOTNOTE/descendant::CHAR)", - "searchValue": null, - "value": true, - "points": 2, - "category": "각주", - "item": "문구 (기초)/① 각주 설정 및 문구 입력" - }, - "26": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": "한양중고딕", - "points": 1, - "category": "각주", - "item": "문구 (기초)/② 글씨체 (한양중고딕)" - }, - "27": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": 900, - "points": 1, - "category": "각주", - "item": "문구 (기초)/③ 크기 (9pt)" - }, - "28": { - "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": "CircledDigit", - "points": 2, - "category": "각주", - "item": "문구 (기초)/④ 각주 번호모양" - }, - "29": { - "path": "boolean(//CHAR[contains(text(),'cornerstone')])", - "path2": null, - "ignoreWord": "cornerstone", - "value": true, - "points": 3, - "category": "영단어", - "item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점" - }, - "30": { - "path": "(count(//CHAR[contains(text(),'한옥')][contains(text(),'韓屋')])+count(//CHAR[contains(text(),'사계절')][contains(text(),'四季節')])+count(//CHAR[contains(text(),'거주')][contains(text(),'居住')])+count(//CHAR[contains(text(),'구조')][contains(text(),'構造')])+count(//CHAR[contains(text(),'골격')][contains(text(),'骨格')]))*2", - "path2": null, - "searchValue": null, - "value": 10, - "points": 10, - "category": "한자", - "item": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)" - }, - "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'철의추운')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "편집", - "item": "문구 (…더운 날씨와 겨울철이 추운…)/\"이\" → \"의\" 글자바꿈" - }, - "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'돌과마루')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "편집", - "item": "문구 (…대비해 마루를 온돌과 갖고…)/\"마루를\" / \"온돌과\" 순서바꿈" - }, - "33": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "궁서", - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (궁서)" - }, - "34": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1200, - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/② 크기 (12pt)" - }, - "35": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": true, - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" - }, - "36": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "Center", - "points": 1, - "category": "표", - "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='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", - "searchValue": null, - "value": "7629528", - "points": 2, - "category": "표", - "item": "위쪽 제목 셀/① 색상(RGB:216,106,116)" - }, - "38": { - "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": null, - "value": true, - "points": 1, - "category": "표", - "item": "위쪽 제목 셀/② 진하게" - }, - "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='2']/@BorderFill]/BOTTOMBORDER/@Type", - "searchValue": null, - "value": "DoubleSlim", - "points": 2, - "category": "표", - "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='2']/@BorderFill]/BOTTOMBORDER/@Width", - "searchValue": null, - "value": "0.5mm", - "points": 2, - "category": "표", - "item": "제목 셀 아래선/② 0.5mm" - }, - "41": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "표", - "item": "글자모양/① 글씨체 (굴림)" - }, - "42": { - "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": null, - "value": 1000, - "points": 1, - "category": "표", - "item": "글자모양/② 크기 (10pt)" - }, - "43": { - "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", - "path2": null, - "searchValue": null, - "value": "Center", - "points": 1, - "category": "표", - "item": "글자모양/③ 정렬 (가운데 정렬)" - }, - "44": { - "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]])", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "표", - "item": "블록계산식/평균" - }, - "45": { - "path": "boolean(//c:lineChart/c:grouping/@val='standard')", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "chart_xml", - "item": "① 종류 (묶은세로막대형)" - }, - "46": { - "path": "//c:valAx/c:majorTickMark/@val", - "path2": null, - "searchValue": null, - "value": "out", - "points": 2, - "category": "chart_xml", - "item": "② 값 축 주 눈금선" - }, - "47": { - "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", - "path2": null, - "searchValue": null, - "value": 22677, - "points": 2, - "category": "차트", - "item": "③ 크기-너비 (80mm)" - }, - "48": { - "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", - "path2": null, - "searchValue": null, - "value": 25511, - "points": 2, - "category": "차트", - "item": "④ 크기-높이 (90mm)" - }, - "49": { - "path": "//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='평균'])", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "chart_xml", - "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" - }, - "50": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "굴림체", - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (굴림체)" - }, - "51": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1300, - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/② 크기 (13pt)" - }, - "52": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" - }, - "53": { - "path": "//c:catAx//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "X축/① 글꼴 (굴림)" - }, - "54": { - "path": "//c:catAx//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "X축/② 크기 (9pt)" - }, - "55": { - "path": "//c:catAx//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "X축/③ 기울임" - }, - "56": { - "path": "//c:valAx//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "Y축/① 글꼴 (굴림)" - }, - "57": { - "path": "//c:valAx//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "Y축/② 크기 (9pt)" - }, - "58": { - "path": "//c:valAx//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "Y축/③ 기울임" - }, - "59": { - "path": "//c:legend//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "범례/① 글꼴 (굴림)" - }, - "60": { - "path": "//c:legend//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "범례/② 크기 (9pt)" - }, - "61": { - "path": "//c:legend//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "범례/③ 기울임" - } - } -} \ No newline at end of file diff --git a/DIW_2504_3C.json b/DIW_2504_3C.json deleted file mode 100644 index e6d409e..0000000 --- a/DIW_2504_3C.json +++ /dev/null @@ -1,863 +0,0 @@ -{ - "0": { - "0": { - "path": "", - "path2": "", - "points": 0, - "category": "파일저장", - "item": "파일명 (수검번호.hwp/hwpx)" - }, - "1": { - "path": "boolean(//PAGEMARGIN[(@Bottom='5668'or @Bottom='5669') and (@Footer='2834' or @Footer='2835') and @Gutter='0' and (@Header='2834' or @Header='2835') and (@Left='5668' or @Left='5669') and (@Right='5668' or @Right='5669') and (@Top='5668' or @Top='5669')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "용지설정", - "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" - }, - "2": { - "path": "boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "기본설정", - "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" - }, - "3": { - "path": "", - "path2": null, - "searchValue": null, - "value": null, - "points": 40, - "category": "오타감점", - "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" - } - }, - "1": { - "1": { - "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "궁서", - "points": 1, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)" - }, - "2": { - "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "6072932", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)" - }, - "3": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": 28346, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)" - }, - "4": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": 5669, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)" - }, - "5": { - "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "true", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)" - }, - "6": { - "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": "Center", - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)" - }, - "7": { - "path": "boolean(//TEXTART[@Text='{searchValue}'])", - "path2": null, - "searchValue": "한옥마을사생대회안내", - "value": true, - "points": 2, - "category": "글맵시", - "item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)" - }, - "8": { - "path": "boolean(//RECTANGLE[.//CHAR[text()='자']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])", - "path2": null, - "searchValue": null, - "value": true, - "points": 1, - "category": "문단첫글자장식", - "item": "자/① 모양 (2줄)" - }, - "9": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='자']]/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": null, - "value": "맑은 고딕", - "points": 1, - "category": "문단첫글자장식", - "item": "자/② 글씨체 (맑은 고딕)" - }, - "10": { - "path": "//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": null, - "value": "9537333", - "points": 2, - "category": "문단첫글자장식", - "item": "자/③ 면색 : 색상(RGB:105,155,55)" - }, - "11": { - "path": "//RECTANGLE[.//CHAR[text()='자']]//OUTSIDEMARGIN/@Right", - "path2": null, - "searchValue": null, - "value": "850", - "points": 2, - "category": "문단첫글자장식", - "item": "자/④ 본문과의 간격 : 3.0mm" - }, - "12": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", - "path2": null, - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": true, - "points": 2, - "category": "글꼴 속성", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 기울임" - }, - "13": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", - "path2": null, - "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", - "value": true, - "points": 2, - "category": "글꼴 속성", - "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄" - }, - "14": { - "path": "count(//CHAR[contains(text(),'■')]) + count(//CHAR[contains(text(),'※')])", - "path2": "string-length(//CHAR[contains(text(),'■')]) - string-length(translate(//CHAR[contains(text(),'■')], '■', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))", - "searchValue": null, - "value": 3, - "points": 3, - "category": "특수문자", - "item": "① ■, ② ■, ③ ※" - }, - "15": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "행사안내", - "value": "돋움", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (■ 행사안내 ■)/① 글씨체 (돋움)" - }, - "16": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "행사안내", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)" - }, - "17": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", - "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", - "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": true, - "points": 1, - "category": "Hyperlink", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 진하게" - }, - "18": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", - "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", - "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", - "value": true, - "points": 1, - "category": "Hyperlink", - "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄" - }, - "19": { - "path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)", - "path2": null, - "searchValue": "기타사항", - "value": true, - "points": 2, - "category": "문단모양", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)" - }, - "20": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "2025. 03. 22.", - "value": 1300, - "points": 1, - "category": "글꼴 속성", - "item": "문구 (2025. 03. 22.)/① 크기 (13pt)" - }, - "21": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "2025. 03. 22.", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)" - }, - "22": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "한국고건축협회", - "value": "궁서", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/① 글씨체 (궁서)" - }, - "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "한국고건축협회", - "value": 2400, - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/② 크기 (24pt)" - }, - "24": { - "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "한국고건축협회", - "value": "Center", - "points": 1, - "category": "글꼴 속성", - "item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)" - }, - "25": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "DIAT", - "value": "굴림", - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/① 글꼴 (굴림)" - }, - "26": { - "path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "DIAT", - "value": 900, - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/② 크기 (9pt)" - }, - "27": { - "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "DIAT", - "value": "Right", - "points": 1, - "category": "머리말", - "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" - }, - "28": { - "path": "//PAGENUM/@FormatType", - "path2": null, - "searchValue": null, - "value": "HangulSyllable", - "points": 2, - "category": "쪽번호", - "item": "① 쪽 번호 매기기 (가,나,다 순으로)" - }, - "29": { - "path": "//PAGENUM/@Pos", - "path2": null, - "searchValue": null, - "value": "BottomCenter", - "points": 2, - "category": "쪽번호", - "item": "② 가운데 아래" - }, - "30": { - "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "줄간격", - "item": "문제 1 줄간격 180% 설정" - } - }, - "2": { - "1": { - "path": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "쪽 테두리", - "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" - }, - "2": { - "path": "count(//SECTION)>1", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "다단", - "item": "① 구역나누기" - }, - "3": { - "path": "//COLDEF/@Count>1", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "다단", - "item": "② 다단 2단" - }, - "4": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 19842, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/① 크기-너비 (70mm)" - }, - "5": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 3401, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/② 크기-높이 (12mm)" - }, - "6": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "DoubleSlim", - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/③ 테두리 (이중실선(1.00mm))" - }, - "7": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": 20, - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/④ 글상자 모서리 (반원)" - }, - "8": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "12704995", - "points": 2, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑤ 채우기 : 색상(RGB:53,135,145)" - }, - "9": { - "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "true", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑥ 글상자 위치 (글자처럼 취급)" - }, - "10": { - "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "Center", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑦ 글상자 정렬 (가운데 정렬)" - }, - "11": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "한양견고딕", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑧ 글씨체 (견고딕)" - }, - "12": { - "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": true, - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑨ 글씨크기 (20pt)" - }, - "13": { - "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", - "path2": null, - "searchValue": "한옥의 형태와 구조", - "value": "Center", - "points": 1, - "category": "글상자", - "item": "문구 (한옥의 형태와 구조)/⑩ 정렬 (가운데 정렬)" - }, - "14": { - "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", - "path2": null, - "searchValue": "원본 그림의 이름: 그림", - "value": true, - "points": 2, - "category": "그림삽입", - "item": "① 파일명 \"그림A.jpg\" 삽입" - }, - "15": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", - "path2": null, - "searchValue": null, - "value": 24094, - "points": 2, - "category": "그림삽입", - "item": "② 크기-너비 (85mm)" - }, - "16": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", - "path2": null, - "searchValue": null, - "value": 11338, - "points": 2, - "category": "그림삽입", - "item": "③ 크기-높이 (40mm)" - }, - "17": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset", - "path2": null, - "searchValue": null, - "value": 0, - "points": 2, - "category": "그림삽입", - "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" - }, - "18": { - "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", - "path2": null, - "searchValue": null, - "value": 6236, - "points": 2, - "category": "그림삽입", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)" - }, - "19": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "1. 한옥", - "value": "돋움", - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/① 글씨체 (돋움)" - }, - "20": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "1. 한옥", - "value": 1200, - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/② 크기 (12pt)" - }, - "21": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "1. 한옥", - "value": true, - "points": 1, - "category": "속성", - "item": "문구① (1. 한옥)/③ 진하게" - }, - "22": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": "돋움", - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/① 글씨체 (돋움)" - }, - "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": 1200, - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/② 크기 (12pt)" - }, - "24": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "2. 한옥의 형태와 구조", - "value": true, - "points": 1, - "category": "속성", - "item": "문구② (2. 한옥의 형태와 구조)/③ 진하게" - }, - "25": { - "path": "boolean(//CHAR[contains(text(),'기초')]/ancestor::TEXT/FOOTNOTE/descendant::CHAR)", - "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('기초') + 1) = '기초']/following-sibling::FOOTNOTE/descendant::CHAR)", - "searchValue": null, - "value": true, - "points": 2, - "category": "각주", - "item": "문구 (기초)/① 각주 설정 및 문구 입력" - }, - "26": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": "한양중고딕", - "points": 1, - "category": "각주", - "item": "문구 (기초)/② 글씨체 (한양중고딕)" - }, - "27": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": 900, - "points": 1, - "category": "각주", - "item": "문구 (기초)/③ 크기 (9pt)" - }, - "28": { - "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "path2": null, - "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", - "value": "CircledDigit", - "points": 2, - "category": "각주", - "item": "문구 (기초)/④ 각주 번호모양" - }, - "29": { - "path": "boolean(//CHAR[contains(text(),'cornerstone')])", - "path2": null, - "ignoreWord": "cornerstone", - "value": true, - "points": 3, - "category": "영단어", - "item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점" - }, - "30": { - "path": "(count(//CHAR[contains(text(),'한옥')][contains(text(),'韓屋')])+count(//CHAR[contains(text(),'사계절')][contains(text(),'四季節')])+count(//CHAR[contains(text(),'거주')][contains(text(),'居住')])+count(//CHAR[contains(text(),'구조')][contains(text(),'構造')])+count(//CHAR[contains(text(),'골격')][contains(text(),'骨格')]))*2", - "path2": null, - "searchValue": null, - "value": 10, - "points": 10, - "category": "한자", - "item": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)" - }, - "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'철의추운')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "편집", - "item": "문구 (…더운 날씨와 겨울철이 추운…)/\"이\" → \"의\" 글자바꿈" - }, - "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'돌과마루')])", - "path2": null, - "searchValue": null, - "value": true, - "points": 3, - "category": "편집", - "item": "문구 (…대비해 마루를 온돌과 갖고…)/\"마루를\" / \"온돌과\" 순서바꿈" - }, - "33": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "궁서", - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (궁서)" - }, - "34": { - "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1200, - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/② 크기 (12pt)" - }, - "35": { - "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": true, - "points": 1, - "category": "표", - "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" - }, - "36": { - "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "Center", - "points": 1, - "category": "표", - "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='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", - "searchValue": null, - "value": "7629528", - "points": 2, - "category": "표", - "item": "위쪽 제목 셀/① 색상(RGB:216,106,116)" - }, - "38": { - "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", - "path2": null, - "searchValue": null, - "value": true, - "points": 1, - "category": "표", - "item": "위쪽 제목 셀/② 진하게" - }, - "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='2']/@BorderFill]/BOTTOMBORDER/@Type", - "searchValue": null, - "value": "DoubleSlim", - "points": 2, - "category": "표", - "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='2']/@BorderFill]/BOTTOMBORDER/@Width", - "searchValue": null, - "value": "0.5mm", - "points": 2, - "category": "표", - "item": "제목 셀 아래선/② 0.5mm" - }, - "41": { - "path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "표", - "item": "글자모양/① 글씨체 (굴림)" - }, - "42": { - "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", - "path2": null, - "searchValue": null, - "value": 1000, - "points": 1, - "category": "표", - "item": "글자모양/② 크기 (10pt)" - }, - "43": { - "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", - "path2": null, - "searchValue": null, - "value": "Center", - "points": 1, - "category": "표", - "item": "글자모양/③ 정렬 (가운데 정렬)" - }, - "44": { - "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]])", - "path2": null, - "searchValue": null, - "value": true, - "points": 4, - "category": "표", - "item": "블록계산식/평균" - }, - "45": { - "path": "boolean(//c:lineChart/c:grouping/@val='standard')", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "chart_xml", - "item": "① 종류 (묶은세로막대형)" - }, - "46": { - "path": "//c:valAx/c:majorTickMark/@val", - "path2": null, - "searchValue": null, - "value": "out", - "points": 2, - "category": "chart_xml", - "item": "② 값 축 주 눈금선" - }, - "47": { - "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", - "path2": null, - "searchValue": null, - "value": 22677, - "points": 2, - "category": "차트", - "item": "③ 크기-너비 (80mm)" - }, - "48": { - "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", - "path2": null, - "searchValue": null, - "value": 25511, - "points": 2, - "category": "차트", - "item": "④ 크기-높이 (90mm)" - }, - "49": { - "path": "//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='평균'])", - "path2": null, - "searchValue": null, - "value": true, - "points": 2, - "category": "chart_xml", - "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" - }, - "50": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": "굴림체", - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (굴림체)" - }, - "51": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1300, - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/② 크기 (13pt)" - }, - "52": { - "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", - "path2": null, - "searchValue": "교육기관별 참가인원", - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" - }, - "53": { - "path": "//c:catAx//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "X축/① 글꼴 (굴림)" - }, - "54": { - "path": "//c:catAx//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "X축/② 크기 (9pt)" - }, - "55": { - "path": "//c:catAx//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "X축/③ 기울임" - }, - "56": { - "path": "//c:valAx//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "Y축/① 글꼴 (굴림)" - }, - "57": { - "path": "//c:valAx//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "Y축/② 크기 (9pt)" - }, - "58": { - "path": "//c:valAx//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "Y축/③ 기울임" - }, - "59": { - "path": "//c:legend//a:ea/@typeface", - "path2": null, - "searchValue": null, - "value": "굴림", - "points": 1, - "category": "chart_xml", - "item": "범례/① 글꼴 (굴림)" - }, - "60": { - "path": "//c:legend//a:defRPr/@sz", - "path2": null, - "searchValue": null, - "value": 900, - "points": 1, - "category": "chart_xml", - "item": "범례/② 크기 (9pt)" - }, - "61": { - "path": "//c:legend//a:defRPr/@i", - "path2": null, - "searchValue": null, - "value": 1, - "points": 1, - "category": "chart_xml", - "item": "범례/③ 기울임" - } - } -} \ No newline at end of file diff --git a/checklist.xbook b/checklist.xbook index d0a182c..a08c325 100644 --- a/checklist.xbook +++ b/checklist.xbook @@ -1 +1 @@ -[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart\r\n - 묶은가로막대형 //c:barChart[c:barDir[@val='bar']]\r\n - 묶은세로막대형 //c:barChart[c:barDir[@val='col']]\r\n - 원형 //c:pieChart\r\n - 분산형 //c:scatterChart"},{"kind":1,"language":"markdown","value":"//c:{chart_type}Chart/"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"}] \ No newline at end of file +[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart[c:grouping[@val='standard']]\r\n - 묶은가로막대형 //c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]\r\n - 묶은세로막대형 //c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]\r\n - 원형 //c:pieChart\r\n - 분산형 //c:scatterChart"},{"kind":1,"language":"markdown","value":"//c:{chart_type}Chart/"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"}] \ No newline at end of file diff --git a/diwScoring2.py b/diwScoring2.py index 56cc97e..9773e54 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -43,7 +43,7 @@ class XMLScorer: return pt # 유사한 텍스트 찾기 - def find_similar_text(self, root, chart_tree, target_text, threshold=0.7): + def find_similar_text(self, root, target_text, xml_type, threshold=0.7): """ 전체 문서에서 유사한 텍스트를 찾아 반환 @@ -64,10 +64,11 @@ class XMLScorer: 'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart' } - hwp_text = root.xpath(f"//BODY//text() | //TEXTART/@Text") - chart_text = chart_tree.xpath(f"//c:chart//text()", namespaces=namespaces) if chart_tree is not None else [] + if xml_type == "hml": + all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text") if root is not None else [] - all_text = hwp_text + chart_text + if xml_type == "chart": + all_text = root.xpath(f"//c:chart//text()", namespaces=namespaces) if root is not None else [] # 유사도 비교 max_score = 0 @@ -163,11 +164,19 @@ class XMLScorer: # search_value가 있는 경우 if search_value is not None: - # search_value를 포함하는 텍스트 찾기 - similar_text = self.find_similar_text(root, chart_tree, search_value) - xpath = xpath.replace('{searchValue}', similar_text) if xpath else "" - xpath2 = xpath2.replace('{searchValue}', similar_text) if xpath2 else "" - chart_xpath = chart_xpath.replace('{searchValue}', similar_text) if chart_xpath else "" + # # search_value를 포함하는 텍스트 찾기 + # similar_text = self.find_similar_text(root, chart_tree, search_value) + # xpath = xpath.replace('{searchValue}', similar_text) if xpath else "" + # xpath2 = xpath2.replace('{searchValue}', similar_text) if xpath2 else "" + # chart_xpath = chart_xpath.replace('{searchValue}', similar_text) if chart_xpath else "" + + if xpath or xpath2: + similar_text = self.find_similar_text(root, search_value, xml_type="hml") + xpath = xpath.replace('{searchValue}', similar_text) if xpath else "" + xpath2 = xpath2.replace('{searchValue}', similar_text) if xpath2 else "" + if chart_xpath: + similar_text = self.find_similar_text(chart_tree, search_value, xml_type="chart") + chart_xpath = chart_xpath.replace('{searchValue}', similar_text) if chart_xpath else "" if option: xpath = xpath.replace('{option}', option) if xpath else "" @@ -207,38 +216,39 @@ class XMLScorer: break elif (category or "") == "BasicSetting": - # 바탕글(기본설정) 요소 - normal_style = root.xpath("//STYLE[@Name='바탕글']") - - # CHARSHAPE, PARASHAPE, FONTID 속성값 추출 - charshape_id = normal_style[0].get("CharShape") - parashape_id = normal_style[0].get("ParaShape") - font_id = root.xpath(f"//CHARSHAPE[@Id='{charshape_id}']/FONTID/@Hangul") - - # 필요한 속성값을 이용하여 정답과 비교 - font_name = root.xpath(f"//FONT[@Id='{font_id[0]}']/@Name") - font_size = root.xpath(f"//CHARSHAPE[@Id='{charshape_id}']/@Height") - alignment = root.xpath(f"//PARASHAPE[@Id='{parashape_id}']/@Align") - line_spacing = root.xpath(f"//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing") - - # 수험자 답안 - user_answer = { - ######################################################################## - # 정답은 글꼴이 [바탕]이어야 하지만 대부분 설정하지 않고 - # 기본 [함초롱바탕]으로 두는 경우가 많아 - # 폰트명을 정답과 비교하면 감점이 많이 발생함 - # - # 수험자가 지정한 폰트명과 정답을 비교할때 'FontName': font_name[0], 적용 - # 폰트명은 상관없이 정답을 비교하고자 할때 'FontName': "바탕", 적용 - ######################################################################## - # 'FontName': font_name[0], - 'FontName': "바탕", - 'FontSize': font_size[0], - 'Alignment': alignment[0], - 'LineSpacing': line_spacing[0] - } - - self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + # FontName, FontSize, Alignment, LineSpacing + # 해당 속성의 요소(텍스트)가 문서 내부에 존재하면 정답처리 + + matches = set() + + # P 태그 순회 + for p_tag in root.xpath(".//P"): + parashape = p_tag.get("ParaShape") + + for text_tag in p_tag.xpath(".//TEXT"): + charshape = text_tag.get("CharShape") + + if parashape is not None and charshape is not None: + matches.add((parashape, charshape)) + + # 출력 + for para, char in matches: + # print(f"ParaShape = {para}, CharShape = {char}") + font_id = root.xpath(f"//CHARSHAPE[@Id='{char}']/FONTID/@Hangul") + font_name = root.xpath(f"//FONTFACE[@Lang='Hangul']/FONT[@Id='{font_id[0]}']/@Name") + + user_answer = { + 'FontName': font_name[0], + 'FontSize': root.xpath(f"//CHARSHAPE[@Id='{char}']/@Height")[0], + 'Alignment': root.xpath(f"//PARASHAPE[@Id='{para}']/@Align")[0], + 'LineSpacing': root.xpath(f"//PARASHAPE[@Id='{para}']/PARAMARGIN/@LineSpacing")[0] + } + + # 정답과 수험자 답안 비교 + self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + + if scoring['points'] > 0: + break # 1, 2페이지 모두 정답이어야 함 elif (category or "") == "PageNumber": @@ -294,7 +304,13 @@ class XMLScorer: # 사용자 입력값이 mm단위인 경우 elif (category or "") == "mmSize": items = root.xpath(xpath) - error_range = criterion.get('tolerance', 0) + + # 오차범위 설정 + # 한글 프로그램 내부에서 드물게 mm단위는 0mm이지만 pt단위는 1pt로 저장되는 경우가 있음 + # + # XML파일의 요소 옵션값은 내부적으로 1=0.01pt + # 이 경우를 대비하여 tolerance를 10으로 설정 (1pt=약0.04mm 만큼의 오차 혀용) + error_range = criterion.get('tolerance', 10) for item in items: user_answer = float(item) @@ -304,7 +320,7 @@ class XMLScorer: float_string = right_answer.strip().replace("mm", "") right_answer = self.convert_mm_to_pt(float(float_string)) - self.evaluate_answer(scoring, user_answer, right_answer, points, method="tolerance") + self.evaluate_answer(scoring, user_answer, right_answer, points, method="tolerance", tolerance=error_range) if scoring['points'] > 0: break @@ -367,7 +383,7 @@ class XMLScorer: # 폰트명 elif (category or "") == "FontName": charshape_list = root.xpath(xpath) - if not charshape_id: + if not charshape_list: user_answer = "" else: for charshape_id in charshape_list: @@ -618,17 +634,20 @@ class XMLScorer: elif (category or "") == "ChartType": chart_type_list = { - '꺾은선형': "//c:lineChart", - '가로막대형': "//c:barChart[c:barDir[@val='bar']]", - '세로막대형': "//c:barChart[c:barDir[@val='col']]", + '꺾은선형': "//c:lineChart[c:grouping[@val='standard']]", + '가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]", + '세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]", '원형': "//c:pieChart", '분산형': "//c:scatterChart" } chart_type = criterion.get('chart_type').replace(" ","") if "묶은" in chart_type: chart_type = chart_type.replace("묶은", "") + + # 입력한 chart_type에 해당하는 xpath를 가져옴 chart_xpath = chart_type_list[chart_type] + # xpath를 사용하여 차트 요소가 있는지 확인 user_answer = bool(chart_tree.xpath(chart_xpath, namespaces=namespaces)) self.evaluate_answer(scoring, user_answer, right_answer, points) @@ -940,8 +959,8 @@ def main(): # 시험회차 및 유형 exam_round = '2504' exam_types = [ - 'A', - # 'B', + # 'A', + 'B', # 'C', ] test_mode = False diff --git a/zzz.xbook b/zzz.xbook index adbc23e..4aab208 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT/@Name"},{"kind":2,"language":"xpath","value":"//CHARSHAPE/@Height"},{"kind":2,"language":"xpath","value":"//PARASHAPE/PARAMARGIN/@LineSpacing"},{"kind":2,"language":"xpath","value":"//PARASHAPE/@Align"},{"kind":2,"language":"xpath","value":"//P[TEXT]/@ParaShape"}] \ No newline at end of file diff --git a/구버전신버전점수비교A형.xlsx b/구버전신버전점수비교A형.xlsx index 9c95126..d9e79ee 100644 Binary files a/구버전신버전점수비교A형.xlsx and b/구버전신버전점수비교A형.xlsx differ diff --git a/구버전신버전점수비교B형.xlsx b/구버전신버전점수비교B형.xlsx new file mode 100644 index 0000000..2d4b0a5 Binary files /dev/null and b/구버전신버전점수비교B형.xlsx differ diff --git a/오류및문제점.md b/오류및문제점.md index de37f91..f9f7649 100644 --- a/오류및문제점.md +++ b/오류및문제점.md @@ -3,10 +3,11 @@ ## 1. 원인 파악이나 해결이 어려운 경우 ### 한글문서(.hwpx)에 수험자가 차트 텍스트 속성을 변경해서 저장했지만 차트 xml파일에 옵션이 적용되지 않는 경우가 있음 - - 1. 정상적으로 텍스트 속성이 적용되는 수험자의 차트를 복사 - 2. 텍스트 속성이 적용되지 않는 수험자의 한글 파일에 차트를 붙여넣을 경우 - 3. 정상적으로 XML파일에 텍스트 속성이 적용 -- 이로 미루어 볼 때, 차트객체의 문제일 것으로 판단되지만 해결 방안은 없음 - \ No newline at end of file +#### (2-50) 문항 차트 제목 굵게 속성만 + +1. 정상적으로 텍스트 속성이 적용되는 수험자의 차트를 복사 +2. 텍스트 속성이 적용되지 않는 수험자의 한글 파일에 차트를 붙여넣을 경우 +3. 정상적으로 XML파일에 텍스트 속성이 적용 + +- 이로 미루어 볼 때, 차트객체의 문제일 것으로 판단되지만 해결 방안은 현재 없음 diff --git a/회차별채점자료/2504/excel_채점기준표/DIW_2504B.xlsx b/회차별채점자료/2504/excel_채점기준표/DIW_2504B.xlsx index bc7d1db..5d9a037 100644 Binary files a/회차별채점자료/2504/excel_채점기준표/DIW_2504B.xlsx and b/회차별채점자료/2504/excel_채점기준표/DIW_2504B.xlsx differ