You need to understand the transformation process better. The XML parser produces a tree of nodes; your XSLT stylesheet transforms this into another tree of nodes; and the serializer converts the result tree back into a text file containing markup.
Copying the processing instruction is straightforward: just use a template rule
<xsl:template match="processing-instruction()">
<xsl:copy/>
</xsl:template>
(PLEASE use indentation in your posted code - it's an elementary courtesy to your readers!)
The
will be dropped automatically because it's a comment node and the default template rule for comments does nothing (it deletes them).
The <!DOCTYPE article> doesn't form part of the tree constructed by the XML parser, so your XSLT stylesheet can't process it. You can ask the serializer to generate a DOCTYPE declaration by using <xsl:output doctype-system="entity.dtd"/>, but there is no way of making this depend on what was in the input document.
<figct number="6"> is not well-formed XML, so it won't make it through the XML parser. XSLT stylesheets can only process well-formed XML. Even if it did make it through, you couldn't add a "/" to the markup (that's a forwards slash, by the way, not a backslash) because the serializer looks after markup issues, your XSLT code is only concerned with the structure of the result tree.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference