Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как отключить экранирование выходных данных в преобразованиях.
Исходная версия продукта: 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
Откройте текстовый редактор, например Блокнот, и вставьте следующий XML-код в документ:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="Transform.xsl"?> <Employee> <Name>Chris</Name> </Employee>
Сохраните этот файл как Source.xml.
Создайте файл в текстовом редакторе и вставьте в файл следующую таблицу стилей 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('<!DOCTYPE StaffMember [', '<!ELEMENT StaffMember (#PCDATA)>', ']>')" /> <StaffMember> <xsl:value-of select="Name"/> </StaffMember> </xsl:template> </xsl:stylesheet>
Сохраните этот файл как Transform.xsl в той же папке, что и созданный XML-документ.
Использование скрипта Windows для выполнения таблицы стилей
Создайте файл в текстовом редакторе и вставьте следующий скрипт в файл: 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
Сохраните этот файл как Xform.vbs в той же папке, что и XML-документ и созданную таблицу стилей XSL.
Проверка процедуры
Откройте командную строку и найдите папку, содержащую три файла.
Введите
cscript xform.vbs
в командной строке.Выходные данные преобразования отображаются следующим образом на экране:
<!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]> <StaffMember>Chris</StaffMember>
Устранение неполадок
Будьте осторожны при использовании атрибута disable-output-escaping
. Если созданные < и > символы не совпадают, выходной документ не будет хорошо сформирован XML. Метод transformNodeToObject требует, чтобы результат был хорошо сформирован, поэтому метод может не завершиться, если disable-output-escaping
используется.