      const
        XML_ILLEGAL_CHARS   = XML_ILLEGAL_CHARS;
  
-@@ -45,12 +46,14 @@
+@@ -45,12 +47,18 @@
       * @param   string name
       * @param   string content default NULL
       * @param   array<string, string> attribute default array() attributes

===================================================================
--- skeleton/xml/Node.class.php	(revision 14454)
+++ skeleton/xml/Node.class.php	(working copy)
@@ -6,6 +6,7 @@
  */
 
   uses(
+    'xml.Element',
     'xml.PCData',
     'xml.CData',
     'xml.XMLFormatException'
@@ -23,7 +24,7 @@
    * @see   xp://xml.Tree#addChild
    * @test  xp://net.xp_framework.unittest.xml.NodeTest
    */

Added: svn:keywords
   + Id

Index: skeleton/xml/PCData.class.php
===================================================================
--- skeleton/xml/PCData.class.php	(revision 14454)
+++ skeleton/xml/PCData.class.php	(working copy)
@@ -4,6 +4,8 @@
  * $Id$
  */
 
+  uses('xml.Element');
+
   /**
    * PCData allows to insert literal XML into a nodes contents.
    *
@@ -26,9 +28,8 @@
    *
    * @purpose  Wrapper
    */
-  class PCData extends Object {
-    public
-      $pcdata= '';
+  class PCData extends Object implements Element {
+    public $pcdata= '';
       
     /**
      * Constructor
@@ -37,7 +38,22 @@
      */
     public function __construct($pcdata) {
       $this->pcdata= $pcdata;
-      
     }
+
+    /**
+     * Retrieve XML representation
+     *
+     * @param   int indent default INDENT_WRAPPED
+     * @param   string encoding default 'iso-8859-1'
+     * @param   string inset default ''
+     * @return  string XML
+     */
+    public function getSource($indent= INDENT_WRAPPED, $encoding= 'iso-8859-1', $inset= '') {
+      $conv= 'iso-8859-1' != $encoding;
+      return $conv
+        ? iconv('iso-8859-1', $encoding, $this->pcdata)
+        : $this->pcdata
+      ;
+    }
   }
 ?>
Index: skeleton/xml/Tree.class.php
===================================================================
--- skeleton/xml/Tree.class.php	(revision 14454)
