Add this to the metadata tag itself as attributes:
xmlns:opf="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/"
Then prefix the scheme attribute with opf: as it is a descendant of the metadata tag.
That way attributes that only exist in the opf namespace can be used in the children of the metadata tag with the opf: prefix but all other tags will not need to be prefixed in the opf because the package tag made it the default.
Here is the empty epub2 template that Sigil uses in case this helps:
Code:
static const QString TEMPLATE_TEXT =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<package version=\"2.0\" xmlns=\"http://www.idpf.org/2007/opf\" unique-identifier=\"BookId\">\n\n"
" <metadata xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:opf=\"http://www.idpf.org/2007/opf\">\n"
" <dc:identifier opf:scheme=\"UUID\" id=\"BookId\">urn:uuid:%1</dc:identifier>\n"
" <dc:language>%2</dc:language>\n"
" <dc:title>%3</dc:title>\n"
" </metadata>\n\n"
" <manifest>\n"
" </manifest>\n\n"
" <spine>\n"
" </spine>\n\n"
"</package>";