Eines der ersten großen nationalen Projekte zum Einsatz von XML als B2B-Austauschformat hat der Bundesverband Materialwirtschaft, Einkauf und Logistik e. V. (BME) initiiert. Unter dem Namen BMEcat wurde unter der Beteiligung namhafter Firmen ein Standard für den Austausch von Produktkatalogen geschaffen.
Das Ergebnis dieser Initiative ist eine DTD-Sammlung zur Beschreibung von Produktkatalogen sowie zugehörigen Transaktionen (Neuer Katalog, Aktualisierung von Produktdaten und Aktualisierung von Preisen). Die DTDs, die BMEcat-Spezifikation und weitere Informationen stehen unter http://www.bmecat.org/ zum Download bereit.
Aus mehreren Gründen lohnt sich eine nähere Betrachtung von BMEcat: Es handelt sich um ein Projekt, dass für einen eng umrissenen, aber allgemeinen Anwendungszweck eine umfassende Lösung anbietet. Und nicht zuletzt ist es aus technischer und praktischer Sicht als Vorbild zu gebrauchen. Es wäre schön, wenn bereits heute Schemata wohldefiniert und weit verbreitet wären. Praktisch sind sie es aber nicht und so ist es jetzt vernünftig, DTDs zu verwenden. Trotzdem ist es richtig, die notwendigen Datentypen zu definieren. In der BMEcat-DTD geschieht das in folgender Weise:
<!-- definition of types --> <!ENTITY % STRING "(#PCDATA)"> <!ENTITY % NUMBER "(#PCDATA)"> <!ENTITY % INTEGER "(#PCDATA)"> <!ENTITY % FLOAT "(#PCDATA)"> <!ENTITY % BOOLEAN "(#PCDATA)"> <!ENTITY % DATETYPE "(#PCDATA)"> <!ENTITY % TIMETYPE "(#PCDATA)"> <!ENTITY % TIMEZONETYPE "(#PCDATA)"> <!-- end of definition of types -->
Wie sie sehen sind alle hier gezeigten Datentypen (es gibt noch andere in BMEcat) als #PCDATA definiert; also nur als Text. Der Vorteil dieser Vorgehensweise ist, dass bei einem späteren Umstieg auf Schemata eine direkte Abbildung der Struktur und eine zusätzliche (formale) Definition der Datentypen entsprechend der oben benutzten Bezeichnungen erleichtert wird.