2010-03-08 23 views
8

Tôi đang sử dụng Xalan với tiêu đề xsl sau:Làm thế nào để tôi thực hiện chuyển đổi xsl thụt đầu ra?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0" 
    xmlns:redirect="http://xml.apache.org/xalan/redirect" 
    extension-element-prefixes="redirect" 
    xmlns:xalan="http://xml.apache.org/xalan"> 
<xsl:output method="text" indent="yes" xalan:indent-amount="4"/> 

Và đầu ra là không thụt vào.

Bất kỳ ai có ý tưởng?

+0

Tôi đã sử dụng công cụ xsl trong notepad ++. Nó không thể thụt đầu ra khi tôi có lỗi đánh máy trong xsl của tôi. Xác minh tệp xsl của bạn có cú pháp chính xác. – flobadob

Trả lời

17

Đối thụt đầu dòng bạn cần phải sử dụng một không gian tên khác nhau: "http://xml.apache.org/xslt" (xem this issue)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0" 
xmlns:redirect="http://xml.apache.org/xalan/redirect" 
extension-element-prefixes="redirect" 
xmlns:xalan="http://xml.apache.org/xslt"> 
<xsl:output method="xml" indent="yes" xalan:indent-amount="4"/> 
+0

không gian tên xalan là loại tài liệu tại https://xalan.apache.org/xalan-j/apidocs/org/apache/xml/serializer/OutputPropertiesFactory.html – TWiStErRob

+0

'http: // xml.apache.org/xslt' là không được chấp nhận ngay cả trong phiên bản cũ (xem [Khai báo vùng tên xalan] (https://xalan.apache.org/old/xalan-j/extensions.html)), sử dụng 'http://xml.apache.org/xalan 'thay thế. – TWiStErRob

2

Tôi đoán bạn phải đặt method thành xml. Nếu điều đó không làm việc, hãy thử như sau:

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xalan"> 

<xsl:output method="xml" encoding="UTF-8" indent="yes" xalan:indent-amount="4"/> 
+0

tiếc là nó không hoạt động: ( – Vincent

+0

Có thể bạn đang xem xml với một ứng dụng không hiển thị đúng nội dung? – thelost

+0

Tôi đang xuất chuyển đổi trên bảng điều khiển – Vincent

5

Jirka-x1, cảm ơn bạn cho vấn đề này -link. Tôi đã sử dụng các mục sau (theo đề xuất của Ed Knoll 13/Aug/04):

<xsl:stylesheet ... xmlns:xslt="http://xml.apache.org/xslt"> 
<xsl:output ... indent="yes" xslt:indent-amount="4" /> 

Điều này phù hợp với tôi với xalan (java) 2.7.1.

8

Được vật lộn với điều này trong một thời gian, tuy nhiên chỉ có nó làm việc vô tình:

phím là để thêm <xsl:strip-space elements="*"/>

vì vậy nó sẽ giống như thế này:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:java="http://xml.apache.org/xalan/java" 
    xmlns:xalan="http://xml.apache.org/xslt"> 
<xsl:output method="xml" encoding="ASCII" indent="yes" xalan:indent-amount="4"/> 
<xsl:strip-space elements="*"/> 

Không chắc chắn tại sao , nhưng có lẽ loại bỏ tất cả các khoảng trắng giúp xalan tìm ra thụt đầu dòng

+0

Nếu không có' xsl: strip-space [@elements = "*"] ', thì xsl đang cố gắng giữ lại các nút khoảng trắng từ đầu vào trong đầu ra. – Timothy

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