오랫동안 CSS 는 웹 페이지의 옷을 입히는 도구, 즉 시각적 스타일을 정의하는 언어로만 인식되어 왔습니다. 하지만 최근 개발자 커뮤니티와 기술 블로그를 중심으로 CSS 가 단순한 스타일링을 넘어 쿼리 언어, 나아가 범용 프로그래밍 언어의 잠재력을 지닌 도구로 재조명되고 있습니다. 이 변화의 핵심은 CSS 선택자가 가진 강력한 패턴 매칭 능력을 다른 영역으로 확장하려는 시도에서 비롯됩니다.
기존에 XML 문서나 복잡한 데이터 구조를 다룰 때 XPath 가 표준처럼 사용되었지만, 최근 PHP 8.4 의 새로운 DOM API 도입과 같은 기술적 변화가 CSS 선택자를 네이티브로 지원하는 환경을 만들었습니다. 이로써 개발자들은 XPath 보다 직관적이고 작성하기 쉬운 CSS 선택자로 HTML 을 파싱할 수 있게 되었습니다. 특히 `:has()` 선택자처럼 자식 요소를 기준으로 부모 요소를 선택할 수 있는 기능은 CSS 의 역량을 한층 더 확장시켰으며, 이는 단순한 스타일 적용을 넘어 논리적 조건을 판단하는 쿼리 로직으로 활용될 수 있음을 시사합니다.
실제로 파이썬 구문 분석 도구인 pyastgrep 같은 프로젝트에서는 CSS 선택자를 사용하여 코드 트리를 탐색하고 특정 함수 호출 패턴을 찾아내는 실험이 이루어지고 있습니다. 이는 CSS 가 웹 문서의 계층 구조뿐만 아니라 프로그래밍 언어의 추상 구문 트리에서도 유효한 쿼리 언어로 작동할 수 있음을 보여줍니다. 마치 SQL 이 데이터베이스의 행과 열을 조회하듯, CSS 선택자는 코드나 문서 내의 특정 요소를 정교하게 필터링하고 조합할 수 있는 능력을 지니게 된 것입니다.
물론 CSS 를 쿼리 언어로 확장하는 데에는 성능 이슈나 복잡성 증가에 대한 우려도 존재합니다. 브라우저 렌더링 컨텍스트에서 텍스트 내용을 기준으로 선택하는 기능이 도입되지 못한 이유도 성능 최적화와 관련이 깊습니다. 그럼에도 불구하고, HTML, CSS, 자바스크립트라는 세 가지 언어를 각각 분리해 관리하는 현재의 웹 구조를 하나의 통합된 언어로 대체하려는 시도나, 기존 언어들의 경계를 허무는 실험들이 계속되고 있습니다. 이는 개발자들이 더 직관적이고 유연한 방식으로 데이터를 다루고자 하는 욕망이 반영된 결과이며, CSS 가 단순한 스타일 시트를 넘어 데이터와 논리를 조율하는 새로운 언어로 진화해 나갈지 주목해 볼 만한 시점입니다.