1

次の問題があります。XML ファイルがあり、そこから XSL を使用して HTML ファイルを作成しています。XSL ファイルには、for-each ループがあり、いくつかのラジオ ボタンが作成されます。もちろん、1 つのボタンだけをチェックする必要がありindex.phpますが、プロジェクト フォルダーでファイルを開いた後、すべてのラジオ ボタンをチェックすることができます。ループした後、ラジオボタンを1つだけ選択できるようにするにはどうすればよいですか? 前もって感謝します!

ループ内のコード スニペットは次のとおりです。

<div data-role="fieldcontain">
    <fieldset data-role="controlgroup">
        <input type="radio" name="radio-choice" id="radio-choice-3"  />
        <label for="radio-choice-3"><xsl:value-of select="text"/></label>
    </fieldset>
</div>

PS変更されないのはIDであり、ループがコードを通過するたびに独立したラジオボタンが作成され、明らかに属性controlgroupがボタンをグループ化しないと思います。

4

2 に答える 2

1

この変換:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="x">
    <div data-role="fieldcontain">
        <fieldset data-role="controlgroup">
            <input type="radio" name="radio-choice" id="radio-choice-{position()}"  />
            <label for="radio-choice-{position()}"><xsl:value-of select="text"/></label>
        </fieldset>
    </div>
 </xsl:template>
</xsl:stylesheet>

次の XML ドキュメントに適用した場合(何も提供されていません!!!):

<t>
 <x>
  <text>Choice one</text>
 </x>
 <x>
  <text>Choice two</text>
 </x>
 <x>
  <text>Choice three</text>
 </x>
</t>

必要な正しい結果が生成されます。

<div data-role="fieldcontain">
   <fieldset data-role="controlgroup">
      <input type="radio" name="radio-choice" id="radio-choice-1"/>
      <label for="radio-choice-1">Choice one</label>
   </fieldset>
</div>
<div data-role="fieldcontain">
   <fieldset data-role="controlgroup">
      <input type="radio" name="radio-choice" id="radio-choice-2"/>
      <label for="radio-choice-2">Choice two</label>
   </fieldset>
</div>
<div data-role="fieldcontain">
   <fieldset data-role="controlgroup">
      <input type="radio" name="radio-choice" id="radio-choice-3"/>
      <label for="radio-choice-3">Choice three</label>
   </fieldset>
</div>

また、ブラウザに表示される場合、常に 1 つのラジオ ボタンのみが選択状態になります。

于 2013-02-22T03:36:41.100 に答える
0

ラジオ ボタンを 1 つだけチェックできるようにするには、すべての<input type="radio"/>要素が同じ@name属性を持つ必要があります。例えば:

<input type="radio" name="radio-choice" id="radio-choice-3"/>
<input type="radio" name="radio-choice" id="radio-choice-4"/>
于 2013-02-21T21:00:01.070 に答える