VớiVariable trong xsl: template phù hợp với mô hình
Một kiểu XSLT với một biến toàn cầu:
<xsl:variable name="lang" select="/response/str[@name='lang']"/>
Câu hỏi
đâu xa đến giới hạn rằng việc sử dụng các biến trong các vị từ là không chính xác trong mẫu phù hợp với xsl:template
, nhưng có thể chấp nhận được trong xsl:apply-templates
chọn mẫu?
<!-- throws compilation error, at least in libxslt -->
<xsl:template match="list[@name='item_list'][$lang]"/>
<!-- works as expected -->
<xsl:template match="list[@name='item_list'][/response/str[@name='lang']]"/>
<!-- works as expected -->
<xsl:template match="response">
<xsl:apply-templates select="list[@name='item_list'][$lang]">
</xsl:template>
Tôi không chắc đó là giới hạn, nhưng bạn có chắc '$ lang' của bạn chứa giá trị chuỗi (hoặc số) nhưng không phải là một số nút được đặt không? – YuS
@yuri, nó chứa tập hợp nút, nhưng tôi không thấy lý do tại sao tập hợp nút không được phép trong ngữ cảnh. – newtover
Tôi không thể cho bạn biết chi tiết về lý do hạn chế được chỉ định trong XSLT 1.0 nhưng tôi có thể cho bạn biết rằng nó đã biến mất trong XSLT 2.0, vì vậy bạn có thể cân nhắc chuyển sang phiên bản ngôn ngữ đó và một trong các phiên bản của nó Saxon 9 hoặc AltovaXML. –