2010-09-07 6 views
0

J'écris un logiciel dont le travail consiste à exporter des données DB du produit principal de mon entreprise dans des formats XML arbitraires (pour interfaçage avec d'autres applications). L'analyse des fichiers de données XML arbitraires dans notre base de données peut être ultérieure. J'écris en C/C++, et la base de données du produit est stockée sous forme de fichiers BTRV Pervasive dans un format propriétaire. J'ai besoin d'écrire un format de mappage qui peut mapper nos éléments de données internes à XML, de sorte que si mon paquet d'exportation reçoit un fichier de mappage, il créera le fichier de sortie XML souhaité à partir du contenu de la base de données. Quelles stratégies ou outils recommanderiez-vous que j'utilise pour accomplir cela?Comment spécifier les mappages d'une base de données propriétaire vers XML?

Quelques options que j'ai considéré:

  1. DEVISE un schéma d'exportation XML commun pour le produit, puis d'écrire des fichiers XSLT pour convertir ce format en fichiers XML arbitraires.
  2. Ecrivez un fichier de schéma XSD qui définit la structure du fichier de sortie et concevez un ensemble d'instructions de traitement indiquant à mon package quels éléments de données vont dans quels éléments.

Je me considère comme un novice dans l'utilisation de XML; Je suis familier avec XSLT et XPath, et commence à apprendre le schéma, mais il peut y avoir des outils évidents pour résoudre ce problème qui me manque.

(Update, 8: 14p PDT: Le package que j'écris est conçu pour être connecté à notre module générique d'interfaçage externe, pour l'exportation de données qui seront consommées par d'autres applications. Si le sous-ensemble de la base de données change ou est "finalisé", ce sous-ensemble sera automatiquement exporté dans un format que l'autre application peut comprendre.J'essaie d'étendre le module d'interfaçage externe pour lui permettre de sortir ces éléments de données "finalisés". XML

Mon travail consiste à définir une méthode de spécification du format XML attendu par l'autre système.Le schéma cible pouvant varier considérablement d'une application à l'autre, j'ai besoin d'une solution capable de gérer une gamme de schémas XML possibles. o besoin d'une solution facile à configurer/maintenir pour chaque interface.

Le code qui appelle mon code traite les éléments de la base de données comme une série de conteneurs imbriqués et fournit des points d'ancrage pour le formatage de chaque couche imbriquée. Ces crochets semblent très similaires à la correspondance attribut sur < xsl:. Modèle >, qui est ce qui m'a amené à considérer XSLT comme solution possible)

+0

Pour chaque système informatique, les cas d'utilisation font partie de ses définitions.Si ces documents XML exportés vont être consommés en tant qu'applications et qu'ils vont être gros sans schéma complexe (dumps de base de données), alors utilisez les dumps de base de données. Si ceux-ci ont un schéma complexe mais aussi de grosses applications et que seulement des applications, utilisez l'export avec un schéma défini (et peut-être vous devez repenser les fonctionnalités de votre moteur de base de données). Si un document XML exporté va être utilisé pour plusieurs documents formatés affichables, utilisez plusieurs feuilles de style XSLT. –

Répondre

0

je recommande la sortie de votre base de données vers un fichier XML et utiliser XSLT pour transformez-le en n'importe quel format XML requis par l'autre partie, en utilisant différentes feuilles de style XSLT pour chaque transformation. De cette façon, vous n'aurez qu'à changer vos fichiers XSLT pour interfacer différentes applications.

Si vous utilisez un processeur compatible avec le schéma ou un outil tel que Altova XMLSpy, je vous recommande de créer un schéma pour le fichier XML de votre base de données. Il vous fait gagner beaucoup de cheveux. Si le XML de l'autre partie est complexe, je créerais aussi un schéma pour cela. Les avantages des schémas, outre la validation de vos fichiers et une meilleure compréhension de la structure, sont qu'un outil tel que XMLSpy vous aidera automatiquement avec les champs, vous aidera avec XPath et ainsi de suite. En outre, un outil comme MapForce crée même le XSLT pour vous si vous lui fournissez deux schémas (n'ont pas essayé).