/ / Implémentation d'un modèle de stratégie dans XQuery, fonctions de réflexion en général - xquery, marklogic, strategy-pattern

Implémentation d'un modèle de stratégie dans XQuery, fonctions de réflexion en général - xquery, marklogic, pattern de stratégie

Je me demande s’il existe un moyen d’introspecter XQuerymodules et accéder dynamiquement aux fonctions. Cela m'aiderait à mettre en œuvre le modèle de stratégie GOF, car XQuery ne prend pas en charge plusieurs implémentations pour la même interface.

Le problème, bien sûr, est que l'introspection dans XQuery ne semble pas être prise en charge, à l'exception de la vérification des types de variables.

Des idées sur la façon dont ce modèle peut être implémenté dans XQuery? (J'utilise MarkLogic 9)

Merci beaucoup, K.

PS Malheureusement, la plupart des ressources XQuery que je pouvais trouver se concentraient sur de petits détails de telle ou telle fonctionnalité, mais je ne trouvais aucune de ces ressources qui considère XQuery comme un langage de programmation sérieux en soi et aborde de tels problèmes de conception logicielle.

Réponses:

1 pour la réponse № 1

XQuery 3.0+ et MarkLogic 9 prennent en charge des fonctions de première classe. Dans de nombreux cas, vous pouvez reformuler les modèles de conception OO courants en équivalents de programmation fonctionnels à l'aide de fonctions de première classe et d'injection de dépendances.

En outre, vous pouvez accéder aux fonctions incluses dans xdmp:functions().

Il y a un moyen d'obtenir de la réflexionfonctionnalité dans ML, mais c’est un peu un bidouillage. Jetez un coup d’œil à cette bibliothèque qui lève une exception, l’attrape et utilise la charge de l’exception pour inspecter la pile:

https://github.com/marklogic/cq/blob/master/lib-debug.xqy

Pour plus de modèles et techniques de programmation XQuery, vous pouvez consulter les actes de diverses conférences orientées XML, telles que Balisage, XML Prague, et XML Londres. En outre, la recherche de dépôts GitHub pour les projets XQuery et la lecture de code peuvent être utiles.