chagrinforyou [Original]
Cher Dr GUI :
J'ai une question à propos de XML. Je publie une page ASP via XMLHTTP, renvoie les données au format HTML et fais object.innerHTML sur un div, une cellule de tableau ou n'importe quel élément.
Le problème que j'ai est qu'une fois que j'ai créé un formulaire sur une page de serveur ASP et que je l'ai renvoyé au format HTML, tout fonctionne correctement. Mais je veux aussi une validation côté client de la page, j'ai donc mis un lien de page JScript dans le corps de la réponse HTML que je prévois de renvoyer. Après cela, le script ne s'exécutera pas.
Lorsque j'inclus la référence src JScript réelle sur la page parent, cela fonctionne bien. Est-ce parce que le code JScript n'est pas chargé dans le runtime ? Est-il possible de répondre à une publication XMLHTTP sans renvoyer le code JScript et le faire fonctionner ? Les fonctions JScript peuvent-elles être générées à la volée pour les pages que je crée ?
Une autre façon dont je n'ai pas essayé de procéder consiste à publier les données XML via XMLHTTP, puis à les renvoyer sous forme de données XML, puis à utiliser une feuille de style XSL pour les transformer. Je suppose qu'il est possible de définir les fonctions JScript de cette façon. Mais cette approche semble trop compliquée. Avez-vous des suggestions ou des réponses?
Merci pour
la réponse du Dr
Peter Sung
GUI :Oui, Peter, vous pouvez renvoyer du code Microsoft JScript en réponse à XMLHTTP post/get et faire exécuter ce code. Faire cela, c'est comme prendre une part du gâteau et la manger plus tard. Comme vous pouvez le deviner, la meilleure façon de procéder est d’exploiter une feuille de style XSL ; cela est facile une fois que tous les types sont revenus à la normale. Le Dr GUI peut même fournir un exemple rapide. (Bien sûr, il existe d'autres solutions. Tant que la réponse contient les en-têtes et caractères corrects dans le bon ordre, le navigateur interprétera la réponse afin qu'elle fonctionne correctement. Vous pouvez tirer parti de la concaténation de chaînes pour générer la réponse si nécessaire. )
Ci-dessous Dans son exemple, Dr. GUI utilise JScript pour le code côté client et VBScript (Microsoft Visual Basic Scripting Edition) dans une page ASP. La stratégie adoptée est la suivante : le fichier XML ne contient que des données (et une référence à la feuille de style). Le fichier XSL contient toute la mise en forme HTML nécessaire pour former une page complète (y compris les scripts en place). Une page ASP consiste essentiellement en quelques appels pour créer un objet XMLHTTP, charger un fichier XML dans l'objet (à l'aide d'une feuille de style implicite) et écrire le HTML résultant dans le flux de réponse.
Pour essayer cette méthode, suivez les étapes simples indiquées ci-dessous. Utilisez le Bloc-notes pour copier, coller et enregistrer tous les fichiers dans c:inetpubwwwroot.
1.
Créez un fichier nommé books.xml contenant le texte XML suivant. Notez la référence à la feuille de style books.xsl. A part cela, ce fichier ne contient que des données.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="books.xsl" ?>
<catalogue>
<identifiant du livre="bk101">
<auteur>Gambardella, Matthieu</auteur>
<title>Guide du développeur XML</title>
</livre>
<identifiant du livre="bk102">
<auteur>Ralls, Kim</auteur>
<title>Pluie de minuit</title>
</livre>
</catalogue>
2.
Créez ensuite un fichier nommé books.xsl contenant le code suivant. Ce fichier est la feuille de style référencée par le books.xml créé à l'étape 1. Il contient les informations nécessaires pour formater correctement le fichier XML ci-dessus dans une page HTML et même inclure des scripts sur la page HTML.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:version de la feuille de style="1.0"
xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<tête>
<titre>Tester</titre>
</tête>
<langage de script="JScript">
fonction Test_OnLoad()
{
var objXML = new ActiveXObject("MSXML2.DOMDocument");
objXML.async=false ;
objXML.load("livres.xml");
alerte(objXML.xml);
objXML=null ;
}
</script>
<body onload="Test_OnLoad()">
<bordure du tableau="1">
<xsl:for-each select="catalogue/livre">
<tr>
<td>
<xsl:value-of select="auteur"/>
</td>
<td>
<xsl:value-of select="title"/></td>
</tr>
</xsl:pour-chacun>
</table>
</corps>
</html>
</xsl:modèle>
</xsl:feuille de style>
3.
Enfin, créez un fichier nommé books.asp qui contient le code suivant. Ce fichier est utilisé uniquement pour créer l'objet XMLHTTP, charger le fichier XML correspondant et écrire le HTML résultant dans le flux de réponse.
<%
faible chut
Réponse.contentType = "texte/xml"
set sxh = Server.CreateObject("MSXML2.XMLHTTP.3.0")
sxh.open "GET", " http://localhost/books.xml", faux
sxh.envoyer
Réponse.write sxh.responsetext
%>
4.
Ouvrez votre navigateur et accédez à http://localhost/books.asp .
5.
Une alerte s'affiche affichant les données contenant books.xml. Cela se fait par un script dans le fichier XSL. Vous verrez également les données soigneusement formatées dans un tableau sur la page Web. Cela se fait par code XSL.