Отображение динамического содержимого во фрейме, управляемом деревом, созданным из XML, в другом фрейме - PullRequest
0 голосов
/ 11 марта 2009

У меня есть XML-файл:

<root>
  <foo>
    <!--Content Here-->
  </foo>
</root>

Теперь я хочу сгенерировать из него HTML-файл. HTML имеет две вертикальные рамки. Слева отображается древовидная структура файла XML. И я хочу, чтобы правильный отображал содержимое дерева: при нажатии на узел «foo» содержимое будет отображаться справа.

Теперь я написал XSL-файл для просмотра дерева

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

<xsl:output method="html"/>

<xsl:template match="/">
<html>
<head>
  <!-- Some JS code to deal with the "expand", "collapse"... sth like these-->
</head>
<body>
  <table border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td>
        <a onclick="toggle(this)"><img src="plus.gif"/><img src="folder.gif"/>root</a>
        <div style="display:none;">
          <table border="0" cellpadding="0" cellspacing="0">
            <tr>
          <td width="15"></td>
              <td>
                <a><img src="page.gif"/>Foo</a>
              </td>
            </tr>
          </table>
        </div>
      </td>
    </tr>
  </table>
</body>
<html>
</xsl:template>
</xsl:stylesheet>

и HTML-файл:

<html>
<head>
<script language="javascript">
function populateFrames(){
    var x = new ActiveXObject("Microsoft.XMLDOM");
    var s = new ActiveXObject("Microsoft.XMLDOM");
    x.async = false
    s.async = false
    x.load("source.xml");
    s.load("tree.xsl");
    var html = x.transformNode(s);
    var destination = document.frames("header").document.open("text/html","replace");
    destination.write(html);
}
</script>
</head>

<frameset onload="populateFrames()" cols="25%,*">
  <frame name="header" scrolling="auto" target="main">
  <frame name="main">
</frameset>
</html>

Как видите, дерево будет отображаться в рамке header, а я хочу, чтобы содержимое было в рамке main

Может кто-нибудь сказать мне, как это сделать?

1 Ответ

0 голосов
/ 11 марта 2009

В "tree.xsl" я бы отображал содержимое HTML как скрытый элемент для каждого узла дерева. Затем, когда щелкнет узел дерева, используйте последние две строки JavaScript, чтобы открыть 2-й фрейм контента и написать соответствующий HTML-контент.

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