Tôi có một cuộc gọi một cách hợp lý phức tạp để xsl: apply-templates:Cách sử dụng biến XSL trong xsl: apply-templates?
<xsl:apply-templates select="columnval[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
Khái niệm được tái sử dụng ở những nơi khác như thế này:
<xsl:apply-templates select="someothernode[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
tôi muốn khái quát nó bằng cách nào đó, vì vậy tôi có thể xác định nó một lần và tái sử dụng nó ở nơi khác. Tuy nhiên, điều này dường như không hoạt động:
<xsl:variable name="x">@id and not(@id='_Name_') and not(@id='Group') and not(@id='_Count_')</xsl:variable>
<xsl:apply-templates select="columnval[$x]"/>
<xsl:apply-templates select="someothernode[$x]"/>
Có cách nào khác hay hơn để làm việc này? Tất cả những gì tôi muốn là sử dụng lại biểu thức xpath trong nhiều cuộc gọi khác nhau tới xsl: apply-templates (một số trong đó chọn từ các trẻ khác nhau).
Điều này sẽ được sử dụng trong ứng dụng khách, vì vậy tôi không thể sử dụng bất kỳ tiện ích mở rộng nào hoặc chuyển sang XSLT 2 một cách không may. :(
Cảm ơn.
Tốt câu hỏi. Xem câu trả lời của tôi cho một mô tả về hai giải pháp khả thi (XSLT 1.0 và XSLT 2.0) và gợi ý một giải pháp mạnh mẽ hơn, sử dụng các hàm bậc cao hơn. –