如何将此XML转换为隐藏的表单字段?

时间:2014-04-01 11:14:34

标签: xml xslt

如何转换此XML

<products>
  <entry>
    <name handle="foo1">Foo1</name>
  </entry>
  <entry>
    <name handle="foo2">Foo2</name>
  </entry>
  <entry>
    <name handle="foo3">Foo3</name>
  </entry>
</products>

进入此HTML

<input value="fields[address,foo1,foo2,foo3]" />

使用XSLT?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

尝试以下样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

    <xsl:strip-space elements="*"/>

    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:template match="/">
        <xsl:element name="input">
            <xsl:attribute name="value"><xsl:text>fields[address,</xsl:text>
                <xsl:for-each select="products/entry/name">
                    <xsl:choose>
                        <xsl:when test="position()!=last()">
                            <xsl:value-of select="@handle"/><xsl:text>,</xsl:text>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="@handle"/>
                        </xsl:otherwise>
                    </xsl:choose>
                </xsl:for-each>
                <xsl:text>]</xsl:text>
            </xsl:attribute>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

输出:

<input value="fields[address,foo1,foo2,foo3]"/>