Php 对于XSL中的每个循环单选按钮

Php 对于XSL中的每个循环单选按钮,php,html,xml,xslt,radio-button,Php,Html,Xml,Xslt,Radio Button,我遇到了以下问题:我有一个XML文件,从中我使用XSL创建了一个HTML文件。在XSL文件中,我有一个for-each循环,它创建了两个单选按钮,当然我只需要检查一个按钮,但是在我打开项目文件夹中的index.php文件后,就可以检查所有单选按钮。我怎样才能做到,在循环之后,只能选择一个单选按钮?提前谢谢你 下面是循环中的代码片段: <div data-role="fieldcontain"> <fieldset data-role="controlgroup">

我遇到了以下问题:我有一个XML文件,从中我使用XSL创建了一个HTML文件。在XSL文件中,我有一个for-each循环,它创建了两个单选按钮,当然我只需要检查一个按钮,但是在我打开项目文件夹中的
index.php
文件后,就可以检查所有单选按钮。我怎样才能做到,在循环之后,只能选择一个单选按钮?提前谢谢你

下面是循环中的代码片段:

<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>


另外,我认为ID不会改变,每次循环通过代码时,都会创建一个独立的单选按钮,显然属性
controlgroup
不会对按钮进行分组。

为了只检查一个单选按钮,所有
元素必须具有相同的
@name
属性。例如:

<input type="radio" name="radio-choice" id="radio-choice-3"/>
<input type="radio" name="radio-choice" id="radio-choice-4"/>

若要仅检查一个单选按钮,所有
元素必须具有相同的
@name
属性。例如:

<input type="radio" name="radio-choice" id="radio-choice-3"/>
<input type="radio" name="radio-choice" id="radio-choice-4"/>

此转换:

<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文档时(未提供!!!):


选择一
选择二
选择三
生成所需的正确结果:

<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>

选择一
选择二
选择三

并且在浏览器中显示时,任何时候只有一个单选按钮可以处于选中状态。此转换:

<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文档时(未提供!!!):


选择一
选择二
选择三
生成所需的正确结果:

<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>

选择一
选择二
选择三

并且当显示在浏览器中时,任何时候只有一个单选按钮可以处于选中状态。

作为旁注,在XSLT中为每个使用
,通常是一个坏主意。正如您在Dimitre的回答中所看到的,您可以很好地将
模板匹配应用于泛型模式。XSLT被设计成一个。作为旁注,在XSLT中为每个
使用
,通常是一个坏主意。正如您在Dimitre的回答中所看到的,您可以很好地将
模板匹配应用于泛型模式。XSLT被设计成一个。谢谢你,Dimitre!你的解决方案对我帮助很大!非常感谢你!谢谢你,迪米特里!你的解决方案对我帮助很大!非常感谢你!