XSLT for-each中的动态变量

时间:2013-10-01 16:28:01

标签: xml xslt

我想提出问题,只考虑其选项(代码属性以问题代码开头的选项)。例如:如果我有一个问题T1Q1,我想只检索T1Q1_1,T1Q1_2等选项。

我做了一个for-each循环。我想迭代每个问题,获取其代码,然后再次迭代所有代码以问题代码字符开头的选项。但我不知道该怎么做。

XML:

<question code="T1Q1">Which encoding did you use?</question>
<option code="T1Q1_1">ISO-8859-1</option>
<option code="T1Q1_2">UTF-8</option>
<option code="T1Q1_3">Other</option>

<question code="T1Q2">Which blabla did you blabla?</question>
<option code="T1Q2_1">Absurdanipal</option>
<option code="T1Q2_2">Fantasmagoric</option>
<option code="T1Q2_3">Other</option>

XSLT:

<xsl:for-each select="pollns:question">
<xsl:value-of select="@code"/><br/>
  <xsl:for-each select="following-sibling::pollns:option[starts-with(@code,'T1Q1')]">
    <xsl:value-of select="."/><br />
  </xsl:for-each>
</xsl:for-each>

如你所见,我写了starts-with(@code, 'T1Q1')。我想用动态变量或类似的东西替换每个问题的T1Q1。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我想我已经找到了解决方案。

<强> XSLT:

<xsl:for-each select="pollns:question">
  <xsl:variable name="questionCode" select="@code"/>
  <xsl:value-of select="@code"/><br/>
     <xsl:for-each select="following-sibling::pollns:option[starts-with(@code,$questionCode)]">
       <xsl:value-of select="."/><br />
     </xsl:for-each>
</xsl:for-each>