Maison >développement back-end >Tutoriel XML/RSS >Utilisez XMLdom pour générer des pages HTML statiques côté serveur

Utilisez XMLdom pour générer des pages HTML statiques côté serveur

黄舟
黄舟original
2017-03-06 16:43:311757parcourir

Afin d'améliorer la vitesse d'accès aux données de page générées côté serveur, il est souvent nécessaire de générer des pages htm statiques.
Habituellement, vous pouvez utiliser fso pour générer des pages HTML statiques.
Mais si fso est interdit ou si vous n'avez pas la permission d'utiliser fso, vous avez besoin d'autres méthodes pour le résoudre
Utiliser xmldom et utiliser sa méthode save() est une bonne solution
De plus, si le. les données sont au format XML, l'utilisation de save() est plus rapide que l'utilisation de fso et le taux de réutilisation du code est également élevé.

Mais il convient de noter que :
Lors de l'appel de la méthode xmldom.save(), la méthode d'encodage par défaut est "uft-8".
Si le type de sortie du document spécifié est "html" , en raison de son Le type d'encodage ne peut pas être spécifié. Lorsque les données contiennent des caractères chinois, vous constaterez que tous les caractères chinois dans les données htm enregistrées sont devenus tronqués

Solution :
mécanisme, généralement le navigateur. n'accepte pas le type html La page n'interprétera pas les balises autres que les balises htm.
a Spécifiez le type de document de sortie comme "xml"
b Spécifiez l'encodage (encoding="gb2312")
c. Spécifiez de conserver le format d'indentation (pour une lecture facile)

examples:
/*** create.asp ***/
<%
dim cXMLFile, cXSLFile
dim oXML, XSL
dim oOutput
dim cHtmLFile, cOutputFile

cHtmLFile = "book.htm"
&#39;cHtmLFile = "book_" & replace( replace( replace (now,":",""), "-", ""), " ", "") & ".htm"
cXMLFile = Server.MapPath("book.xml")
cXSLFile = Server.MapPath("book.xsl")
cOutputFile = Server.MapPath(cHtmLFile)
Set oXML = Server.CreateObject("Microsoft.XMLDOM") 
oXML.async = false
oXML.load(cXMLFile)
Set oXSL = Server.CreateObject("Microsoft.XMLDOM")
oXSL.async = false
oXSL.load(cXSLFile)
Set oOutput = Server.CreateObject("Microsoft.XMLDOM")
Call oXML.transformNodeToObject(oXSL, oOutput)
oOutput.save (cOutputFile)
Set oXML = Nothing
Set oXSL = Nothing
Set oOutput = Nothing
Response.redirect(cHtmLFile)
%>
/*** book.xml ***/
<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="book.xsl"?>
<moonpiazza>
<book>
      <书名>基于XML 的 asp.net开发</书名>
   <定价>42</定价>
      <作者>Dan Wahlin/王宝良</作者>
</book>
<book>
      <书名>XML应用的UML建模技术</书名>
      <定价>32</定价>
      <作者>David Carlson/周靖 侯奕萌 沈金河等</作者>
</book>
<book>
      <书名>极限编程研究</书名>
      <定价>70</定价>
      <作者>Giancarrio Succi/Michele Marchesi/张辉(译)</作者>
</book>
<book>
      <书名>Design Patterns</书名>
      <定价>38</定价>
      <作者>Erich Gamma/Richard Helm/Ralph Johnson/John Vlissides</作者>
</book>
</moonpiazza>
/*** book.xsl ***/
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- 下面一句必须 -->
<xsl:output method="xml" encoding="gb2312" indent="yes"/>
<xsl:template match="/">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<!-- by moonpiazza 2003.6.13-->
<body>
<table border="1">
  <tr>
   <xsl:for-each select="moonpiazza/book[position()=1]/*">    
    <td><xsl:value-of select="name()" /></td>    
   </xsl:for-each>
  </tr>
  <xsl:for-each select="moonpiazza/book">
   <tr>
    <xsl:for-each select="./*">    
     <td><xsl:value-of select="." /></td>    
    </xsl:for-each>
   </tr>
  </xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Ce qui précède est le contenu de l'utilisation de xmldom pour générer des pages HTML statiques côté serveur. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois. (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn