2008-09-17 6 views
4

Je considère Altova MapForce (ou quelque chose de similaire) pour produire XSLT et/ou une classe Java ou C# pour faire la traduction. Aujourd'hui, nous extrayons les données de la base de données et construisons manuellement une chaîne XML que nous publions sur un service Web.Mappage des éléments de données internes au schéma XML des fournisseurs externes

Devrait-il être db -> (interne) XML -> XSLT -> (externe) XML? Que faites-vous là-bas dans le vaste monde?

Répondre

3

J'utiliserais l'une des classes de sérialisation XML prêtes à l'emploi pour effectuer votre génération XML interne, puis j'utiliserais XSLT pour la transformer en XML externe. Vous pouvez également générer un schéma pour faire en sorte que le code de traduction (quel que soit le moteur de votre traduction XSLT) continue d'obtenir le XML attendu pour la traduction en cas de modification de l'objet.

Il existe un certain nombre d'éditeurs XSLT sur le marché qui vous aideront à faire les mappings, mais je préfère utiliser un éditeur XML standard.

1

Je pense que vous vous dirigez sur la bonne voie avec MapForce. Si vous ne voulez pas écrire de code pour préformer la transformation réelle, MapForce peut le faire aussi pour vous. Cela peut être mieux à long terme b/c c'est moins de code à maintenir.

Évitez les options plus coûteuses (par exemple BizTalk) sauf si vous avez réellement besoin d'une intégration B2B et d'une orchestration.

+0

Oui, BizTalk est beaucoup trop cher même si, en vérité, nous pourrions utiliser certaines fonctionnalités (je pense).Il semble que XSLT soit une bonne solution intermédiaire. Mais j'ai besoin de faire quelques tests de perf. Notre source XML est relativement petite. – BryanB

0

Quelle base de données utilisez-vous? Oracle a quelques bons outils de cartographie XML. Il existe des outils de liaison Java (l'un est http://java.sun.com/developer/technicalArticles/WebServices/jaxb). Cependant, si vous avez le luxe, pensez à utiliser Ruby qui a de belles méthodes "to_xml" intégrées.

+0

nous utilisons Sql Server 2005. Nous sommes principalement un magasin CF avec quelques tendances vers .NET à court terme. – BryanB

0

Astuce # 1: Évitez toute utilisation de XSLT.

Le support d'outil est nul. La solution résultante sera impossible à maintenir.

Astuce # 2: Éliminer toutes les étapes inutiles. Il suffit de traduire votre resultset (en supposant que vous utilisez JDBC ou equiv) pour le XML sortant. Conseil n ° 3: Supposons que l'utilisation d'un outil basé sur un schéma soit incorrecte et que nous planifions en conséquence.

En d'autres termes, faites semblant. Si vous devez faire sauter quelque chose de SOAP mutant (redondant, je sais), il suffit de simuler un message SOAP qui fonctionne, puis de le transformer en un modèle. La vélocité ne craint pas. Cela dit, la meilleure réponse est d'utiliser une solution de type "XML Writer". Il y en a quelques-uns.

Le meilleur est celui que j'ai écrit, LOX (Lightweight Objects for XML).

L'API publique utilise un modèle de conception Builder. En raison de la magie sous le capot, il est impossible de créer du XML malformé.

Veuillez noter: Si XML est la réponse, vous avez posé la mauvaise question. Parfois, nous sommes forcés contre notre volonté de l'utiliser d'une manière ou d'une autre. Lorsque cela se produit, il est crucial d'utiliser des outils qui minimisent l'effort du développeur et améliorent la maintenabilité du code.

+0

re: "si xml est la réponse" - faites-vous ici référence à l'utilisation de xml comme format intermédiaire, interne, pour nos données ou comme format de sortie? Si ce dernier, alors oui, nous sommes obligés de l'utiliser. xml en tant qu'intermédiaire c'est probablement moi qui cherche de la flexibilité et qui frappe le mur de YAGNI ... – BryanB

Questions connexes