Désactiver l’échappement de sortie dans les transformations
Cet article explique comment désactiver l’échappement de sortie dans les transformations.
Version d’origine du produit : Microsoft XML
Numéro de la base de connaissances d’origine : 315717
Résumé
Cet article pas à pas explique comment désactiver l’échappement de sortie de caractères tels que < and >
dans une transformation de feuille de style XML.
Pour garantir que toute sortie de transformation XSL est un document bien formé, les caractères de crochets angulaires (< and >
) sont transformés par défaut en < and >
séquences de caractères. Toutefois, parfois, ce comportement n’est pas souhaitable, par exemple lorsque vous souhaitez générer une déclaration de type de document (DTD) dans le document de sortie :
<!DOCTYPE StaffMember [
<!ELEMENT StaffMember (#PCDATA)>
]>
Configuration requise
La liste suivante décrit le matériel, les logiciels, l’infrastructure réseau et les Service Packs recommandés :
Microsoft XML version 3.0 ou ultérieure
Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :
Transformations XML et XSL et composant MSXML
Visual Basic Scripting Edition (VBScript)
DOM (Document Object Model) XML
Créer un document XML et une feuille de style XSL
Ouvrez un éditeur de texte tel que le Bloc-notes, puis collez le code XML suivant dans un document :
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="Transform.xsl"?> <Employee> <Name>Chris</Name> </Employee>
Enregistrez ce fichier sousSource.xml.
Créez un fichier dans votre éditeur de texte, puis collez la feuille de style XSL suivante dans le fichier.
Remarque
L’attribut disable-output-escaping="yes » dans la première balise xsl :value-of :
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:template match="Employee"> <xsl:value-of disable-output-escaping="yes" select="concat('<!DOCTYPE StaffMember [', '<!ELEMENT StaffMember (#PCDATA)>', ']>')" /> <StaffMember> <xsl:value-of select="Name"/> </StaffMember> </xsl:template> </xsl:stylesheet>
Enregistrez ce fichier en tant que Transform.xsl dans le même dossier que le document XML que vous avez créé.
Utiliser le script Windows pour exécuter la feuille de style
Créez un fichier dans votre éditeur de texte, puis collez le script suivant dans le fichier : Option Explicite
Dim objSource Dim objTransform Dim sResult Set objSource = CreateObject("MSXML2.DOMDocument") objSource.async = False objSource.load "Source.xml" Set objTransform = CreateObject("MSXML2.DOMDocument") objTransform.async = False objTransform.load "Transform.xsl" sResult = objSource.TransformNode(objTransform.documentElement) WScript.Echo sResult
Enregistrez ce fichier en tant queXform.vbs dans le même dossier que le document XML et la feuille de style XSL que vous avez créée.
Tester la procédure
Ouvrez une invite de commandes, puis recherchez le dossier qui contient vos trois fichiers.
Tapez
cscript xform.vbs
à l’invite de commandes.La sortie de la transformation s’affiche comme suit à l’écran :
<!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]> <StaffMember>Chris</StaffMember>
Résolution des problèmes
Soyez prudent lorsque vous utilisez l’attribut disable-output-escaping
. Si les caractères générés < et > ne correspondent pas, le document de sortie n’est pas du code XML bien formé. La méthode transformNodeToObject nécessite que le résultat soit bien formé, de sorte que la méthode peut ne pas se terminer si disable-output-escaping
elle est utilisée.