<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
           targetNamespace="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
    <xs:element name="body">
        <xs:annotation>
            <xs:documentation>
                Defines the position within the template that the body of the component (the portion of the container's
                template
                enclosed by the component) will be rendered. This is optional, and only applies to components that wish
                to render
                their body within their template.
            </xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="container">
        <xs:annotation>
            <xs:documentation>
                May be used as the root element of a template, but is not part of the template itself. Useful when
                a component exists to emit a series of related elements that are not inside a containing element.
            </xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="parameter">
        <xs:annotation>
            <xs:documentation>
                A structured parameter passed to a component as a single object of type Block. The receiving component
                can get the Block to render. A parameter should always be enclosed by a component element
                (either an explicit comp element, or an ordinary element instrumented with a Tapestry type or id).
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the parameter to be bound to the Block.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="block">
        <xs:annotation>
            <xs:documentation>
                A block is simply a container of other elements. Blocks do not render themselves or their bodies in the
                normal flow; they
                only get rendered when specifially directed to.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="id" type="xs:ID">
                <xs:annotation>
                    <xs:documentation>
                        An optional identifier that is used to reference the block from inside the Java class.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
</xs:schema>
