时间:2010-07-26 10:59:40

标签: xslt

3 个答案:

答案 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以获得良好的输出(对于完整的样式表,它并不是必需的)