When you declare your elements inside the site-structure, you're not forced to declare exits and outputs. This makes sense, since be embedding the declaration inside the site-structure, these declarations can't be reused anymore.
So the following declaration:
<element id="YourElementId" url="the/url" implementation="your.element.Implementation">
<exit name="exit1"/>
<output name="output1"/>
<output name="output2"/>
<flowlink srcexit="exit1" destid="AnotherElementId"/>
<datalink srcoutput="output1" destid="AnotherElementId" destinput="input1"/>
<datalink srcoutput="output2" destid="AnotherElementId" destinput="input2"/>
</element>
can be written as this:
<element id="YourElementId" url="the/url" implementation="your.element.Implementation">
<flowlink srcexit="exit1" destid="AnotherElementId"/>
<datalink srcoutput="output1" destid="AnotherElementId" destinput="input1"/>
<datalink srcoutput="output2" destid="AnotherElementId" destinput="input2"/>
</element>