7.8 KiB
7.8 KiB
**Microformats(마이크로포맷)**은 HTML에 구조화된 데이터를 추가하기 위한 간단하고 개방적인 형식으로, 사람과 기계가 모두 읽을 수 있도록 설계되었습니다. 이는 웹 페이지의 콘텐츠(예: 연락처, 이벤트, 리뷰 등)에 의미를 부여하여 검색 엔진, 크롤러, 브라우저 확장 프로그램 등이 데이터를 쉽게 파싱하고 활용할 수 있게 합니다. Microformats는 기존 HTML을 확장하며, 별도의 파일이나 복잡한 스키마 없이도 사용할 수 있는 것이 특징입니다.
1. Microformats의 정의와 목적
- 정의: HTML 클래스 속성(
class)과 기타 속성(rel,title등)을 사용해 콘텐츠에 의미론적 마크업을 추가하는 방식. - 목적:
- 구조화된 데이터 제공: 검색 엔진(Google, Bing 등)이 콘텐츠를 더 잘 이해하도록 도움.
- 사용자 경험 개선: 브라우저 도구나 앱이 데이터를 자동 추출(예: 캘린더에 이벤트 추가).
- 간단함: JSON-LD나 RDFa 같은 복잡한 대안 대비 쉽게 적용 가능.
2. Microformats의 주요 특징
- 사람 우선: HTML 자체가 사람이 읽기 쉬운 형태로 유지됨.
- 기계 해석 가능: 클래스 이름으로 의미를 정의해 파싱 가능.
- 재사용성: 기존 HTML에 추가 작업만으로 적용.
- 커뮤니티 기반: 오픈 표준으로, microformats.org에서 관리.
3. 주요 Microformats 종류
Microformats는 여러 유형으로 나뉘며, 각 유형은 특정 데이터 형식을 표현합니다.
(1) hCard (연락처 정보)
- 용도: 사람, 조직, 장소의 연락처 정보.
- 예제:
<div class="vcard"> <span class="fn">홍길동</span> <span class="org">Example Corp</span> <a class="email" href="mailto:hong@example.com">hong@example.com</a> <div class="adr"> <span class="street-address">123 서울로</span> <span class="locality">서울</span> </div> </div> - 클래스:
vcard,fn(fullname),org,email,adr(address) 등.
(2) hCalendar (이벤트)
- 용도: 이벤트, 일정 정보.
- 예제:
<div class="vevent"> <h3 class="summary">컨퍼런스 2025</h3> <span class="dtstart">2025-03-07T09:00:00+09:00</span> - <span class="dtend">2025-03-07T17:00:00+09:00</span> <div class="location">서울 컨벤션 센터</div> </div> - 클래스:
vevent,summary,dtstart(시작),dtend(종료),location.
(3) hEntry (블로그 게시물)
- 용도: 블로그 포스트, 기사 등.
- 예제:
<article class="hentry"> <h1 class="entry-title">오늘의 뉴스</h1> <time class="published" datetime="2025-03-07">2025-03-07</time> <div class="entry-content">최신 소식을 전합니다.</div> <span class="author vcard">홍길동</span> </article> - 클래스:
hentry,entry-title,published,entry-content,author.
(4) hReview (리뷰)
- 용도: 제품, 서비스 리뷰.
- 예제:
<div class="hreview"> <h3 class="item fn">최신 스마트폰</h3> <span class="rating">4.5</span> <p class="description">성능이 뛰어납니다.</p> <span class="reviewer vcard">홍길동</span> </div> - 클래스:
hreview,item,rating,description,reviewer.
(5) rel 속성 기반 Microformats
- rel-nofollow: 링크가 신뢰하지 않음을 표시.
<a href="https://spam.com" rel="nofollow">스팸 링크</a> - rel-tag: 태그 지정.
<a href="/tags/java" rel="tag">Java</a>
4. Microformats의 작동 방식
- 구성 요소:
- 루트 클래스: 데이터 유형 정의(예:
vcard,vevent). - 속성 클래스: 세부 데이터 정의(예:
fn,dtstart).
- 루트 클래스: 데이터 유형 정의(예:
- 파싱:
- 크롤러나 도구가 클래스 이름으로 데이터 추출.
- 예:
class="fn"→ 이름 데이터로 인식.
5. 자바로 Microformats 파싱 예제
HTML에서 Microformats를 파싱하려면, Jsoup 같은 라이브러리를 사용해 클래스 기반 데이터를 추출할 수 있습니다.
(1) 의존성 (Maven)
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.3</version>
</dependency>
(2) hCard 파싱
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class MicroformatsParser {
public static void main(String[] args) throws Exception {
String html = "<div class=\"vcard\">" +
"<span class=\"fn\">홍길동</span>" +
"<a class=\"email\" href=\"mailto:hong@example.com\">hong@example.com</a>" +
"</div>";
Document doc = Jsoup.parse(html);
Element vcard = doc.selectFirst(".vcard");
if (vcard != null) {
String name = vcard.selectFirst(".fn").text();
String email = vcard.selectFirst(".email").text();
System.out.println("Name: " + name);
System.out.println("Email: " + email);
}
}
}
출력 결과:
Name: 홍길동
Email: hong@example.com
6. Microformats와 다른 기술 비교
| 특성 | Microformats | JSON-LD | RDFa |
|---|---|---|---|
| 형식 | HTML 클래스 | JSON 스크립트 | HTML 속성 |
| 복잡도 | 낮음 | 중간 | 높음 |
| SEO 지원 | 제한적 | 강력 (Schema.org) | 강력 |
| 적용 용이성 | 쉬움 | 중간 | 어려움 |
| 사용 사례 | 간단한 데이터 | 복잡한 구조화 데이터 | Semantic Web |
- Microformats: 간단한 블로그, 연락처 등에 적합.
- JSON-LD: 현대 SEO, Schema.org 기반 구조화 데이터에 주로 사용.
- RDFa: 복잡한 온톨로지와 시맨틱 웹에 활용.
7. Microformats의 장점과 단점
- 장점:
- 적용이 쉬움 (기존 HTML 재사용).
- 사람과 기계 모두 이해 가능.
- 경량화된 구조.
- 단점:
- 복잡한 데이터 표현 어려움.
- 최신 SEO에서 JSON-LD에 비해 지원 감소.
- 제한된 표준화 (Microformats 2로 개선 중).
8. Microformats 2 (h-*)
- 개선판: Microformats의 한계를 보완한 버전.
- 특징:
- 클래스 이름 단순화 (예:
h-card,p-name). - 중첩된 구조 지원 강화.
- 클래스 이름 단순화 (예:
- 예제:
<div class="h-card"> <span class="p-name">홍길동</span> <a class="u-email" href="mailto:hong@example.com">hong@example.com</a> </div> - 클래스 접두사:
h-(루트),p-(속성),u-(URL),dt-(날짜).
9. 현대적 맥락
- 사용: IndieWeb 커뮤니티, 블로그, 소규모 사이트에서 여전히 활용.
- 대안: JSON-LD와 Schema.org이 SEO 주류로 자리잡음.
- 도구: Operator(파이어폭스 확장), Microformat Shiv(JavaScript 파서).
10. 결론
Microformats는 HTML에 구조화된 데이터를 추가하는 간단한 방법으로, 초기 웹에서 널리 사용되었습니다. 현재는 JSON-LD와 같은 대안에 밀려 사용이 줄었지만, 경량화와 직관성 덕분에 소규모 프로젝트나 IndieWeb에서 여전히 유효합니다. 자바로 파싱하려면 Jsoup 같은 도구를 활용하면 됩니다.
추가 질문이나 특정 Microformat(예: hCard, hCalendar)에 대한 예제가 필요하면 말씀해주세요!