1 Câu hỏi: Tại sao Saxon lại gây ra lỗi với saxon.jar do CentOS phân phối, nhưng không phải với mã saxon từ sourceforge?

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi có máy chủ CentOS 7 hiện tại (tất nhiên là do người khác thiết lập) đang chạy Saxon. Nếu tôi chạy:

/usr/bin/java net.sf.saxon.Transform -s:input.xml -xsl:input.xsl -o:output.xml

... nó hoạt động hoàn hảo.

Trên máy chủ mới, tôi đã cài đặt Saxon thông qua "yum install saxon". Nếu tôi thử cùng một lệnh, nó sẽ thất bại với lỗi:

Error at HTML on line 19 column 38 of 2.xsl:
  XTSE0150: Simplified stylesheet: xsl:version attribute is missing
Failed to compile stylesheet. 1 error detected.

Nếu tôi tải xuống bản Saxon mới nhất từ ​​sourceforge.net/projects/saxon, hãy chuyển hướng CLASSPATH của tôi từ saxon.jar được cài đặt yum (ngày 2014!) sang tệp jar từ sourceforge, biến đổi hoạt động hoàn hảo.

Vì vậy, tôi có một CỐ ĐỊNH cho vấn đề (nghĩa là sử dụng phiên bản mới nhất từ ​​sourceforge, không phải phiên bản lỗi thời của CentOS) nhưng tôi vẫn tò mò về những gì đang diễn ra.

Đây có phải chỉ là một số lỗi cũ đã được sửa trong bản phát hành mới hơn không? Hoặc có thể tôi đang thiếu các tệp hỗ trợ trong các tệp có nguồn gốc từ nguồn, nhưng không có trong các tệp có nguồn gốc từ yum? Hay cái gì khác ???

Để biết giá trị của nó, đây là phần đầu của tệp XSLT của tôi. Lỗi đặc biệt chỉ vào cuối thẻ xsl: biểu định kiểu, mặc dù rõ ràng có cài đặt "phiên bản =" trong cấu hình đó:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:oai-pmh="http://www.openarchives.org/OAI/2.0/"
     xmlns:oai_qdc="http://worldcat.org/xmlschemas/qdc-1.0/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:dcmitype="http://purl.org/dc/dcmitype/"
     xmlns:edm="http://www.europeana.eu/schemas/edm/"
     xmlns:oclcdc="http://worldcat.org/xmlschemas/oclcdc-1.0/"
     xsi:schemaLocation="http://worldcat.org/xmlschemas/qdc-1.0/
                  http://worldcat.org/xmlschemas/qdc/1.0/qdc-1.0.xsd
                  http://purl.org/net/oclcterms
                  http://worldcat.org/xmlschemas/oclcterms/1.4/oclcterms-1.4.xsd"
     exclude-result-prefixes="xs"
     version="2.0"
     xmlns="http://www.loc.gov/mods/v3">

Cho rằng mã hoạt động hoàn toàn tốt với cài đặt Saxon thay thế, tôi không tin rằng có vấn đề với mã. Đó là một cái gì đó khác, nhưng tôi không biết những gì ...

    
0
1 Câu trả lời                              1                         

Bạn có thể tìm ra phiên bản nào của Saxon trong một tệp JAR cụ thể bằng cách thực hiện

java -cp saxon.jar net.sf.saxon.Version

và điều này sẽ hữu ích hơn rất nhiều so với việc chỉ cho chúng tôi biết bạn đã cài đặt nó từ đâu.

Thông báo lỗi gợi ý cho tôi rằng "biểu định kiểu" đang được sử dụng thực sự không phải là một bản định kiểu, mà là một tài liệu XML thông thường. (Saxon thấy rằng phần tử gốc không phải là xsl:stylesheet, vì vậy nó quyết định nó phải là một bản định kiểu đơn giản hóa, sau đó nó tìm thuộc tính xsl:version, thấy rằng không có một và phàn nàn).

Tôi không biết chính xác những gì sai ở đây, nhưng ứng dụng đang sử dụng một lời mời của Saxon hoạt động với một bản phát hành và không hoạt động với bản khác. Không có nhiều thay đổi không tương thích với giao diện dòng lệnh trong suốt 20 năm cuộc đời của Saxon, nhưng đã có một vài thay đổi và tôi nghi ngờ một trong những phiên bản Saxon này thực sự rất cũ.

SAU KHI

Có một manh mối khác mà tôi đã bỏ lỡ trong lần đọc đầu tiên: thông báo lỗi đề cập đến một tệp có tên 2.xsl. Từ thông tin được cung cấp, chúng ta không thể thấy 2.xsl là gì. Đó phải là tệp có vẻ là biểu định kiểu nhưng không phải ... Nhưng tại sao nó có tên khác? Chắc chắn thực tế là tệp của bạn có phần cuối của thẻ bắt đầu ở dòng 19, và tệp bí ẩn này cũng xuất hiện đáng kể. Có lẽ có một số tập lệnh đang được thực thi trước khi Saxon thực sự được gọi và điều đó tạo ra 2.xsl?

    
0
2019-05-08 17: 06: 22Z
  1. "2.xsl" chỉ là một tạo tác của tôi khi thay đổi tên tệp trong quá trình viết để cố gắng làm cho nó rõ ràng hơn bằng cách đổi tên tệp trong ví dụ từ "2 .xsl "thành" input.xsl ". Tôi cũng bỏ qua việc thay đổi tên tệp trong đầu ra lỗi. Xin lỗi ... tôi chỉ bắt gặp lỗi đó sau khi tải lại trang để kiểm tra phản hồi. FWIW ... Saxon được cài đặt bởi yum đang hiển thị thông tin phiên bản sau: SAXON 9.3.0.4 từ Saxonica (bản dựng 122216)
    2019-05-08 18: 09: 41Z
  2. 9.3.0.4 chắc chắn là khá cũ (2010-12-22) và thậm chí chưa được cập nhật với các bản phát hành bảo trì sửa lỗi (lần cuối cùng trên nhánh 9.3 là 9.3 .0.11). Phải nói rằng, nếu đây là một lỗi của người Saxon thì đó là một lỗi khá khó xảy ra. Nhưng tôi e rằng không có cách nào chúng tôi sẽ điều tra một vấn đề trong một bản phát hành cổ xưa không xảy ra trong một bản gần đây hơn.
    2019-05-08 21: 27: 26Z
nguồn đặt đây