как выполнить и отобразить результат xslt на веб-странице? - PullRequest
0 голосов
/ 28 июля 2011

У меня есть следующие три файла, и он должен взять файлы xml и xsl и обработать их в соответствии с ними и отобразить результат в браузере.Но теперь проблема в том, что, когда я дважды щелкаю HTML по Chrome и IE7, у меня все получается пустая страница.Может кто-нибудь сказать, почему это так и как правильно выполнить файл xslt и отобразить результат на веб-странице?Большое спасибо.

student.xml file

<?xml version="1.0" encoding="ISO-8859-1"?>

<data>
 <student>
  <name>Bitu Kumar</name>
  <course>MCA</course>
  <sem>6</sem>
  <marks>80</marks>
 </student>
 <student>
  <name>Santosh Kumar</name>
  <course>MCA</course>
  <sem>5</sem>
  <marks>70</marks>
 </student>
 <student>
  <name>Ashish</name>
  <course>M.Sc.</course>
  <sem>4</sem>
  <marks>80</marks>
 </student>
 <student>
  <name>Mahesh</name>
  <course>MA</course>
  <sem>3</sem>
  <marks>80</marks>
 </student>
</data>

and following student.xsl file

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
    <body>
     <h2>Student DataBase</h2>
    <table border="1">
          <tr>
             <th  bgcolor="yellow">Name</th>    
      <xsl:for-each select="data/student">
                        <td width="200"><xsl:value-of select="name"/></td>
             </xsl:for-each>
           </tr>
          <tr>
             <th  bgcolor="yellow">Course</th>    
      <xsl:for-each select="data/student">
                        <td width="200"><xsl:value-of select="course"/></td>
      </xsl:for-each>
          </tr>
           <tr>
             <th  bgcolor="yellow">Marks</th>    
      <xsl:for-each select="data/student">
                        <td width="200"><xsl:value-of select="marks"/></td>
      </xsl:for-each>
           </tr> 
           <tr>
             <th  bgcolor="yellow">Semester</th>    
      <xsl:for-each select="data/student">
                        <td width="200"><xsl:value-of select="sem"/></td>
      </xsl:for-each>
           </tr>
       </table>
     </body>
   </html>
</xsl:template>
</xsl:stylesheet>

and following student.html file

<html>
 <head>
 <title> Testing IE </title>
 <script langauge="JavaScript" type="text/javascript">
  function loadXMLDoc(dname)
  {
   if (window.XMLHttpRequest)
     {
      xhttp=new XMLHttpRequest();
     }
   else
     {
      xhttp=new ActiveXObject("Microsoft.XMLHTTP");
     }
   xhttp.open("GET",dname,false);
   xhttp.send("");
   return xhttp.responseXML;
  }

  function displayResult()
  {
   xml=loadXMLDoc("student.xml");
   xsl=loadXMLDoc("student.xsl");
   // code for IE
   if (window.ActiveXObject)
     {
      ex=xml.transformNode(xsl);
      document.getElementById("example").innerHTML=ex;
     }

   // code for Mozilla, Firefox, Opera, etc.
   else if (document.implementation && document.implementation.createDocument)
     {
      xsltProcessor=new XSLTProcessor();
      xsltProcessor.importStylesheet(xsl);
      resultDocument = xsltProcessor.transformToFragment(xml,document);
      document.getElementById("example").appendChild(resultDocument);
     }
  }
 </script>
 </head>

 <body onLoad="displayResult()">
  <div id="example" />
 </body>
</html>

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Реально проще всего просто поместить инструкцию таблицы стилей в ваш XML-документ и просто открыть XML-документ.

Просто запустите ваш XML-документ так:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
<data>
 <student>
 etc..

Тебе даже не нужен твой файл student.html.

0 голосов
/ 03 апреля 2015

@ Flynn1179, я полагаю, что ОП хочет сделать это, используя HTML:

@ Оригинальный постер Вместо того, чтобы вставлять код здесь, я укажу вам на пост в блоге, который, как мне кажется, охватывает именно то, что вы ищетеfor: http://johanlouwers.blogspot.co.uk/2011/05/render-xml-into-div-using-ajax-and-xsl.html

Примечание: Если вы запустите пример, сделайте это с помощью браузера напрямую, как я обнаружил, запуская файл test.html из IDE, например, результаты WebStromв том, что происходит при нажатии на ссылки.Это могло быть причиной того, что вы каждый раз получали пустую страницу.

Если это ответ на ваш вопрос (или ближайший к нему ответ), пожалуйста, пометьте его как выбранный ответ, чтобы этот пост можно было перечислитькак решено.

Если вам неясно, как адаптировать код в файле HTML в сообщении блога, чтобы создать решение вашей проблемы, просто прокомментируйте здесь, и я создам персонализированную адаптацию для вас.

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