2010-12-14 25 views
9

Tôi đang sử dụng phép biến đổi xslt trên dự án hiện tại của mình. Các xslts gốc được viết ở định dạng stylesheet 1.0. Dự án được chạy trên máy chủ Apache Tomcat. Trong nhật ký đầu ra từ máy chủ, cảnh báo:Cần phải chặn "Cảnh báo: chạy biểu định kiểu XSLT 1.0 với bộ xử lý XSLT 2.0" trong tệp nhật ký xuất bản Tomcat

Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor 

liên tục in các nhật ký tiêu chuẩn từ Tomcat. Tôi đã thử thay đổi số phiên bản stylesheet thành "2.0" nhưng các phần của dự án của tôi không nhận được dữ liệu chính xác sau khi đến máy biến áp. Chỉ có lý do tại sao tôi muốn khắc phục vấn đề này là do tệp nhật ký chiếm quá nhiều không gian bộ nhớ. Vì vậy, không ai biết làm thế nào để ngăn chặn các cảnh báo cho máy chủ Tomcat cụ thể? Việc áp dụng một cảnh báo cụ thể này sẽ được ưu tiên hơn nhưng bất kỳ ý kiến ​​nào cũng được đánh giá cao. Cảm ơn bạn.

Trả lời

11

Bạn không thể chạy phép biến đổi bằng bộ xử lý XSLT 1.0?

Nếu câu trả lời là số âm, thì không phải là ý tưởng hay để chạy phép chuyển đổi XSLT 1.0 với bộ xử lý XSLT 2.0.

Đề xuất của tôi là thay đổi thuộc tính phiên bản <xsl:stylesheet> thành 2.0 và để gỡ lỗi mã sao cho kết quả chính xác được tạo. Điều này loại bỏ các cảnh báo và cũng có bất kỳ efects bên xấu của chế độ tương thích ngược (chẳng hạn như vẫn còn sử dụng XPath 2.0 XDM).

+0

Bộ xử lý mà tôi phải sử dụng là 2.0, nhưng nó tương thích ngược để nó chạy 1.0 XSLT, tôi chỉ muốn chặn cảnh báo để không điền các tệp nhật ký từ Tomcat. – user542447

+0

Bạn không nên chạy phép chuyển đổi XSLT 1.0 bằng bộ xử lý XSLT 2.0. Đề xuất của tôi để thay đổi thuộc tính 'version' của' 'thành' 2.0' và để gỡ lỗi mã sao cho kết quả chính xác được tạo ra. Điều này loại bỏ các cảnh báo và cũng có bất kỳ efects bên xấu của chế độ tương thích ngược (chẳng hạn như vẫn còn sử dụng XPath 2.0 XDM). –

+0

Cảm ơn Dimitre. – user542447

5

Trong trường hợp bạn đang sử dụng Saxon 8 + XSLT bộ xử lý 2.0, bạn có thể ngăn chặn cảnh báo này khi triệu gọi Transformer như thế này:

TransformerFactory tf = TransformerFactory.newInstance(); 
tf.setAttribute("http://saxon.sf.net/feature/version-warning", Boolean.FALSE); 
Transformer t = tf.newTransformer(); 
t.transform(xmlSource, outputTarget); 

Trong trường hợp bạn đang nhận được lỗi trong XMLUnit, bạn có thể đặt phiên bản XSLT đến 2,0 như thế này:

XMLUnit.setXSLTVersion("2.0"); 

Lưu ý:

Đối với dòng lệnh Saxon gọi, chạy Saxon như thế này: saxon -versionmsg:off

2

Câu trả lời từ @rustyx là nếu bạn đang sử dụng API Saxon. Chỉ trong trường hợp bạn, hoặc một số khác, cần điều tương tự từ dòng lệnh, thêm tùy chọn:

-versionmsg: off

1

Nếu stylesheet của bạn được viết bằng XSLT phiên bản 1.0 và phân tích cú pháp của bạn dựa trên XSLT 2.0, khi đó bạn sẽ thấy thông báo cảnh báo này. Nếu biểu định kiểu được viết bởi bạn thì hãy thử thực hiện các thay đổi để nó tương thích với XSLT 2.0. Nhưng nếu styesheet không được viết bởi (trong trường hợp của tôi nó không được viết bởi tôi), thì giải pháp đơn giản nhất là để ngăn chặn các cảnh báo, để nó sẽ không bloat lên các tập tin đăng nhập của bạn. Để chặn cảnh báo phiên bản này, bạn phải đặt nó làm thuộc tính cho nhà máy chuyển đổi. FeatureKeys định nghĩa một tập hợp các hằng số rất hữu ích.

TransformerFactory tFactory = TransformerFactory.newInstance(); 
tFactory.setAttribute(FeatureKeys.VERSION_WARNING, Boolean.FALSE); 
+0

Tâm trí để [giải thích giải pháp của bạn] (http://stackoverflow.com/help/how-to-answer) một chút? –

+0

Nếu biểu định kiểu của bạn được viết bằng XSLT phiên bản 1.0 và trình phân tích cú pháp của bạn dựa trên XSLT 2.0, thì bạn sẽ thấy thông báo cảnh báo này. Nếu biểu định kiểu được viết bởi bạn thì hãy thử thực hiện các thay đổi để nó tương thích với XSLT 2.0. Nhưng nếu styesheet không được viết bởi (trong trường hợp của tôi nó không được viết bởi tôi), thì giải pháp đơn giản nhất là để ngăn chặn các cảnh báo, để nó sẽ không bloat lên các tập tin đăng nhập của bạn. Để chặn cảnh báo phiên bản này, bạn phải đặt nó làm thuộc tính cho nhà máy chuyển đổi. FeatureKeys định nghĩa một tập hợp các hằng số rất hữu ích. – sri

+0

Sửa đổi câu trả lời của bạn bằng cách sử dụng nút chỉnh sửa sẽ là cách được chấp nhận để nâng cao câu trả lời. ;) –

Các vấn đề liên quan