答案 0 :(得分:1)
答案 1 :(得分:0)
答案 2 :(得分:0)
你的问题不明确,但我认为你需要这样的样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="items">
<form>
<xsl:apply-templates/>
</form>
</xsl:template>
<xsl:template match="item|option" priority="1">
<xsl:param name="pos" select="position()"/>
<xsl:apply-templates select="*">
<xsl:with-param name="pos" select="$pos"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="item/*|option/*">
<xsl:param name="pos"/>
<input type='hidden' name="{name()}_{$pos}" value="{.}"/>
</xsl:template>
</xsl:stylesheet>
通过这个正确的输入:
<items>
<item>
<item-name>vlaue</item-name>
<item-number>vlaue</item-number>
<quantity>vlaue</quantity>
<option>
<on0>vlaue</on0>
<os0>vlaue</os0>
<on1>vlaue</on1>
<os1>vlaue</os1>
</option>
</item>
</items>
输出:
<form>
<input type="hidden" name="item-name_1" value="vlaue" />
<input type="hidden" name="item-number_1" value="vlaue" />
<input type="hidden" name="quantity_1" value="vlaue" />
<input type="hidden" name="on0_1" value="vlaue" />
<input type="hidden" name="os0_1" value="vlaue" />
<input type="hidden" name="on1_1" value="vlaue" />
<input type="hidden" name="os1_1" value="vlaue" />
</form>
注意:模式匹配允许重用。 @priority用于解决item/*
和option
冲突,而不依赖于错误恢复。添加虚拟form
以获得良好的输出(对于完整的样式表,它并不是必需的)