Как я могу изменить XML DOM с помощью JavaScript, при использовании XML + XSLT на стороне клиента - PullRequest
3 голосов
/ 20 мая 2010

Например:

XML:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="example.xsl"?>
<document>
  <foo>bar</foo>
</document>

XSL:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <head>
        <title>example</title>
        <script type="text/javascript">
          /* magic javascript that alters the foo-node to contain something else */
        </script>
      </head>
      <body>
        <p>Foo: <xsl:value-of select="foo" /></p>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Я хочу, чтобы этот JavaScript модифицировал DOM XML, а не HTML DOM!

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Это невозможно, и даже если бы это было возможно, я понятия не имею, что вы ожидаете от него.

XML уже преобразован для отображения, XSLT не обновляет представлениев настоящее время.

Просмотр источника в браузере будет показывать только источник в том виде, в котором он был отправлен, а не сериализацию DOM с изменениями.

Отладчики, такие как Firebug, будут показывать сериализацию DOM в отображенном виде, в браузере (т.е. преобразованный DOM, плюс любые скриптовые модификации).

1 голос
/ 20 мая 2010

Я думаю, что это невозможно. Ко времени запуска Javascript XSLT-преобразования уже были применены, и для всех целей и задач XML просто исчез.

Подумайте об этом: ваш Javascript будет работать только тогда, когда анализатор HTML увидит ваш тег <script> и поймет его семантику. Это не произойдет, пока после преобразования.

Раньше я не делал , чтобы много работать с XSLT через браузеры, поэтому вам следует поддерживать надежду на то, что какой-то пользователь 100K заглянет и покажет мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...