2012-08-07 39 views
27

tôi đang xem xét một trong hai để sử dụng khi xác định một xsl: template name = myTemplate sẽ được gọi trong tệp xsl khác.sự khác nhau giữa xsl: param và xsl: variable

mã di sản dường như sử dụng 'xsl: variable' khi được sử dụng trong xsl: template match = "legacyTemplate"

nên sự khác biệt giữa xsl là những gì: param và xsl: variable khi sử dụng nó trong xsl: Tên mẫu = myTemplate?

Trả lời

44

Sự khác biệt là giá trị của một xsl:param có thể là được đặt bên ngoài ngữ cảnh được khai báo. Ví dụ, xem:

<xsl:template ...> 
    <xsl:param name="p" select="'x'" /> 
    <xsl:variable name="v" select="'y'" /> 
... 

sau đó bạn biết rằng $v sẽ luôn luôn cung cấp cho bạn chuỗi 'y'. Nhưng đối với $p chuỗi 'x' chỉ là một mặc định: bạn sẽ thấy một giá trị khác nhau nếu mẫu được gọi với một trong hai xsl:apply-templates hoặc xsl:call-template trong đó có một lệnh như:
<xsl:with-param name="p" select="'not x'" />

<xsl:param> cũng có thể được sử dụng bên ngoài xsl:template, ở cấp cao nhất trong biểu định kiểu. Giá trị của tham số như vậy có thể được đặt khi bộ xử lý XSLT được gọi. Làm thế nào điều này được thực hiện phụ thuộc vào bộ vi xử lý và cho dù bạn gọi nó từ dòng lệnh hoặc theo chương trình.

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