我试图使用<xsl:for-each select="@*">
来获取给定元素的所有属性,但是当我这样做时,我的<xsl:choose>
语句不执行。遍历XSLT中XML元素的所有属性
这里是我的工作元素:
<textBox id="Airfare" value="" label="text 1"/>
下面是我使用的XSLT模板:
<xsl:template match="textBox">
<div>
<xsl:choose>
<xsl:when test="@label">
<xsl:value-of select="@label"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>No Label Defined</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:element name="input">
<xsl:attribute name="type">text</xsl:attribute>
<xsl:for-each select="@*">
<xsl:choose>
<xsl:when test="@id">
<xsl:attribute name="name">form_<xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="id">form_<xsl:value-of select="@id"/></xsl:attribute>
</xsl:when>
<xsl:when test="@label">
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="current()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:element>
</div>
当我生成HTML使用PHP我得到这个:
<div>text 1<input type="text" id="Airfare" value="" label="text 1"></div>
正如您所看到的,它没有将form_
添加到id属性中,它没有生成名称属性,也没有跳过标签属性。
好问题(1)。请参阅我的回答以解释问题以及符合XSLT精神的简短而简单的解决方案。 – 2010-06-17 15:39:46