Print

Print


Hello,

We are currently writing mets profile for our needs. (We hope to publish it
soon)

We had 2 issues during xml validation of our mets profile  file: one
concerning use of mutli lingual profile, the other the insertion of mets
example in appendix section.

The only ways we found to solve these issues was to change the schema. So
we wanted to submit you what we've done.

   Multi lingual profile

We want to write our requirements both in French and in  English and to
have the two versions in the same file. So we though to write something
like this:
      <requirement>
            <p xml:lang="fr">Un fichier METS conforme � ce profil doit
contenir au plus un �l�ment &lt;filesec&gt;.</p>
            <p xml:lang="en">Every METS XML file conforming to this profile
must contain at most one &lt;filesec&gt; element.</p>
            <p xml:lang="fr">G�n�ralement, un fichier METS conforme � ce
profil contient au moins un �l�ment &lt;fileGrp&gt;.</p>
            <p xml:lang="en">Usually, a METS XML file conforming to this
profile contains at least one &lt;fileGrp&gt; element.</p>
      </requirement>

But the file can not be validated. By default, the xml:lang attribute is
not valid.
So we modified the schema, adding this line: <xs:attribute ref="xml:lang"
use="optional"/> in p element definition.

<xs:element name="p" minOccurs="0" maxOccurs="unbounded">
      <xs:complexType>
            <xs:simpleContent>
                  <xs:extension base="xs:string">
                        <xs:attribute name="ID" type="xs:ID" use="optional
"/>
                        <xs:attribute ref="xml:lang" use="optional"/>
                  </xs:extension>
            </xs:simpleContent>
      </xs:complexType>
</xs:element>

and importing the schema, in the begining of the schema file, as following:
- <xs:schema xmlns="http://www.loc.gov/METS_Profile/" xmlns:xs="
http://www.w3.org/2001/XMLSchema" targetNamespace="
http://www.loc.gov/METS_Profile/" elementFormDefault="qualified"
attributeFormDefault="unqualified">
      � <xs:import namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="http://www.w3.org/2001/xml.xsd" />

   Insertion of mets example:

We wanted to insert a mets example in Appendix section, like this:
      <Appendix NUMBER="1">
      <mets xmlns="http://www.loc.gov/METS/" xmlns:xlink="
http://www.w3.org/1999/xlink" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:premis="
info:lc/xmlns/premis-v2" xmlns:mix="http://www.loc.gov/mix/v10"
xmlns:textmd="info:lc/xmlns/textMD-v3" xmlns:dc="
http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:spar_dc="http://bibnum.bnf.fr/ns/spar_dc" xsi:schemaLocation="
http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/mets.xsd"  ID="
bpt6k2103979.manifest">
      <dmdSec ID="DMD.0001">
            <mdRef LOCTYPE="ARK" xlink:type="simple" xlink:href="
ark:/12148/bc343631419" MDTYPE="DC" MIMETYPE="text/xml"/>
      </dmdSec>
      <dmdSec ID="DMD.0002">
            <mdWrap MIMETYPE="text/xml" MDTYPE="DC">
                  <xmlData>
      ...

Inserting a mets file in the Appendix section, we had this error during
validation:
While validating against complex type '{anonymous}', element <mets> matched
wildcard {##any} but no element declaration was found.

We tried to solve it, declaring mets schema in top level element, but it
didn't work (not sure to have done that correctly). After, We've tried to
find examples working, but we couldn't.
Finally, I solved this issue by modifying the mets profile schema :-(, like
this:
The only solution we found was to add  processContents="lax" directive in
Appendix definition,
<xs:element name="Appendix" maxOccurs="unbounded">
      <xs:annotation>
            <xs:documentation>A METS profile may contain one or more
appendices.  Every profile must contain at least one appendix containing an
example METS document which conforms to the profile, and this example
document should always be contained in the first appendix to the profile.</
xs:documentation>
      </xs:annotation>
      <xs:complexType>
            <xs:sequence>
                  <xs:any namespace="##any" maxOccurs="unbounded "
processContents="lax"/>
            </xs:sequence>
            <xs:attribute name="ID" type="xs:ID" use="optional"/>
            <xs:attribute name="NUMBER" type="xs:integer" use="required"/>
            <xs:attribute name="LABEL" type="xs:string" use="optional"/>
      </xs:complexType>
</xs:element>

Do you think that's the good way to solve this issue (For us, it doesn't
sound very satisfying, but it's the only way we found)?


Do you think these changes make sense, and can be incorporated in the
future releases of mets profile schemas, or is there alternate ways to
solve these issues

Sincerly yours,
-----------------------------------------------
J�r�me Dupont
Biblioth�que Nationale de France
D�partement des Syst�mes d'Information
Tour T3 - Quai Fran�ois Mauriac
75706 Paris Cedex 13
t�l�phone: 33 (0)1 53 79 45 40
e-mail: [log in to unmask]
-----------------------------------------------




Avant d'imprimer, pensez � l'environnement. 
Consider the environment before printing this mail.