我有一个这样的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>
显然上述方法不起作用,但这是我最初的想法...
最佳答案
<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>
关于xml - 如何使用xslt遍历xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7385713/