我有像这样的xml堆栈;
<translations>
<message1>A message</message1>
<message2>A second message</message2>
</translations>
使用xslt和for-each方法,如何将名称(message1,message2)和值(消息,第二条消息)作为键/值对获取?]
编辑:
我想要的输出将用于生成javascript对象,例如
<script type="text/javascript">
var t = {
<xsl:value-of select="name()" /> : '<xsl:value-of select="." />'
}
</script>
显然上述情况不起作用,但那是我最初的想法......
答案 0 :(得分:2)
<xsl:template match="/">
<script type="text/javascript">
<xsl:text>var t = {</xsl:text>
<xsl:for-each select="translations/*">
<xsl:value-of select="concat(name(), ' : ')" />
<xsl:text>'</xsl:text>
<xsl:value-of select="." />
<xsl:text>'</xsl:text>
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
<xsl:text>
</xsl:text>
</xsl:for-each>
<xsl:text>}</xsl:text>
</script>
</xsl:template>
输出:
<script type="text/javascript">var t = {message1 : 'A message',
message2 : 'A second message'
}</script>
答案 1 :(得分:0)
你可以试试这个:
<xsl:template match="translations">
<xsl:for-each select="*">
<kvp key="{name()}" value="{.}"/>
</xsl:for-each>
</xsl:template>