모든 xml은 다음과 같은 정의를 최상단에 단 한번만 주어야 한다.
<?xml version="1.0"?>
이것은 "이 문서는 xml표준 버전 1.0 의 규칙에 따른다..." 라는 것을 정의함을 의미한다.
그리고, 내가쓰는 PHP4 에서 사용되는 domxml_new_doc() 함수를 살펴보면...
object domxml_new_doc ( string version)
다음과 같이 정의 되어 있으며 입력값으로 version이 들어간다.
문서의 처음에 사용해서 비어있는 xml 문서를 생성해야만 추가작업이 가능하다.
근데 난 한국사람이고 영어문화권을 제외한 나머지 언어를 가진 나라에서는
모든 xml문서를 선언할 때 encoding 값을 줘야한다.
한국어 xml 문서라면...
<?xml version="1.0" encoding="euc-kr"?>
과 같이 써야 한단 소리다.
근데 주어진 xml문서 생성함수로는 구현이 되지 않았다.
그래서, 고민끝에 domxml_open_file(), domxml_open_mem() 함수를 써서 만들어 보기로 했다.
비어있는 xml문서를 만들기 위해서 미리 선언된 양식의 문서가 있어야 한다.
################################### example.inc
<?php
$xmlstr = "<?xml version='1.0' encoding='euc-kr' standalone='yes'?>
<!DOCTYPE HTML SYSTEM 'HTML.dtd'>
<HTML>
</HTML>
";
?>
$xmlstr = "<?xml version='1.0' encoding='euc-kr' standalone='yes'?>
<!DOCTYPE HTML SYSTEM 'HTML.dtd'>
<HTML>
</HTML>
";
?>
##########################################################
위에 dtd 문서 선언은 없어도 된다. 하지만 xml문서 선언부와 root element 역할을 하는 tag가 필요하다.
그리고, 이를 php에서 불러서 root element를 불러낸뒤 그뒤에 자식element를 추가해주면 원하는 xml문서를 얻을 수 있다. 물론 xml선언부는 주어진 PHP함수를 사용하지 않고 내 마음데로 조절이 가능하다.
#################################### dom01.php
<?
include("example.inc");
if (!$dom = domxml_open_mem($xmlstr)) {
echo "Error while parsing the document\n";
exit;
}
echo "Error while parsing the document\n";
exit;
}
$root = $dom->document_element();
$head = $dom->create_element("HEAD");
$head = $root->append_child($head);
$title = $dom->create_element("TITLE");
$title = $head->append_child($title);
$text = $dom->create_text_node("This is the title");
$text = $title->append_child($text);
$head = $root->append_child($head);
$title = $dom->create_element("TITLE");
$title = $head->append_child($title);
$text = $dom->create_text_node("This is the title");
$text = $title->append_child($text);
echo "<PRE>";
echo htmlentities($dom->dump_mem());
echo "</PRE>";
echo htmlentities($dom->dump_mem());
echo "</PRE>";
?>
####################################################
결과는 다음과 같다.
<?xml version="1.0" encoding="euc-kr" standalone="yes"?>
<!DOCTYPE HTML SYSTEM "HTML.dtd">
<HTML>
<HEAD><TITLE>This is the title</TITLE></HEAD></HTML>
<!DOCTYPE HTML SYSTEM "HTML.dtd">
<HTML>
<HEAD><TITLE>This is the title</TITLE></HEAD></HTML>
이와 같은 방법으로 문서를 작성해 나가면 될 것이다.
'IT_Programming > XML' 카테고리의 다른 글
[XSLT] for-each를 사용한 loop법 (0) | 2007.09.30 |
---|---|
PHP의 DOM함수로 XML 만들기(3. 한글을 마음데로 써보자...) (0) | 2007.09.30 |
PHP의 DOM함수로 XML 만들기 (1.기본문서만들기) (0) | 2007.09.30 |
[PHP] XML 문서파싱 - SAX 방식 , DOM 방식 (0) | 2007.09.30 |
PHP & xml 파싱 기초 (0) | 2007.09.30 |