powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как в HMTL отобразить 2 взаимосвязанных XML
3 сообщений из 3, страница 1 из 1
как в HMTL отобразить 2 взаимосвязанных XML
    #39852720
natjer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу в HMTL отобразить 2 взаимосвязанных XML. Пусть это будет
1). список папок, исполъзуемых в эл. почте и
2). Содержимое этих папок – письма.
Реализованы xsl, отображающие папки и содержимое конкретной папки (письма фильтрирую по значению параметра).

folders.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href="folders.xsl"?>
<folders>
	<name order="1" id="Inbox">Inbox</name>
	<name order="2" id="Outbox">Outbox</name>
	<name order="3" id="Fld165">Folder 3</name>
	<name order="4" id="Fld125">Folder 4</name>
	<name order="5" id="Fld242">Folder 5</name>
	<name order="6" id="Fld353">Folder 6</name>
</folders>



folders.xsl:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <ul> 
    <xsl:for-each select="folders/name">
      <li>
        <xsl:value-of select="text()"/>
      </li>
    </xsl:for-each>
    </ul> 
  </body>
</html>



mails.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href="mails.xsl?gpSelectedFolder='Inbox'"?>
<mails>
  <mail id="1245">
    <folderId>Inbox</folderId>
    <from><name>Name 1</name><mailAddress>name.1@mail.com<;/mailAddress></from>
    <sentDateTime>2019-01-01 01:01:01</sentDateTime>
    <subject>Mail 1</subject>
    <text>some text. Mail with 2 attachments</text>
    <attachments>
	  <attachment id="1" name="File Nr. 1" link="file1" type="pdf"/>
	  <attachment id="2" name="File Nr. 2" link="file2" type="word"/>
	</attachments>
  </mail>
  <mail id="127">
    <folderId>Inbox</folderId>
    <from><name>Name 1</name><mailAddress>name.1@mail.com<;/mailAddress></from>
    <sentDateTime>2019-01-03 05:08:01</sentDateTime>
    <subject>Others mail</subject>
    <text>some text. Mail without attachment</text>
  </mail>
  <mail id="178">
    <folderId>Fld165</folderId>
    <from><name>Name 1</name><mailAddress>name.1@mail.com<;/mailAddress></from>
    <sentDateTime>2019-01-03 05:01:01</sentDateTime>
    <subject>Mails 3</subject>
    <text>some text. Mail in other folder</text>
  </mail>
  <mail id="17808">
    <folderId>Outbox</folderId>
    <to><name>Name 1</name><mailAddress>name.1@mail.com<;/mailAddress></to>
    <to><name>Name 2</name><mailAddress>name.2@mail.com<;/mailAddress></to>
    <sentDateTime>2019-01-03 05:01:01</sentDateTime>
    <subject>I sent</subject>
    <text>Sent mail for 2 users. Mail with 3 attachments</text>
    <attachments>
	  <attachment id="1" name="File Nr. 1" link="file1" type="pdf"/>
	  <attachment id="2" name="File Nr. 2" link="file2" type="word"/>
	  <attachment id="3" name="File Nr. 3" link="file3" type="word"/>
	</attachments>
  </mail>
</mails>



mails.xsl:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:param name="gpSelectedFolder" select="'Outbox'"/>

<xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" indent="yes"/>

<xsl:template match="/">
 <html>
   <body>
     <xsl:call-template name="mailListInFolder"/>
   </body>
   </html>
</xsl:template>

<xsl:template name="mailListInFolder">
  <div>
   <h1>Mails</h1>
   <br/>
  <table border="1">
    <thead>
	  <tr>
      <td>FolderId</td>
      <td>Laikas</td>
      <td>From</td>
      <td>To</td>
      <td>Subject</td>
	  </tr>
    </thead>
    <tbody>
      <xsl:for-each select="mails/mail[folderId=$gpSelectedFolder]">
	    <tr>
          <td><xsl:value-of select="folderId"/></td>
          <td><xsl:value-of select="sentDateTime"/></td>
          <td><xsl:value-of select="from"/></td>
          <td><xsl:value-of select="to"/></td>
          <td><xsl:value-of select="subject"/></td>
        </tr>
      </xsl:for-each>
    </tbody>
  
  </table>
  </div>
</xsl:template>
	
</xsl:stylesheet> 




Список папок и содержимое отображаю в html:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<!DOCTYPE html>
<html>
<head>
    <title>Try HTML</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	
</head>


<body>
  <div>
    <h1>List of folders</h1>
    <script type="text/javascript">
	  document.write(" <iframe  id='frameFolders' name='frameFolders' src='xml/folders.xml'></iframe>");
    </script>
  </div>

  
  <div>
    <h1>List of mails</h1>
    <script type="text/javascript">
  	document.write(" <iframe  id='frameMails' name='frameMails' src='xml/mails.xml'  allowfullscreen></iframe>");
    </script>
  </div>
</body>


</html>




Подскажите, как отобразить список писем из другой папки. Цель - кликнуть по фреиму frameFolders и перезагрузить frameMails.
Как кликнуть и узнать, что за значение frameFolders выбрано, уже знаю. Никак не получается передать это в xsl (url xml/mails.xml?параметр=значение не работает; XMLHttpRequest выдает ошибку Access is denied (проверено в IE, Firefox) при установленной опции Miscellaneous -> Access Data sources accross domain -> Enable).
...
Рейтинг: 0 / 0
как в HMTL отобразить 2 взаимосвязанных XML
    #39852857
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XSL преобразование нужно делать на сервере. А клиенту возвращать готовый HTML.

Для преобразования на клиенте для IE может сработать такой код
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
var source = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.6.0");
source.async = false;
source.validateOnParse = true;
if (source.load(xmlFile) {
  var stylesheet = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.6.0");
  stylesheet.async = false
  stylesheet.validateOnParse = true;
  if (stylesheet.load(xslFile)) {
    var xsltemp = new ActiveXObject("Msxml2.XSLTemplate.6.0");
    xsltemp.stylesheet = stylesheet.documentElement;
    var xslproc = xsltemp.createProcessor();
    xslproc.input = source;
    xslproc.addParameter("gpSelectedFolder", folderID, "");
    xslproc.transform();
    alert(xslproc.output);
  }
}
...
Рейтинг: 0 / 0
как в HMTL отобразить 2 взаимосвязанных XML
    #39852924
natjer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Работает
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как в HMTL отобразить 2 взаимосвязанных XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]