변환에서 출력 이스케이프 사용 안 함

이 문서에서는 변환에서 출력 이스케이프를 사용하지 않도록 설정하는 방법을 보여 줍니다.

원래 제품 버전: 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 스타일시트 만들기

  1. 메모장과 같은 텍스트 편집기를 연 다음 문서에 다음 XML을 붙여넣습니다.

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="Transform.xsl"?>
    <Employee>
        <Name>Chris</Name>
    </Employee>
    
  2. 이 파일을 Source.xml로 저장합니다.

  3. 텍스트 편집기에서 새 파일을 만든 다음 파일에 다음 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('&lt;!DOCTYPE StaffMember [',
             '&lt;!ELEMENT StaffMember (#PCDATA)&gt;',
             ']&gt;')" />
            <StaffMember>
                <xsl:value-of select="Name"/>
            </StaffMember>
        </xsl:template>
    </xsl:stylesheet>
    
  4. 이 파일을 만든 XML 문서와 동일한 폴더에 Transform.xsl로 저장합니다.

Windows 스크립트를 사용하여 스타일시트 실행

  1. 텍스트 편집기에서 새 파일을 만든 다음 파일에 다음 스크립트를 붙여넣습니다. 옵션 명시적

    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. 이 파일을 XML 문서 및 만든 XSL 스타일시트와 동일한 폴더에 Xform.vbs 저장합니다.

프로시저 테스트

  1. 명령 프롬프트를 열고 세 개의 파일이 포함된 폴더를 찾습니다.

  2. 명령 프롬프트에 를 입력 cscript xform.vbs 합니다.

  3. 변환의 출력은 화면에 다음과 같이 표시됩니다.

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

문제 해결

특성을 사용할 disable-output-escaping 때는 주의해야 합니다. 생성된 < 문자와 > 문자가 일치하지 않으면 출력 문서는 올바른 형식의 XML이 아닙니다. transformNodeToObject 메서드는 결과를 잘 구성해야 하므로 가 사용되는 경우 disable-output-escaping 메서드가 완료되지 않을 수 있습니다.