0

質問とそのオプション (質問コードで始まるコード属性を持つもの) のみを取得したい。たとえば、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 を、質問ごとに変化する動的変数または同様のものに置き換えたいと考えています。

どうやってやるの?

4

1 に答える 1

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>
于 2013-10-01T16:38:33.433 に答える