parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Очень интересный вопрос...

527 02.12.2003 16:40

Действительно надо боротся с тем что стандартной формой закачать можно только один файл за раз.
Я на эту тему думал:
- javascript+DOM использовать
- придумать какой-нить ActiveX|Applet FTP и через него грузить файлы как через обычный.

в книжке(XML Professional) покопался, нашел такой пример, как мне кажется может пригодится здесь:

сохраняете как html файл пробуете:
<HTML>
<HEAD>
   <TITLE>Wrox Press book data entry page</TITLE>
</HEAD>
<BODY onload="initializeBook()">
   <H1>Wrox Press book data entry page</H1>
   <H3>Book information:</H3>
   <TABLE>
      <TR>
         <TD>Title:</TD><TD><INPUT id=txtTitle></TD>
      </TR>
      <TR>
         <TD>Publisher:</TD><TD><INPUT id=txtPublisher></TD>
      </TR>
      <TR>
         <TD>Published Date:</TD><TD><INPUT id=txtPubDate></TD>
      </TR>
      <TR>
         <TD>Abstract:</TD><TD><INPUT id=txtAbstract></TD>
      </TR>
      <TR>
         <TD>Pages:</TD><TD><INPUT id=txtPages></TD>
      </TR>
      <TR>
         <TD>ISBN:</TD><TD><INPUT id=txtISBN></TD>
      </TR>
      <TR>
         <TD>Price:</TD><TD><INPUT id=txtPrice></TD>
      </TR>
   </TABLE>
   <INPUT id=btnUpdate type=button value="Update book info"
          onclick="updateBookInfo()">

   <H3>Authors:</H3>
   <TABLE>
      <TR>
         <TD>Author:</TD><TD><INPUT id=txtAuthor></TD>
      </TR>
   </TABLE>
   <INPUT id=btnAddAuthor type=button value="Add author"
          onclick="addAuthor()">
   <H3>Categories:</H3>
   <TABLE>
      <TR>
         <TD>Category:</TD><TD><INPUT id=txtCategory></TD>
      </TR>
   </TABLE>
   <INPUT id=btnAddCategory type=button value="Add category"
          onclick="addCategory()">

   <XML id=docBook>
      <Book>
      </Book>
   </XML>

   <SCRIPT>

   var docBook;

   function initializeBook()
   {
      docBook = document.all("docBook").XMLDocument;
      docBook.async = false;
      renderElements();
   }

   function createOrReplaceElement(sElementName, sElementValue, elementParent)
   {
      var elementItem;
      var textValue;
      var nodelistOldItem;

      elementItem = docBook.createElement(sElementName);
      textValue = docBook.createTextNode(sElementValue);
      elementItem.appendChild(textValue);

      nodelistOldItem = elementParent.getElementsByTagName(sElementName);
      if (nodelistOldItem.length > 0)
      {
         elementParent.replaceChild(elementItem, nodelistOldItem.item(0));
      }
      else
      {
         elementParent.appendChild(elementItem);
      }
   }

   function updateBookInfo()
   {
      createOrReplaceElement("Title",
                             txtTitle.value,
                             docBook.documentElement);
      createOrReplaceElement("Publisher",
                             txtPublisher.value,
                             docBook.documentElement);
      createOrReplaceElement("PubDate",
                             txtPubDate.value,
                             docBook.documentElement);
      createOrReplaceElement("Abstract",
                             txtAbstract.value,
                             docBook.documentElement);
      createOrReplaceElement("Pages",
                             txtPages.value,
                             docBook.documentElement);
      createOrReplaceElement("ISBN",
                             txtISBN.value,
                             docBook.documentElement);
      createOrReplaceElement("Price",
                             txtPrice.value,
                             docBook.documentElement);

      renderElements();
   }

   function addAuthor()
   {
      var elementAuthor;
      var textAuthor;
      var nodelistAuthors;
      var elementAuthors;

      elementAuthor = docBook.createElement("Author");
      textAuthor = docBook.createTextNode(txtAuthor.value);
      elementAuthor.appendChild(textAuthor);
      nodelistAuthors = docBook.getElementsByTagName("Authors");
      if (nodelistAuthors.length == 0)
      {
         elementAuthors = docBook.createElement("Authors");
         docBook.documentElement.appendChild(elementAuthors);
      }
      else
      {
         elementAuthors = nodelistAuthors.item(0);
      }
      
      elementAuthors.appendChild(elementAuthor);

      renderElements();
   }

   function addCategory()
   {
      var elementCategory;
      var textCategory;
      var nodelistRecSubjCategories;
      var elementRecSubjCategories;

      elementCategory = docBook.createElement("Category");
      textCategory = docBook.createTextNode(txtCategory.value);
      elementCategory.appendChild(textCategory);
      nodelistRecSubjCategories =
         docBook.getElementsByTagName("RecSubjCategories");
      if (nodelistRecSubjCategories.length == 0)
      {
         elementRecSubjCategories = docBook.createElement("RecSubjCategories");
         docBook.documentElement.appendChild(elementRecSubjCategories);
      }
      else
      {
         elementRecSubjCategories = nodelistRecSubjCategories.item(0);
      }
      
      elementRecSubjCategories.appendChild(elementCategory);

      renderElements();
   }

   function renderElements()
   {
      document.all("divRawXML").innerText = docBook.xml;
      bookInfo.innerHTML = docBook.transformNode(bookXSL.documentElement);
      authorTable.innerHTML = docBook.transformNode(authorXSL.documentElement);
      categoryTable.innerHTML =
         docBook.transformNode(categoryXSL.documentElement);
   }

   </SCRIPT>

   <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>
                  <TR>
                     <TD>Published Date:</TD>
                     <TD><xsl:value-of select="/Book/PubDate"/></TD>
                  </TR>
                  <TR>
                     <TD>Abstract:</TD>
                     <TD><xsl:value-of select="/Book/Abstract"/></TD>
                  </TR>
                  <TR>
                     <TD>Pages:</TD>
                     <TD><xsl:value-of select="/Book/Pages"/></TD>
                  </TR>
                  <TR>
                     <TD>ISBN:</TD>
                     <TD><xsl:value-of select="/Book/ISBN"/></TD>
                  </TR>
                  <TR>
                     <TD>Price:</TD>
                     <TD><xsl:value-of select="/Book/Price"/></TD>
                  </TR>
               </TABLE>
            </xsl:when>
            <xsl:otherwise>
               Book information not yet specified.
           </xsl:otherwise>
         </xsl:choose>
      </DIV>
   </XML>

   <XML id=authorXSL>
      <DIV xmlns:xsl="http://www.w3.org/TR/WD-xsl">
         <TABLE BORDER="0" CELLSPACING="1">
            <TR>
               <TD><STRONG>Authors</STRONG></TD>
            </TR>
            <xsl:for-each select="/Book/Authors/Author">
               <TR>
                  <TD><xsl:value-of select="text()"/></TD>
               </TR>
            </xsl:for-each>
         </TABLE>
      </DIV>
   </XML>

   <XML id=categoryXSL>
      <DIV xmlns:xsl="http://www.w3.org/TR/WD-xsl">
         <TABLE BORDER="0" CELLSPACING="1">
            <TR>
               <TD><STRONG>Categories</STRONG></TD>
            </TR>
            <xsl:for-each select="/Book/RecSubjCategories/Category">
               <TR>
                  <TD><xsl:value-of select="text()"/></TD>
               </TR>
            </xsl:for-each>
         </TABLE>
      </DIV>
   </XML>

   <HR>
   <H2>Book information</H2>
   <P><DIV id=bookInfo></DIV></P>
   <P><DIV id=authorTable></DIV></P>
   <P><DIV id=categoryTable></DIV></P>
   <HR>
   The text expression of the current contents of the DOM tree is:
   <PRE><DIV id=divRawXML></DIV></PRE>
</BODY>
</HTML>
если потребуется могу коментарии к коду отсканить.