sadforyou [원본]
친애하는 Dr. GUI:
XML에 관해 질문이 있습니다. XMLHTTP를 통해 ASP 페이지를 게시하고, 데이터를 다시 HTML로 보내고, div, 테이블 셀 또는 모든 요소에서 object.innerHTML을 수행합니다.
내가 겪고 있는 문제는 ASP 서버 페이지에서 양식을 만들고 HTML로 다시 보내면 모든 것이 잘 작동한다는 것입니다. 하지만 페이지의 클라이언트 측 유효성 검사도 원하므로 다시 보내려는 응답 HTML의 본문에 JScript 페이지 링크를 넣습니다. 이 작업을 수행한 후에는 스크립트가 실행되지 않습니다.
상위 페이지에 실제 JScript src 참조를 포함하면 제대로 작동합니다. JScript 코드가 런타임에 로드되지 않았기 때문입니까? JScript 코드를 반환하지 않고 XMLHTTP 게시물에 응답하고 작동하도록 할 수 있습니까? 내가 만드는 페이지에 대해 JScript 함수를 즉시 생성할 수 있습니까?
아직 시도하지 않은 또 다른 방법은 XMLHTTP를 통해 XML 데이터를 게시한 다음 이를 XML 데이터로 다시 보낸 다음 XSL 스타일시트를 사용하여 변환하는 것입니다. 그런 식으로 JScript 함수를 정의하는 것이 가능하다고 생각합니다. 하지만 이 접근 방식은 너무 복잡해 보입니다. 제안이나 답변이 있으신가요?
Peter Sung
GUI박사의 답변
에 감사드립니다
.예, Peter. XMLHTTP 게시/가져오기에 대한 응답으로 Microsoft JScript 코드를 반환하고 해당 코드를 실행할 수 있습니다. 이렇게 하는 것은 케이크 한 조각을 사서 나중에 먹는 것과 같습니다. 짐작할 수 있듯이 이를 수행하는 가장 좋은 방법은 XSL 스타일시트를 활용하는 것입니다. 일단 모든 유형을 정상으로 되돌리면 쉽습니다. Dr. GUI는 빠른 예를 제공할 수도 있습니다. (물론 다른 해결 방법도 있습니다. 응답에 올바른 헤더와 문자가 올바른 순서로 포함되어 있으면 브라우저는 응답이 제대로 작동하도록 응답을 해석합니다. 필요한 경우 문자열 연결을 활용하여 응답을 생성할 수 있습니다. )
아래 그의 예에서 Dr. GUI는 클라이언트 측 코드에 JScript를 사용하고 ASP 페이지에 VBScript(Microsoft Visual Basic Scripting Edition)를 사용합니다. 채택된 전략은 다음과 같습니다. XML 파일에는 데이터(및 스타일 시트에 대한 참조)만 포함됩니다. XSL 파일에는 전체 페이지를 구성하는 데 필요한 모든 HTML 형식(스크립트 포함)이 포함되어 있습니다. ASP 페이지는 기본적으로 XMLHTTP 개체를 만들고, XML 파일을 개체에 로드하고(암시적 스타일 시트를 사용하여) 결과 HTML을 응답 스트림에 작성하는 몇 가지 호출로 구성됩니다.
이 방법을 시도하려면 아래에 표시된 간단한 단계를 따르십시오. 메모장을 사용하여 c:inetpubwwwroot에 모든 파일을 복사하여 붙여넣고 저장합니다.
1.
다음 XML 텍스트가 포함된 books.xml이라는 파일을 만듭니다. books.xsl 스타일 시트에 대한 참조를 기록해 두십시오. 그 외에 이 파일에는 데이터만 포함되어 있습니다.
<?xml 버전="1.0"?>
<?xml-stylesheet type="text/xsl" href="books.xsl" ?>
<카탈로그>
<책 id="bk101">
<author>감바르델라, 매튜</author>
<title>XML 개발자 가이드</title>
</book>
<도서 ID="bk102">
<author>김 랠스</author>
<title>한밤의 비</title>
</book>
</카탈로그>
2.
그런 다음, 다음 코드가 포함된 books.xsl이라는 파일을 만듭니다. 이 파일은 1단계에서 생성된 books.xml에서 참조하는 스타일 시트입니다. 여기에는 위의 XML 파일을 HTML 페이지로 올바르게 형식화하고 HTML 페이지에 스크립트를 포함하는 데 필요한 정보가 포함되어 있습니다.
<?xml version="1.0" 인코딩="UTF-8" ?>
<xsl:스타일시트 버전="1.0"
xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:output method="html" indent="yes"/>
<xsl:템플릿 일치="/">
<html>
<머리>
<title>테스트</title>
</head>
<스크립트 언어="JScript">
함수 Test_OnLoad()
{
var objXML = new ActiveXObject("MSXML2.DOMDocument");
objXML.async=false;
objXML.load("books.xml");
경고(objXML.xml);
objXML=널;
}
</script>
<body onload="Test_OnLoad()">
<테이블 테두리="1">
<xsl:for-each select="카탈로그/책">
<tr>
<TD>
<xsl:value-of select="작성자"/>
</td>
<TD>
<xsl:value-of select="title"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:템플릿>
</xsl:스타일시트>
3.
마지막으로 다음 코드가 포함된 books.asp라는 파일을 만듭니다. 이 파일은 XMLHTTP 객체를 생성하고, 이에 대한 XML 파일을 로드하고, 결과 HTML을 응답 스트림에 쓰는 데에만 사용됩니다.
<%
어두워
Response.contentType = "텍스트/xml"
sxh = Server.CreateObject("MSXML2.XMLHTTP.3.0") 설정
sxh.open "GET"," http://localhost/books.xml",false
sxh.send
응답.sxh.responsetext 쓰기
%>
4.
브라우저를 열고 http://localhost/books.asp 로 이동합니다.
5.
books.xml이 포함된 데이터를 보여주는 경고가 표시됩니다. 이는 XSL 파일의 스크립트에 의해 수행됩니다. 또한 웹페이지의 테이블에 깔끔한 형식의 데이터가 표시됩니다. 이는 XSL 코드로 수행됩니다.