Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / трабл с transformNode & XSL. / 6 сообщений из 6, страница 1 из 1
16.01.2007, 09:22
    #34257528
Vladimir Kovalevskii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трабл с transformNode & XSL.
есть Javascript вида:
Код: plaintext
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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
  	  function test_click()
          {
         	//init xmlhttp
                var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

                var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
                var xslDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");

                //response proceeding
                xmlhttp.onreadystatechange = function(){
                 if (xmlhttp.readyState ==  4 )
                 {
                  //get the return envelope
                  xmlDoc.async = false;
                  xmlDoc.load(xmlhttp.responseXml);
                  if (xmlDoc.parseError.errorCode !=  0 )
                  {
                   alert(xmlDoc.parseError.reason);
                  }
                  else
                  {
		   xslDoc.async = false;
                   xslDoc.load("soap.xsl");
		   if (xslDoc.parseError.errorCode !=  0 )
                   {
                    alert(xslDoc.parseError.reason);
                   }
                   else
                   {
                    document.all.output.innerHTML = xmlDoc.transformNode(xslDoc);
                    alert(document.all.output.innerHTML);
                   }
                  }
                 }
                }

                //load params

                var s_soap_params =     "<?xml version=\"1. 0 \" encoding=\"utf- 8 \"?>\n"
                                        +"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/ 2001 /XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/ 2001 /XMLSchema\">\n"
                                        +"<soap:Body>\n"
                                        +"<GetEcoClass xmlns=\"http://tempuri.org/\">\n"
                                        +"<args>\n"
                                        +"<TypeName>NFS_FinanceCoreUnit.Folders</TypeName>\n"
                                        +"<PropertyName>RootId</PropertyName>\n"
                                        +"<PropertyValue>child</PropertyValue>\n"
                                        +"<Format>\n"
                                        +"<PropertyDelemitier>0</PropertyDelemitier>\n"
                                        +"<RequestedProperties>ucName</RequestedProperties>\n"
                                        +"<RootedId>50:7996</RootedId>\n"
                                        +"</Format>\n"
                                        +"</args>\n"
                                        +"</GetEcoClass>\n"
                                        +"</soap:Body>\n"
                                        +"</soap:Envelope>\n";


	     	xmlhttp.open("POST", "http://nek-slv-kovalevskiy/core_srv/eco_class_provider.asmx" , true);
                xmlhttp.setRequestHeader("Host","nek-slv-kovalevskiy");
                xmlhttp.setRequestHeader("Content-Type","text/xml; charset=utf-8");
                xmlhttp.setRequestHeader("SOAPAction","http://tempuri.org/GetEcoClass");
                xmlhttp.send(s_soap_params);
         }

и xsl

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
  <xsl:template match = "Envelope/Body/GetEcoClassResponse/GetEcoClassResult">
        <table border="1">
	<xsl:for-each select="Staff/EcoClassData">
        <tr>
          <td>ID :</td>
	  <td><xsl:value-of select="ID"/></td>
          <td>Текст :</td>
	  <td><xsl:value-of select="Text"/></td>
          <td>Дата :</td>
	  <td><xsl:value-of select="Data"/></td>
        </tr>
        </xsl:for-each>
        </table>
  </xsl:template>
</xsl:stylesheet>

дело в том, что transformNode всегда возвращает xmlDoc.text т.е. текст из xml полученного xml.
Не понимаю в чём трабл.
...
Рейтинг: 0 / 0
16.01.2007, 10:36
    #34257767
Vladimir Kovalevskii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трабл с transformNode & XSL.
это xml который приходит с сревера и котрый я пытаюсь разобрать с помощью вышепреведённого XSL:
Код: plaintext
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.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
 <GetEcoClassResponse xmlns="http://tempuri.org/">
   <GetEcoClassResult>
     <TypeName>NFS_FinanceCoreUnit.Folders</TypeName>
     <Staff>
       <EcoClassData>
         <ID> 50 : 7997 </ID>
         <Text>Статьи бюджета</Text>
         <Data>no data</Data>
       </EcoClassData>
       <EcoClassData>
         <ID> 50 : 7998 </ID>
         <Text>Типы бюджета</Text>
         <Data>no data</Data>
       </EcoClassData>
       <EcoClassData>
         <ID> 50 : 8001 </ID>
         <Text>Бюджетные операции</Text>
         <Data>no data</Data>
       </EcoClassData>
     </Staff>
   </GetEcoClassResult>
  </GetEcoClassResponse>
</soap:Body>
</soap:Envelope>
...
Рейтинг: 0 / 0
16.01.2007, 12:47
    #34258364
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трабл с transformNode & XSL.
префикс пространства имён soap не указал
...
Рейтинг: 0 / 0
16.01.2007, 12:48
    #34258372
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трабл с transformNode & XSL.
и tempuri.org тоже. Курить доки по пространствам имён в хмл
...
Рейтинг: 0 / 0
16.01.2007, 14:13
    #34258784
Vladimir Kovalevskii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трабл с transformNode & XSL.
вкурил, написал следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
xmlns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<xsl:output method="html"/>
  <xsl:template match = "/">
        <table border="1">
        <tr>
          <td><b>ID</b></td>
          <td><b>Текст</b></td>
          <td><b>Дата</b></td>
        </tr>
	<xsl:for-each select="soap:Envelope/soap:Body/GetEcoClassResponse/GetEcoClassResult/Staff/EcoClassData">
        <tr>
	  <td><xsl:value-of select="ID"/></td>
	  <td><xsl:value-of select="Text"/></td>
	  <td><xsl:value-of select="Data"/></td>
        </tr>
        </xsl:for-each>
        </table>
  </xsl:template>
</xsl:stylesheet>


пусто, оба xmlns появились как аттрибуту тега table
...
Рейтинг: 0 / 0
16.01.2007, 16:36
    #34259353
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трабл с transformNode & XSL.
Код: plaintext
xmlDoc.load(xmlhttp.responseXml);
хмм… responseXml уже имеет тип DomDocument, по идее, его не надо загружать.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / трабл с transformNode & XSL. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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