Dela via


Inaktivera utdata som undflyer i transformeringar

Den här artikeln visar hur du inaktiverar utdata som kommer från transformeringar.

Ursprunglig produktversion: Microsoft XML
Ursprungligt KB-nummer: 315717

Sammanfattning

Den här stegvisa artikeln beskriver hur du inaktiverar utdata från tecken, till exempel < and > i en XML-formatmallstransformering.

För att garantera att XSL-transformeringsutdata är ett välformat dokument omvandlas vinkelparentestecken (< and >) som standard till < and > teckensekvenser. Men ibland är detta inte önskvärt, till exempel när du vill generera en dokumenttypsdeklaration (DTD) i utdatadokumentet:

<!DOCTYPE StaffMember [
 <!ELEMENT StaffMember (#PCDATA)>
]>

Krav

I följande lista beskrivs de rekommenderade maskinvaru-, programvaru-, nätverksinfrastruktur- och servicepaket som krävs:

  • Microsoft XML version 3.0 eller senare

    Den här artikeln förutsätter att du är bekant med följande ämnen:

  • XML- och XSL-transformeringar och MSXML-komponenten

  • Visual Basic Scripting Edition (VBScript)

  • XML-dokumentobjektmodell (DOM)

Skapa ett XML-dokument och en XSL-formatmall

  1. Öppna en textredigerare, till exempel Anteckningar, och klistra sedan in följande XML i ett dokument:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="Transform.xsl"?>
    <Employee>
        <Name>Chris</Name>
    </Employee>
    
  2. Spara den här filen som Source.xml.

  3. Skapa en ny fil i textredigeraren och klistra sedan in följande XSL-formatmall i filen.

    Obs!

    Attributet disable-output-escapeing="yes" i den första xsl:value-of-taggen:

    <?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('&lt;!DOCTYPE StaffMember [',
             '&lt;!ELEMENT StaffMember (#PCDATA)&gt;',
             ']&gt;')" />
            <StaffMember>
                <xsl:value-of select="Name"/>
            </StaffMember>
        </xsl:template>
    </xsl:stylesheet>
    
  4. Spara den här filen som Transform.xsl i samma mapp som DET XML-dokument som du skapade.

Använda Windows-skript för att köra formatmallen

  1. Skapa en ny fil i textredigeraren och klistra sedan in följande skript i filen: Alternativet är explicit

    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
    
  2. Spara den här filen som Xform.vbs i samma mapp som XML-dokumentet och XSL-formatmallen som du skapade.

Testa proceduren

  1. Öppna en kommandotolk och leta upp mappen som innehåller dina tre filer.

  2. Skriv cscript xform.vbs i kommandotolken.

  3. Utdata från omvandlingen visas på följande sätt på skärmen:

    <!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]>
    <StaffMember>Chris</StaffMember>
    

Felsökning

Var försiktig när du använder attributet disable-output-escaping . Om de genererade < tecknen och > inte matchar kommer utdatadokumentet inte att vara välformulerad XML. Metoden transformNodeToObject kräver att resultatet är välformat, så metoden kanske inte slutförs om disable-output-escaping den används.