Bối cảnh
Tôi đang viết một vài câu hỏi thực hành trắc nghiệm và tôi muốn lưu trữ chúng ở định dạng dữ liệu văn bản đơn giản. Trước đây tôi đã sử dụng tab được phân định, nhưng điều đó làm cho việc chỉnh sửa trong trình soạn thảo văn bản hơi khó xử. Tôi muốn sử dụng một định dạng hơi giống như bibtex.
Ví dụ,
@Article{journals/aim/Sloman99,
title = "Review of Affective Computing",
author = "Aaron Sloman",
journal = "AI Magazine",
year = "1999",
number = "1",
volume = "20",
url = "http://dblp.uni-trier.de/db/journals/aim/aim20.html#Sloman99",
pages = "127--133",
}
Các tính chất quan trọng dường như là:
- Dữ liệu được tạo thành từ các hồ sơ
- Mỗi bản ghi có nhiều cặp giá trị thuộc tính
- Mỗi cặp giá trị thuộc tính có thể được ghi lại trên một dòng mới, nhưng có thể trải dài trên nhiều dòng
- Dễ dàng nhập thủ công dữ liệu văn bản trong trình soạn thảo văn bản
- Các công cụ sẵn có để chuyển đổi thành dữ liệu dạng bảng
Ví dụ, đây là một cái gì đó giống như những gì có thể làm việc
@
id: 1
question: 1 + 1
a: 1
b: 2
c: 3
d: 4
correct: b
@
id: 2
question: What is the capital city of the country renowned for koalas,
emus, and kangaroos?
a: Canberra
b: Melbourne
c: Sydney
d: Australia
correct: a
Mặc dù tôi quan tâm đến bối cảnh cụ thể của việc viết các câu hỏi trắc nghiệm, tôi cũng quan tâm đến vấn đề rộng hơn về việc thể hiện dữ liệu theo định dạng này hoặc một loại định dạng tương tự.
Suy nghĩ ban đầu
Suy nghĩ ban đầu của tôi bao gồm:
- YAML
- JSON
- Dữ liệu được phân tách bằng trường tùy chỉnh và dấu phân cách bản ghi cho phép bản ghi nhiều dòng
- Một định dạng tệp tùy chỉnh với một số dạng trình phân tích cú pháp tùy chỉnh
Tôi chỉ có một cái nhìn nhanh về YAML và JSON; Ấn tượng đầu tiên của tôi là họ có thể bị giết quá mức. Phân định tùy chỉnh có thể tốt, nhưng có lẽ sẽ yêu cầu tất cả các trường phải có mặt theo thứ tự nhất quán cho tất cả các bản ghi. Viết trình phân tích cú pháp của riêng tôi nghe có vẻ hơi khó khăn.