Http://www.oracle.com/technetwork/articles/javase/dig-signature-api-140772.html
The structure and type of XML signatures are basically three types of XML signatures:
Sealed internal signature enveloped
Outer seal Signature Enveloping
Detach Signature Detached
In-sealed signature: This signature is a child of the XML object, that is, the child label of the XML file in the message
<RootElement> <Signature> ... </Signature></RootElement>
Out-of-envelope signature: This signature contains the XML document to the Signature object, which means that the label is the root element of the signature XML file
<Signature> <MyXMLDocument> ... </MyXMLDocument></Signature>
Detach signature: In this case, the signature is generated independently as part of the XML. That means you'll have two XML files: one to sign the XML file and the other for the XML signature
<Signature>...</Signature><MyXMLDocument>...</MyXMLDocument>
XML signature Structure (where "?" denotes zero or one occurrence; "+" denotes one or more occurrences; and "*" denotes zero or more occurrences):
<Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/> (<Reference URI? > (<Transforms>)? <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo> <SignatureValue> (<KeyInfo>)? (<Object ID?>)*</Signature>
"Java Cryptography" XML signature