Tuyên bố từ chối trách nhiệm: sau đây là tội lỗi chống lại XML. Đó là lý do tại sao tôi đang cố gắng để thay đổi nó với XSLT :)Khoảng trắng thuộc tính lưu giữ
XML của tôi hiện trông như thế này:
<root>
<object name="blarg" property1="shablarg" property2="werg".../>
<object name="yetanotherobject" .../>
</root>
Vâng, tôi đang đặt tất cả các dữ liệu văn bản trong các thuộc tính. Tôi hy vọng XSLT có thể cứu tôi; Tôi muốn tiến tới một cái gì đó như thế này:
<root>
<object>
<name>blarg</name>
<property1>shablarg</name>
...
</object>
<object>
...
</object>
</root>
Tôi đã thực sự nhận được tất cả những điều này làm việc cho đến nay, ngoại trừ rằng tội lỗi của tôi đối với XML đã hơn ... đặc biệt. Một số thẻ trông giống như sau:
<object description = "This is the first line
This is the third line. That second line full of whitespace is meaningful"/>
Tôi đang sử dụng xsltproc trong linux, nhưng dường như không có bất kỳ tùy chọn nào để giữ khoảng trắng. Tôi đã cố gắng sử dụng xsl: preserve-space và xml: space = "preserve" để không có kết quả. Mọi tùy chọn tôi đã tìm thấy dường như áp dụng để giữ khoảng trắng trong chính các phần tử, nhưng không phải là các thuộc tính. Mỗi lần duy nhất, các thay đổi trên được thay đổi thành:
This is the first line This is the third line. That second line full of whitespace is meaningful
Vì vậy, câu hỏi đặt ra là tôi có thể giữ khoảng trắng thuộc tính không?
Bạn nên thay thế khoảng trắng của mình với tham chiếu thực thể cho bên trong giá trị attribe, như thay thế '' với ''. Việc chuẩn hóa giá trị thuộc tính (3.3.3) sau đó phụ thuộc vào kiểu thuộc tính mà tôi nghĩ là 'CDATA' bằng cách defatult. Tuy nhiên tôi nghĩ rằng bạn có thể ép buộc nó với ' '>' - có thể hoặc có thể không chính xác. Sau đó, nếu bạn có một XSL, bạn cần đảm bảo xử lý không gian trắng của bạn theo cách thủ công, tôi đã thực hiện tương tự như 'string-join()' và 'tokenize()'. – n611x007
*** Nó có thể được thực hiện. *** Bạn có thể nhận được một ví dụ đầy đủ ([SSCCE] (http://www.sscce.org/ "Ngắn, Tự chứa, Sửa (Compilable), Ví dụ")) trong số câu trả lời của tôi cho một câu hỏi khác: http://stackoverflow.com/a/29780972/611007 (Như tôi đã giải thích ở trên, nó không phải là cách bạn cố gắng làm điều đó nhưng cuối cùng, nó sẽ hoạt động như bạn muốn.) – n611x007
liên quan: https://stackoverflow.com/questions/449627/ - liên quan: https://stackoverflow.com/questions/2004386/ - liên quan: https://stackoverflow.com/questions/1289524/ – n611x007