변환에서 출력 이스케이프 사용 안 함
이 문서에서는 변환에서 출력 이스케이프를 사용하지 않도록 설정하는 방법을 보여 줍니다.
원래 제품 버전: Microsoft XML
원래 KB 번호: 315717
요약
이 단계별 문서에서는 XML 스타일시트 변환과 같은 < and >
문자의 출력 이스케이프를 사용하지 않도록 설정하는 방법을 설명합니다.
XSL 변환 출력이 올바른 형식의 문서임을 보장하기 위해 꺾쇠 괄호 문자(< and >
)는 기본적으로 문자 시퀀스로 < and >
변환됩니다. 그러나 출력 문서에서 DTD(문서 형식 선언)를 생성하려는 경우와 같이 이 동작이 바람직하지 않은 경우도 있습니다.
<!DOCTYPE StaffMember [
<!ELEMENT StaffMember (#PCDATA)>
]>
요구 사항
다음 목록에서는 필요한 권장 하드웨어, 소프트웨어, 네트워크 인프라 및 서비스 팩을 간략하게 설명합니다.
Microsoft XML 버전 3.0 이상
이 문서에서는 다음과 같은 topics 잘 알고 있다고 가정합니다.
XML 및 XSL 변환 및 MSXML 구성 요소
VBScript(Visual Basic Scripting Edition)
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 스타일시트를 붙여넣습니다.
참고
첫 번째 xsl:value-of 태그의 disable-output-escaping="yes" 특성입니다.
<?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>
이 파일을 만든 XML 문서와 동일한 폴더에 Transform.xsl로 저장합니다.
Windows 스크립트를 사용하여 스타일시트 실행
텍스트 편집기에서 새 파일을 만든 다음 파일에 다음 스크립트를 붙여넣습니다. 옵션 명시적
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
이 파일을 XML 문서 및 만든 XSL 스타일시트와 동일한 폴더에 Xform.vbs 저장합니다.
프로시저 테스트
명령 프롬프트를 열고 세 개의 파일이 포함된 폴더를 찾습니다.
명령 프롬프트에 를 입력
cscript xform.vbs
합니다.변환의 출력은 화면에 다음과 같이 표시됩니다.
<!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]> <StaffMember>Chris</StaffMember>
문제 해결
특성을 사용할 disable-output-escaping
때는 주의해야 합니다. 생성된 < 문자와 > 문자가 일치하지 않으면 출력 문서는 올바른 형식의 XML이 아닙니다. transformNodeToObject 메서드는 결과를 잘 구성해야 하므로 가 사용되는 경우 disable-output-escaping
메서드가 완료되지 않을 수 있습니다.