Поделиться через


Отключите выходное экранирование в преобразованиях

В этой статье показано, как отключить экранирование выходных данных в преобразованиях.

Исходная версия продукта: Microsoft XML
Исходный номер базы знаний: 315717

Итоги

В этой пошаговой статье описывается, как отключить экранирование вывода символов, например, < and >, в трансформации таблицы стилей XML.

Чтобы гарантировать, что любые выходные данные преобразования XSL являются хорошо сформированным документом, символы угловой скобки (< and >) по умолчанию преобразуются в < and > последовательности символов. Однако иногда это поведение не рекомендуется, например при создании объявления типа документа (DTD) в выходном документе:

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

Требования

В следующем списке описаны рекомендуемые аппаратные средства, программное обеспечение, сетевая инфраструктура и пакеты обновления, необходимые:

  • версии Microsoft XML 3.0 или более поздней

    В этой статье предполагается, что вы знакомы со следующими разделами:

  • Преобразования XML и XSL и компонент MSXML

  • Visual Basic Scripting Edition (VBScript)

  • Модель объектов документов XML (DOM)

Создание XML-документа и таблицы стилей XSL

  1. Откройте текстовый редактор, например Блокнот, и вставьте следующий XML-код в документ:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="Transform.xsl"?>
    <Employee>
        <Name>Chris</Name>
    </Employee>
    
  2. Сохраните этот файл как Source.xml.

  3. Создайте файл в текстовом редакторе и вставьте в файл следующую таблицу стилей XSL.

    Примечание.

    Атрибут disable-output-escaping="yes" в первом теге 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('&lt;!DOCTYPE StaffMember [',
             '&lt;!ELEMENT StaffMember (#PCDATA)&gt;',
             ']&gt;')" />
            <StaffMember>
                <xsl:value-of select="Name"/>
            </StaffMember>
        </xsl:template>
    </xsl:stylesheet>
    
  4. Сохраните этот файл как Transform.xsl в той же папке, что и созданный XML-документ.

Использование скрипта Windows для выполнения таблицы стилей

  1. Создайте файл в текстовом редакторе и вставьте следующий скрипт в файл: Option 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. Сохраните этот файл как Xform.vbs в той же папке, что и XML-документ и созданную таблицу стилей XSL.

Проверка процедуры

  1. Откройте командную строку и найдите папку, содержащую три файла.

  2. Введите cscript xform.vbs в командной строке.

  3. Выходные данные преобразования отображаются следующим образом на экране:

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

Устранение неполадок

Будьте осторожны при использовании атрибута disable-output-escaping . Если созданные < и > символы не совпадают, выходной документ не будет хорошо сформирован XML. Метод transformNodeToObject требует, чтобы результат был хорошо сформирован, поэтому метод может не завершиться, если disable-output-escaping используется.