XMill thuộc nhóm kỹ thuật nén XML không truy vấn. Bộ nén XMill và bộ giải nén XDemill được sử dụng để nén dữ liệu XML cho mục đích chuyển đổi và lưu trữ dữ liệu. XMill không cần thông tin lược đồ DTD và XML Schema nhưng có thể khai thác tận dụng các thông tin về lược đồ để nâng cao tỉ lệ nén. XMill có thể được mở rộng thêm với các bộ nén có tính chuyên môn hóa cho chuỗi DNA, hình ảnh. XMill có thể nén tập tin XML với các cấu hình mặc định khi cấu hình không được thiết lập.
XMill áp dụng ba nguyên tắc cơ bản để nén dữ liệu XML.
Nguyên tắc thứ nhất: phân tách cấu trúc từ dữ liệu. Cấu trúc structure bao gồm các thẻ tag và các thuộc tính attribute . Dữ liệu data chứa một chuỗi các phần tử dữ liệu data item biểu diễn nội dung của phần tử và giá trị của thuộc tính.
Nguyên tắc thứ hai: nhóm các phần tử có liên quan với nhau. Các phần tử dữ liệu data item được nhóm vào trong các bộ chứa container , mỗi container được nén riêng rẽ nhau. Ví dụ: các mục dữ liệu <name> được nén vào trong một container, trong khi các mục dữ liệu <phone> được nén vào container thứ hai.
Nguyên tắc thứ ba: áp dụng những bộ nén khác nhau cho những bộ chứa container khác nhau. Một vài phần tử dữ liệu là ký tự hay số trong khi một số khác lại chuỗi DNA. XMill áp dụng các bộ nén có tính chuyên môn hóa specialized compressors hay c n gọi là các bộ nén ngữ nghĩa semantic compressors cho từng bộ chứa.
iểu thức bộ chứa (container expression) là thành phần cơ bản của XMill. Đây là một ngôn ngữ ngắn gọn được dùng cho việc nhóm phần tử dữ liệu vào trong các bộ chứa container và lựa chọn chính xác sự kết hợp giữa các bộ nén ngữ nghĩa với nhau. Mỗi biểu thức xác định một bộ chứa container duy nhất hay là một tập các bộ chứa container phụ thuộc vào số lượng thẻ của tài liệu XML . Sự lựa chọn bộ nén ngữ nghĩa được xác định bằng cách kết hợp các máy nén nguyên tử atomic compressor để tạo thành các bộ nén phức tạp hơn. Điều này khá hữu ích khi dữ liệu XML có kiểu dữ liệu phức tạp, chẳng hạn như dấu phẩy tách các số nguyên. Người dùng gõ các biểu thức bộ chứa trên d ng lệnh của XMill, hoặc lưu trữ chúng trong một tập tin d ng lệnh riêng biệt.XMill có hai hạn chế.
Thứ nhất, XMill không được thiết kế để làm việc cùng với bộ xử lý truy vấn query processor . Mục đích của nó là chuyển đổi và nén dữ liệu để giảm băng thông mạng, giảm không gian bộ nhớ. Hạn chế thứ hai của XMill đó là nó chỉ đạt được kết quả tốt cho những tập tin lớn, thường lớn hơn 20KB.