<?php 
/*******************************************************************************
 * Copyright (c) 2011 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
 *******************************************************************************/

$plan1 = <<<PLAN1
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="project-plan-render.xsl"?>
<p:plan
  plan-format="1.0"
  xmlns:p="http://www.eclipse.org/project/plan" xmlns="http://www.w3.org/1999/xhtml"
  name="Eclipse Project">

<p:release projectid="eclipse" version="Juno"/>

<p:introduction>
Introduction
</p:introduction>

<p:release_deliverables>
Deliverables
</p:release_deliverables>

<p:release_milestones>

<p:preamble>      
Milestones Preamble
</p:preamble>
<p:postamble>
Milestones PostAmble
</p:postamble>

</p:release_milestones>

<p:target_environments>
Target Environments
<p:internationalization>
Interntionalization
</p:internationalization>

</p:target_environments>
 
<p:compatibility_with_previous_releases>
Compatibility
</p:compatibility_with_previous_releases>
  
<p:themes_and_priorities>

<p:preamble>
Themes Preamble
</p:preamble>

<p:theme name="Platforms">
<p:description>
Platforms Theme Description
</p:description>
<p:committed bugzilla="https://bugs.eclipse.org/bugs/show_bug.cgi?id=288548">
Committed text
</p:committed>

<p:proposed>
Proposed Text
</p:proposed>

<p:deferred>
Deferred Text
</p:deferred>

</p:theme>
    
<p:theme name="Robustness">
<p:description>
Robustness <b>Theme</b> Description
</p:description>

<p:committed>
</p:committed>

<p:proposed>
</p:proposed>

<p:deferred>
</p:deferred>

</p:theme>
    
</p:themes_and_priorities>
</p:plan>
PLAN1;

require_once(dirname(__FILE__).'/project-plan-parser.inc');
$plan = ProjectPlanParser::getPlanFromString($plan1);
print_r($plan);

?>