Đã trả lời một số lượng lớn các câu hỏi XSLT tại đây trên Stack Overflow, tôi đã quen hơn với kỹ thuật nhóm Muenchian để nhóm các nút trong quá trình chuyển đổi XSL.[1] trong nhóm Muenchian có thực sự cần thiết không?
Khái niệm sử dụng trong đó thường là một cái gì đó như thế này:
*[generate-id() =
generate-id(key('kSomeKey', .)[1])]
Nó hầu như luôn chứa rằng [1]
, nhưng điều này đã luôn luôn cho tôi cảm thấy kỳ lạ.
Các XSLT 1.0 đặc tả định nghĩa generate-id()
như sau:
Chức năng generate-id trả về một chuỗi xác định duy nhất nút trong đối số node-set đó là đầu tiên theo thứ tự tài liệu.
(nhấn mạnh thêm)
Nó nêu rõ rằng các chức năng hoạt động trên nút đầu tiên theo thứ tự tài liệu, và trong bối cảnh này, các [1]
sẽ được chọn nút đầu tiên trong tập hợp theo thứ tự tài liệu, vì vậy có vẻ như là [1]
là không cần thiết.
[1]
được sử dụng rộng rãi đến mức tôi lưỡng lự để bỏ qua nó, nhưng dường như không liên quan. Có ai có thể dọn dẹp nó cho tôi không?
Nó sẽ là cần thiết trong XSLT 2.0, vì 'generate-id' không cho phép một bộ nút làm đối số đầu tiên trong đó, và ném một lỗi. Tất nhiên, nếu bạn đang sử dụng XSLT 2.0, bạn sẽ có nhiều khả năng sử dụng 'xsl: for-each-group' hơn là Muenchian Grouping. –