Как перебрать xml используя xslt - PullRequest
2 голосов
/ 12 сентября 2011

У меня есть стек 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>

Очевидно, что выше не работает, ноэто было мое первоначальное мышление ...

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011
<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>&#xA;</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>
0 голосов
/ 12 сентября 2011

Вы можете попробовать это:

<xsl:template match="translations">
  <xsl:for-each select="*">
    <kvp key="{name()}" value="{.}"/>
  </xsl:for-each>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...