我想處理表格單元格中的每個規則,並且當我使用變量時訪問正確的屬性值時遇到問題。XSLT 2.0選擇節點特定與變量與直接選擇
我想只處理底部規則(@標誌=「b」)。鑑於這種XML
<?xml version="1.0" encoding="UTF-8"?>
<cell>
<rules>
<rule flags="t" width="0.3528" colour="black"/>
<rule flags="b" width="0.3528" colour="black"/>
<rule flags="b" width="0.7056" colour="none"/>
<rule flags="b" width="0.3528" colour="black"/>
</rules>
<para>19.3%</para>
</cell>
如果我用這個XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="cell">
<xsl:variable name="i">2</xsl:variable>
<xsl:value-of select="child::rules/rule[contains(@flags, 'b')][2]/@width"/>
</xsl:template>
</xsl:stylesheet>
結果是「0.7056」,這正是我期待的,但如果我在選擇使用可變
<xsl:value-of select="child::rules/rule[contains(@flags, 'b')][$i]/@width"/>
結果是'0.3528 0.7056 0.3528'。它抓住了我所有規則元素的寬度屬性,而不僅僅是第二個元素,即使該變量的值爲2.
我想知道爲什麼使用變量與特定數字會產生差異,以及我如何去解決這個問題。
我認爲它必須處理的變量作爲字符串而不是整數,但有沒有辦法強制呢? – user3198443