Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование DOM для создания документа XML, Пример из книги 
:(
    Опции темы
Ln78
Дата 16.3.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Начал изучать XML по книге "ХМL для профессионалов", изд-во "ЛОРИ", 2001. Дошёл до примера "Использование модели DOM для создания документа XML на основе текста". 

Фрагмент примера ниже. 

Код

<%@ Language=VBScript %>
<HTML>
<HEAD>
   <TITLE>Thank you for submitting your book information!</TITLE>
   <script>
   function renderElements()
   {
      bookInfo.innerHTML =
         docBook.transformNode(bookXSL.documentElement);
   ...............................................
   }
   </SCRIPT>
   <%
      Sub AddElementToParent (domBook, elemParent, sChild, sValue)
         Dim elemSubelement
         Dim textSubelement

         Set elemSubelement = domBook.CreateElement(sChild)
         Set textSubelement = domBook.CreateTextNode(sValue)
         elemSubelement.appendChild(textSubelement)
         elemParent.appendChild(elemSubelement)

         Set elemSubelement = Nothing
         Set textSubelement = Nothing
      End Sub

      Sub WriteNodeXML (nodeTarget)
         Dim i

         If nodeTarget.NodeType = 1 Then
            ' Element
            Response.Write "<" & nodeTarget.tagName & ">"
            For i = 0 to nodeTarget.childNodes.Length - 1
               WriteNodeXML nodeTarget.childNodes.item(i)
            Next
            Response.Write "</" & nodeTarget.tagName & ">"
         ElseIf nodeTarget.NodeType = 3 Then
            ' Text Node
            Response.Write nodeTarget.data
         End If

      End Sub
   %>

   <XML id=docBook>
      <%
         Dim fileInvoice
         Dim tsInvoice
         Dim domInvoice
         Dim elemInvoice
         Dim elemLineItem

         Dim sFilename
         Dim sPath
         Dim sLine
         Dim sWork

         Const ForReading = 1

         sFilename = "e:\inetpub\wwwroot\3110\dom\book.txt"

         ' create the instance of the DOM and the root Book element
         Set domBook = CreateObject("Microsoft.XMLDOM")
         domBook.async = false

         Set elemBook = domBook.CreateElement("Book")
         domBook.appendChild elemBook

         ' open the file
         Set fileBook = CreateObject("Scripting.FileSystemObject")
         Set tsBook = fileBook.OpenTextFile(sFilename, ForReading)

         ' process the title and publisher line
         sLine = tsBook.ReadLine

         sWork = Trim(Mid(sLine, 1, 30)) ' Title
         AddElementToParent domBook, elemBook, "Title", sWork

         sWork = Trim(Mid(sLine, 31, 20)) ' Publisher
         AddElementToParent domBook, elemBook, "Publisher", sWork

       ...............................................

         tsBook.Close

         WriteNodeXML elemBook

         ' and clear our objects
         Set fileBook = Nothing
         Set tsBook = Nothing
         Set domBook = Nothing
         Set elemBook = Nothing
         Set elemAuthor = Nothing
         Set elemRecSubjCategories = Nothing
         Set elemAuthors = Nothing
      %>
   </XML>

   <XML id=bookXSL>
      <DIV xmlns:xsl="http://www.w3.org/TR/WD-xsl">
         <xsl:choose>
            <xsl:when test="/Book/Title[. $ne$ '']">
               <TABLE BORDER="0" CELLPADDING="1">
                  <TR>
                     <TD>Title:</TD>
                     <TD><xsl:value-of select="/Book/Title"/></TD>
                  </TR>
                  <TR>
                     <TD>Publisher:</TD>
                     <TD><xsl:value-of select="/Book/Publisher"/></TD>
                  </TR>
       ...............................................
               </TABLE>
            </xsl:when>
            <xsl:otherwise>
               Book information not yet specified.
            </xsl:otherwise>
         </xsl:choose>
      </DIV>
   </XML>

   ...............................................

   </HEAD>
   <BODY onload="renderElements()">

   <H2>Book information</H2>
   <P><DIV id=bookInfo></DIV></P>
   ...............................................

   </BODY>
</HTML>


У меня почему-то при отображении информации срабатывает ветка <xsl:otherwise>. В начале думал, что ошибка где-то при чтении из файла, потом все операции чтения убрал, заменил на задание значений непосредственно в коде, ничего не изменилось. Создалось впечатление, что фрагмент кода от
<XML id=docBook>
      <%
до 
      %>
   </XML>
вообще не выполняется. 
Подскажите, пожалуйста, в чём ошибка!
PM MAIL   Вверх
Exception
Дата 7.4.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 3
Всего: 186



Конечно, не выполняется. Это же код ASP.
Вообще, изучать XML DOM по его реализации в ASP по меньшей мере странно, т.к. енто никогда тебе не пригодится. Ищи инфу по использованию DOM в JavaScript.

Добавлено через 1 минуту и 9 секунд
Чтобы код ASP выполнялся, тебе нужно установить IIS (есть на диске с Windows XP) и переименовать файл в .asp.
PM   Вверх
Ln78
Дата 12.4.2007, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Exception: То, что это код ASP - это понятно, в примере вообще 2 файла: один *.htm, в котором кнопка для запуска анализа, другой - файл *.asp, фрагмент которого и приведён выше. IIS безусловно установлен. Сам сценарий выполняется, не выполняется только его фрагмент, указанный выше. Вопросы методики изучения XML следует задавать 13 авторам, написавшим книгу, пример из которой и рассматривается. Свои не относящиеся к вопросу комментарии и, тем более,странные объявления, следует давать в другом месте.
Люди! Неужели никто не знает, в чём причина? Но это пример из самого начала учебника. Или вопрос настолько тривиальный, что никто не захотел отвечать? Помогите новичку! 
PM MAIL   Вверх
Exception
Дата 12.4.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 3
Всего: 186



Цитата(Ln78 @  12.4.2007,  08:00 Найти цитируемый пост)
Вопросы методики изучения XML следует задавать 13 авторам, написавшим книгу, пример из которой и рассматривается.


Я не ошибусь, если предположу, что книге более пяти лет?

Что, если попробовать заменить xmlns:xsl="http://www.w3.org/TR/WD-xsl" на xmlns:xsl="http://www.w3.org/1999/XSL/Transform"?

Цитата(Ln78 @  12.4.2007,  08:00 Найти цитируемый пост)
Свои не относящиеся к вопросу комментарии и, тем более,странные объявления, следует давать в другом месте.


Спасибо за ценный совет! Непременно учту, на случай, если мне захочется написать не относящийся к вопросу комментарий или странное объявление.
PM   Вверх
Ln78
Дата 12.4.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Книга действительно очень старая (оригинальное издание в 2000г, перевод в 2001-м). 
Замена не помогла
PM MAIL   Вверх
Exception
Дата 12.4.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 3
Всего: 186



Приведи тогда полный код.
PM   Вверх
Ln78
Дата 13.4.2007, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Во вложении - исходный код, 3 файла: текстовый, из которого должны читаться данные, BookForm.htm - содержит кнопку, по нажатию которой и выполняется DisplayBook.asp. Пути приведены такие, как в оригинальном примере

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Example.rar 2,15 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.