<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<root xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
	<Empty/>
	<ElementWithValue>value</ElementWithValue>
	<OneFixedValueChildNode><ChildNode>Test</ChildNode></OneFixedValueChildNode>	
	<WithChildGeneratedNode><ChildNode>dd</ChildNode></WithChildGeneratedNode>	
	<DynamicElement>01 Januar 1979</DynamicElement>	
	<WithAttribute attribute="attr"/>
	<AttributeAndChildNode attribute="attr"><ChildNode>A</ChildNode></AttributeAndChildNode>
	<MixedContent attribute="attr">A<B/></MixedContent>
	<MixedContent2 attribute="attr">A<B/></MixedContent2>		
	<EmptyElementWithNamespace xmlns="http://cocoon.apache.org/kamal"/>
	<EmptyElementWithGeneratedNamespace xmlns="http://cocoon.apache.org/kamalbhatt"/>	
	<GeneratedElementWithGeneratedChild xmlns="http://cocoon.apache.org/kamalbhatt">
	  <GeneratedChild xmlns="http://cocoon.apache.org/kamal">Test</GeneratedChild>
	</GeneratedElementWithGeneratedChild>	
	<prefix:ElementWithNamespaceAndHardCodedPrefix xmlns:prefix="http://cocoon.apache.org/kamalbhatt"/>
	<kb:ElementWithNamespaceAndGeneratedPrefix xmlns:kb="http://cocoon.apache.org/kamalbhatt"/> 
</root>
