2011-07-13 25 views
18

Sự khác biệt giữa exclude-result-prefixesextension-element-prefix là gì? Cả hai đều được sử dụng trong tiêu đề XSLT. Tôi đã tìm thấy extension-element-prefix khi sử dụng EXSLT và EXSLT website Howto nói rằng extension-element-prefix được sử dụng để "ngăn không cho các không gian tên của tiện ích mở rộng xuất hiện trong cây kết quả".Sự khác nhau giữa các tiền tố loại trừ-kết quả và tiền tố phần tử mở rộng trong khai báo không gian tên XSLT là gì?

Nhưng điều này không đúng (sử dụng libxslt). Chỉ exclude-result-prefixes xóa không gian tên tiện ích. Vậy tại sao tôi cần extension-element-prefix ???

mẫu:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:exsl="http://exslt.org/common" version="1.0" 
    extension-element-prefix="exsl"> 

<xsl:template match="/"> 
    <blabla/> 
</xsl:template> 

</xsl:stylesheet> 

đầu ra của tôi với libxslt (xsltproc):

<?xml version="1.0"?> 
<blabla xmlns:exsl="http://exslt.org/common"/> 

Trả lời

12

Để sử dụng chức năng EXSLT như một trong các namespace http://exslt.org/common bạn không cần thuộc tính extension-element-prefix. Điều đó chỉ cần nếu bạn muốn sử dụng các phần tử mở rộng như func:function trong không gian tên http://exslt.org/functions. Thuộc tính extension-element-prefix chỉ đơn giản là báo hiệu rằng bất kỳ phần tử nào có tiền tố đó không phải là các phần tử kết quả bằng chữ mà là hướng dẫn mở rộng ngoài các hướng dẫn được xác định bởi ngôn ngữ XSLT. Đối với exclude-result-prefixes, bạn đã hiểu đúng, nó giúp tránh mọi khai báo không gian tên trên các phần tử kết quả của bạn cho các không gian tên được khai báo và sử dụng trong biểu định kiểu chỉ để chọn các nút trong biểu thức đường dẫn hoặc mẫu khớp hoặc được sử dụng để chèn phần tử mở rộng.

+0

Ah ok. Điều này thật ý nghĩa. Tôi chỉ tự hỏi tại sao tôi nên sử dụng 'prefix-element-prefix' vì tôi có thể loại bỏ nó hoàn toàn bằng' http: // exslt.org/common'. Dường như tài liệu EXSLT là ** sai ** ở phần này. – therealmarv

+0

hoặc 'extension-element-prefix' chỉ ẩn các phần tử từ cây đầu ra cần' tiền tố phần tử mở rộng'. Để được lưu trên đường dẫn, tôi sẽ sử dụng 'extension-element-prefix' và' exclude-result-prefixes' cả hai cùng một lúc khi tôi sử dụng các thư viện mở rộng như EXSLT. – therealmarv

+1

Một số người sử dụng tiền tố phần tử mở rộng tất cả thời gian khi họ chỉ cần loại trừ tiền tố kết quả, và EEP có hai hiệu ứng: nó cho phép bạn sử dụng không gian tên cho phần tử mở rộng (đặc quyền bạn có thể bỏ qua), và nó thêm không gian tên vào danh sách ERP. –

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