diff --git a/250227_DIC_2502A_채점결과.xlsx b/250227_DIC_2502A_채점결과.xlsx new file mode 100644 index 0000000..2dd9edb Binary files /dev/null and b/250227_DIC_2502A_채점결과.xlsx differ diff --git a/250227_DIC_2502B_TEST.xlsx b/250227_DIC_2502B_TEST.xlsx new file mode 100644 index 0000000..5ccc5c0 Binary files /dev/null and b/250227_DIC_2502B_TEST.xlsx differ diff --git a/250227_DIC_2502B_result.xlsx b/250227_DIC_2502B_result.xlsx new file mode 100644 index 0000000..edfc9f0 Binary files /dev/null and b/250227_DIC_2502B_result.xlsx differ diff --git a/250227_DIC_2502B_채점결과.xlsx b/250227_DIC_2502B_채점결과.xlsx new file mode 100644 index 0000000..e33a886 Binary files /dev/null and b/250227_DIC_2502B_채점결과.xlsx differ diff --git a/250227_DIC_2502C_채점결과.xlsx b/250227_DIC_2502C_채점결과.xlsx new file mode 100644 index 0000000..985daa1 Binary files /dev/null and b/250227_DIC_2502C_채점결과.xlsx differ diff --git a/250227_DIC_2502D_채점결과.xlsx b/250227_DIC_2502D_채점결과.xlsx new file mode 100644 index 0000000..36a5b9e Binary files /dev/null and b/250227_DIC_2502D_채점결과.xlsx differ diff --git a/DIC_2502A.json b/DIC_2502A.json index fb432ca..cb704c0 100644 --- a/DIC_2502A.json +++ b/DIC_2502A.json @@ -333,8 +333,8 @@ "point": 2 }, "25": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-13290016']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-13290016']", + "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-14688179']", + "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-14688179']", "search": "멋진 기차 모형 (Fine Train Model)", "point": 2 }, diff --git a/DIC_2502B.json b/DIC_2502B.json index bc08752..7301c5e 100644 --- a/DIC_2502B.json +++ b/DIC_2502B.json @@ -184,30 +184,30 @@ "point": 3 }, "5": { - "ele": "//CRCUnitArr[@Name='{search}']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]", "search": "자연이 빚어낸 섬", "point": 3 }, "6": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", "search": "자연이 빚어낸 섬", "point": 2 }, "7": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='120']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit[@VID101='120']", "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='120']", "search": "자연이 빚어낸 섬", "point": 2 }, "8": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-10541088']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='4'][@VID100='-10541088']", "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-10541088']", "search": "자연이 빚어낸 섬", "point": 2 }, "9": { - "ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601", + "ele": "//CRCUnitArr[@Name=\"{search}\"]/@VID600 | //CRCUnitArr[@Name=\"{search}\"]/@VID601", "ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601", "type": "range", "search": "자연이 빚어낸 섬", @@ -216,7 +216,7 @@ "point": 2 }, "10": { - "existEle": "//CRCUnitArr[@Name='{search}']", + "existEle": "//CRCUnitArr[@Name=\"{search}\"]", "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[1]/preceding-sibling::CROwneUnit))]/@Length)", "type": "searchIndex", "value": 150, @@ -314,50 +314,50 @@ "point": 2 }, "22": { - "ele": "//CRCUnitArr[@Name='{search}']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CRCUnitArr[@Name=\"{search}\"]", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 3 }, "23": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "24": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "25": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-1487764']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='4'][@VID100='-1487764']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-1487764']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "26": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-1']", + "ele": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-1']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-1']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "27": { - "ele": "//CRCUnitArr[@Name='{search}'][@VID505='1'][@VID507='2']", + "ele": "//CRCUnitArr[@Name=\"{search}\"][@VID505='1'][@VID507='2']", "ele2": "//CROwneUnit[2]/CRCUnitArr[@VID505='1'][@VID507='2']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 3 }, "28": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit)][@Pos='0']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name=\"{search}\"]]/preceding::CROwneUnit)][@Pos='0']", "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Pos='0']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "29": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit))][@Length='120']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name=\"{search}\"]]/preceding::CROwneUnit))][@Length='120']", "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Length='120']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "30": { diff --git a/DIC_2502C.json b/DIC_2502C.json index 647af73..9bdda99 100644 --- a/DIC_2502C.json +++ b/DIC_2502C.json @@ -109,7 +109,7 @@ "16": { "ele": "$.children[?(@.name=='철원 금학산 등산')].text.font.colors[0]", "type": "color", - "value": "f14aeba", + "value": "f1eb4a", "point": 10 }, "17": { diff --git a/README.md b/README.md index 783856a..51a502e 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ xpath 테스트 용 * gmep의 채점결과는 scoringResult[3]에 직접 저장하므로 * 결과 예상은 scoringResult[3]까지 저장되어야 하지만 scoringResult[4]에 더미 값이 저장됨 -### 3. (해결) [3-15] [3-18] [3-21] 이미지 클립 트렌지션 xpath +### 3. (해결) [3-15] [3-18] [3-21] 이미지 클립 트렌지션 xpath * [x] 곰믹스-C형-003109-최시아 * [3-18] 이미지2.jpg 클립 트렌지션 [문 열기(앞으로 이동, 재생 시간 : 1.00)] 채점 문항 @@ -147,11 +147,9 @@ xpath 테스트 용 //CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')] ``` - - 250221 모션이미지클립 처리 JSON A형만 작성완료 BCD작성해야됨 그리고 전체 돌려보고 -이전 결과랑 비교 \ No newline at end of file +이전 결과랑 비교 diff --git a/copyFiles.py b/copyFiles.py index 8952671..72f7f18 100644 --- a/copyFiles.py +++ b/copyFiles.py @@ -5,7 +5,7 @@ import unicodedata def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, target_root_d, target_root_e): for root, dirs, files in os.walk(source_root): for dir_name in dirs: - if dir_name == 'DIW': # DIC 디렉토리 탐색 + if dir_name == 'DIC': # DIC 디렉토리 탐색 parent_dir = os.path.basename(os.path.dirname(os.path.join(root, dir_name))) target_root = None parent_dir = unicodedata.normalize('NFC', parent_dir) @@ -34,7 +34,7 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.") # 사용법 -source_directory = r"C:\Users\dra\project\data\제2521회 특별검정\제2521회 디지털정보활용능력 특별검정 답안파일" # 원본 디렉토리 경로 +source_directory = r"C:\Users\dra\project\data\제2502회 정기\답안파일" # 원본 디렉토리 경로 target_directory_a = r".\output\A" # '2교시'의 타겟 경로 target_directory_b = r".\output\B" # '2교시'의 타겟 경로 target_directory_c = r".\output\C" # '3교시'의 타겟 경로 diff --git a/psdExport_2.js b/psdExport_2.js index d5e4cf4..bbeed7c 100644 --- a/psdExport_2.js +++ b/psdExport_2.js @@ -12,9 +12,9 @@ const todayDate = getToday(); // -------------------------------------------------------- // const scoringJson = require('./DIC_2502A.json'); -// const scoringJson = require('./DIC_2502B.json'); +const scoringJson = require('./DIC_2502B.json'); // const scoringJson = require('./DIC_2502C.json'); -const scoringJson = require('./DIC_2502D.json'); +// const scoringJson = require('./DIC_2502D.json'); // TEST // const scoringJson = require('./DIC_2502A_TEST.json'); @@ -23,9 +23,9 @@ const scoringJson = require('./DIC_2502D.json'); // const scoringJson = require('./DIC_2502D_TEST.json'); // -------------------------------------------------------- // const answerFilesDir = './output/A/DIC'; -// const answerFilesDir = './output/B/DIC'; +const answerFilesDir = './output/B/DIC'; // const answerFilesDir = './output/C/DIC'; -const answerFilesDir = './output/D/DIC'; +// const answerFilesDir = './output/D/DIC'; // TEST // const answerFilesDir = './output/A/TEST'; @@ -35,7 +35,7 @@ const answerFilesDir = './output/D/DIC'; // -------------------------------------------------------- // const outputExcelFile = './'+todayDate+'_DIC_2502A_result.xlsx'; -// const outputExcelFile = './'+todayDate+'_DIC_2502B_result.xlsx'; +const outputExcelFile = './'+todayDate+'_DIC_2502B_result.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502C_result.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502D_result.xlsx'; @@ -43,7 +43,7 @@ const answerFilesDir = './output/D/DIC'; // const outputExcelFile = './'+todayDate+'_DIC_2502A_TEST.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502B_TEST.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502C_TEST.xlsx'; -const outputExcelFile = './'+todayDate+'_DIC_2502D_TEST.xlsx'; +// const outputExcelFile = './'+todayDate+'_DIC_2502D_TEST.xlsx'; // -------------------------------------------------------- // 답안 폴더 내부에 디렉토리가 아닌 일반 파일이 있을 경우 디렉토리만 필터링 해서 불러옴 @@ -62,7 +62,12 @@ studentDirs.forEach(student => { const name = student.normalize('NFC'); const studentDir = path.join(answerFilesDir, student); const psdFiles = fs.readdirSync(studentDir).filter(file => file.endsWith('.psd')); - const gmepFile = fs.readdirSync(studentDir).filter(file => file.endsWith('.gmep')); + // DIAT시험 프로젝트로 생성시 gmep확장자로 + // 교육용 프로젝프로 생성시 gmdp확장자로 생성됨 + // 두 경우 모두 처리 + const gmepFile = fs.readdirSync(studentDir).filter( + file => file.endsWith('.gmep') || file.endsWith('.gmdp') + ); // 학생 이름을 key로 하는 객체 생성 // 채점결과 @@ -160,6 +165,10 @@ function getGmepScore(gmepData, scoringJson, index) { */ if (search !== undefined) { let result = findSimilarString(gmepXmlDoc, search, 0.8) + // xpath 내부 "(큰따옴표) 필터링 + if (result !== null) { + result = result.replace(/"/g, "'"); + } ele = ele.replace(/{search}/g, result); if ( existEle !== undefined ){ existEle = existEle.replace(/{search}/g, result); diff --git a/250226_DIC_2502A_TEST.xlsx b/회차별채점자료/2502/excel_채점결과/250226_DIC_2502A_TEST.xlsx similarity index 100% rename from 250226_DIC_2502A_TEST.xlsx rename to 회차별채점자료/2502/excel_채점결과/250226_DIC_2502A_TEST.xlsx diff --git a/250226_DIC_2502B_TEST.xlsx b/회차별채점자료/2502/excel_채점결과/250226_DIC_2502B_TEST.xlsx similarity index 100% rename from 250226_DIC_2502B_TEST.xlsx rename to 회차별채점자료/2502/excel_채점결과/250226_DIC_2502B_TEST.xlsx diff --git a/250226_DIC_2502C_TEST.xlsx b/회차별채점자료/2502/excel_채점결과/250226_DIC_2502C_TEST.xlsx similarity index 100% rename from 250226_DIC_2502C_TEST.xlsx rename to 회차별채점자료/2502/excel_채점결과/250226_DIC_2502C_TEST.xlsx diff --git a/250226_DIC_2502D_TEST.xlsx b/회차별채점자료/2502/excel_채점결과/250226_DIC_2502D_TEST.xlsx similarity index 100% rename from 250226_DIC_2502D_TEST.xlsx rename to 회차별채점자료/2502/excel_채점결과/250226_DIC_2502D_TEST.xlsx diff --git a/회차별채점자료/2502/excel_채점결과/250227_DIC_2502A_채점결과.xlsx b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502A_채점결과.xlsx new file mode 100644 index 0000000..2dd9edb Binary files /dev/null and b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502A_채점결과.xlsx differ diff --git a/회차별채점자료/2502/excel_채점결과/250227_DIC_2502B_채점결과.xlsx b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502B_채점결과.xlsx new file mode 100644 index 0000000..e33a886 Binary files /dev/null and b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502B_채점결과.xlsx differ diff --git a/회차별채점자료/2502/excel_채점결과/250227_DIC_2502C_채점결과.xlsx b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502C_채점결과.xlsx new file mode 100644 index 0000000..985daa1 Binary files /dev/null and b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502C_채점결과.xlsx differ diff --git a/회차별채점자료/2502/excel_채점결과/250227_DIC_2502D_채점결과.xlsx b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502D_채점결과.xlsx new file mode 100644 index 0000000..36a5b9e Binary files /dev/null and b/회차별채점자료/2502/excel_채점결과/250227_DIC_2502D_채점결과.xlsx differ diff --git a/회차별채점자료/2502/excel_채점기준표/DIC_2502A.xlsx b/회차별채점자료/2502/excel_채점기준표/DIC_2502A.xlsx index 0dc0075..aa48de7 100644 Binary files a/회차별채점자료/2502/excel_채점기준표/DIC_2502A.xlsx and b/회차별채점자료/2502/excel_채점기준표/DIC_2502A.xlsx differ diff --git a/회차별채점자료/2502/json_채점기준표/DIC_2502A.json b/회차별채점자료/2502/json_채점기준표/DIC_2502A.json index fb432ca..cb704c0 100644 --- a/회차별채점자료/2502/json_채점기준표/DIC_2502A.json +++ b/회차별채점자료/2502/json_채점기준표/DIC_2502A.json @@ -333,8 +333,8 @@ "point": 2 }, "25": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-13290016']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-13290016']", + "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-14688179']", + "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-14688179']", "search": "멋진 기차 모형 (Fine Train Model)", "point": 2 }, diff --git a/회차별채점자료/2502/json_채점기준표/DIC_2502B.json b/회차별채점자료/2502/json_채점기준표/DIC_2502B.json index bc08752..8f49328 100644 --- a/회차별채점자료/2502/json_채점기준표/DIC_2502B.json +++ b/회차별채점자료/2502/json_채점기준표/DIC_2502B.json @@ -315,49 +315,49 @@ }, "22": { "ele": "//CRCUnitArr[@Name='{search}']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 3 }, "23": { "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "24": { "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "25": { "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-1487764']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-1487764']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "26": { "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-1']", "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-1']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "27": { "ele": "//CRCUnitArr[@Name='{search}'][@VID505='1'][@VID507='2']", "ele2": "//CROwneUnit[2]/CRCUnitArr[@VID505='1'][@VID507='2']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 3 }, "28": { "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit)][@Pos='0']", "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Pos='0']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "29": { "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit))][@Length='120']", "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Length='120']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 2 }, "30": {