cocoon에서 한글을 보기 위해 $TOMCAT_HOME/webapps/cocoon/WEB-INF/cocoon.properties을 수정해야 한다. vi 로 cocoon.properties를 열고 XML Formatters 부분에 있는 HTML 4.0(strict) 부분을 수정하면 된다. 다음은 예이다.
# HTML 4.0 (strict)
formatter.text/html.doctype-public = ...
formatter.text/html.doctype-system = ...
위의 부분을 찾아서 아래의 라인을 추가하면 된다.
formatter.text/html.encoding = euc-kr
즉, 다음처럼 추가하면 된다.
# HTML 4.0 (strict)
formatter.text/html.doctype-public = ...
formatter.text/html.doctype-system = ...
formatter.text/html.encoding = euc-kr
위의 한글 문제를 해결하기 위해 엄청난 삽질을 했다. 아파치 등의 사이트의 메일링 리스트등을 찾아보면 formatter.text/html/loose 부분을 수정하라고 나와 있었기 때문인데..
혹시 이부분에 대해 다른 대안이나 방법을 알고 있다면 필자 (nogadax@kldp.org)에게 메일을 보내주었으면 한다.
이분은 그렇게 권장할 만한 부분이 아니다. 필자가 만든 간단한 예제가 있어 그냥 올려 놓은 것이므로 관심있는 분만 참조하기 바란다.
아래의 예제를 테스트하기 위해 $TOMCAT_HOME/webapps/cocoon/servlets/ngd 디렉토리를 만들었다. 테스트를 목적으로 작성한 파일은 두개이며 ngd-book.xml 과 ngd-book.xsl 이다. ngd-book.xml은 간단한 xml 파일이며 ngd-book.xsl 파일은 xml 문서를 브라우져에 디스플레이하기 위한 파일이다.
테스트를 위한 URL은 http://210.110.1xx.xx6/cocoon/servlets/ngd/ngd-book.xml 이다.
다음은 간단한 예제이다.
<?xml version="1.0" encoding="euc-kr"?>
<?xml-stylesheet href="ngd-book.xsl" type="text/xsl"?>
<?cocoon-process type="xslt"?>
<!DOCTYPE ngd-book [
<!ELEMENT ngd-book (title?, name, dt, abstract, sect1)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT dt (#PCDATA)>
<!ELEMENT abstract (#PCDATA)>
<!ELEMENT sect1 (#PCDATA)>
]>
<ngd-book>
<title>Hello</title>
<name>nogadax</name>
<dt>/2000/11/11</dt>
<abstract>Tomcat은 The Jakarta Project의 산물이며 홈페이지는
http://jakarata.apache.org 이다. Jakarta Project의 목표는
오픈 소스화되어 개발된 Java 플랫폼을 기반으로 하여 상용 품질의
서버 솔루션을 제공하기 위함이다. 기타 XML 관련 패키지인
cocoon 의 홈 페이지는 http://xml.apache.org이다. Cocoon은
XML 파일을 서버측에서 처리하여 이를 브라우져에 보여주는
패키지로 서ㄹ치가 간편하다.
</abstract>
<sect1>
Tomcat은 The Jakarta Project의 산물이며 홈페이지는
http://jakarata.apache.org 이다. Jakarta Project의 목표는
오픈 소스화되어 개발된 Java 플랫폼을 기반으로 하여 상용 품질의
서버 솔루션을 제공하기 위함이다. 기타 XML 관련 패키지인
cocoon 의 홈 페이지는 http://xml.apache.org이다. Cocoon은 XML
파일을 서버측에서 처리하여 이를 브라우져에 보여주는
패키지로 서ㄹ치가 간편하다.
</sect1>
</ngd-book>
<?xml version="1.0" encoding="euc-kr"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ngd-book">
<xsl:processing-instruction name="cocoon-format">type="text/html"</xsl:processing-instruction>
<html>
<head>
<title>
<xsl:value-of select="title"/>
</title>
</head>
<body bgcolor="#ffffff">
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="title">
<h2>
<xsl:apply-templates/>
</h2>
</xsl:template>
<xsl:template match="name">
<h3>
<xsl:apply-templates/>
</h3>
</xsl:template>
<xsl:template match="dt">
<h4>
<xsl:apply-templates/>
</h4>
</xsl:template>
<xsl:template match="abstract">
<hr/>
<p>
<i>
<xsl:apply-templates/>
</i>
</p>
<hr/>
</xsl:template>
<xsl:template match="sect1">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
</xsl:stylesheet>