Classe XFactory
Cette rubrique présente brièvement les méthodes fournies par la classe XFactory. Chacune de ces méthodes est décrite en détails dans d'autres articles du centre de documentation.
La classe XFactory est la principale classe de fabrique que vous pouvez utiliser pour créer des fichiers exécutables XPath, XQuery et XSLT. Elle permet aussi de créer des instances d'autres classes et de fabriques comme les classes XStaticContext, XDynamicContext, XItemFactory et XSequenceTypeFactory. Une instance de XFactory contient aussi une série de schémas enregistrés et peut être validante ou non validante. Une fabrique validante crée des fichiers exécutables basés sur des schémas et garantit que les documents source sont validés par les schémas enregistrés avant leur traitement. Si plusieurs ensembles de feuilles de style ou d'expressions nécessitent différents groupes de schémas, vous pouvez les conserver séparément en utilisant plusieurs instances de la classe XFactory. Vous pouvez créer une instance XFactory en appelant la méthode statique newInstance() de la classe XFactory. Les unités d'exécution de l'instance sont sécurisées dans la mesure où les paramètres restent inchangés.
// Create a new XFactory
XFactory factory = XFactory.newInstance();
// Create an XPath executable
XPathExecutable executable = factory.prepareXPath("/something/bar[2]");
// Create a new XStaticContext
XStaticContext staticContext = factory.newStaticContext();
// Create an XPath executable that is compiled in backwards
// compatibility mode
staticContext.setXPathCompatibilityMode(XStaticContext.XPATH1_0_BC_COMPATIBILITY);
XPathExecutable bcExecutable = factory.prepareXPath("/something/bar[2]", staticContext);
// Set validating
factory.setValidating(true);
// Register a schema
factory.registerSchema(new StreamSource("myschema.xsd"));
// Create a schema aware XPath executable
staticContext = factory.newStaticContext();
staticContext.declareNamespace("something", "http://myschema/something");
XPathExecutable schemaExecutable =
factory.prepareXPath("/something:something/bar[2] instance of element(bar, something:barType)", staticContext);
// Get the item factory for this XFactory (the two are related
// since the item factory depends on the schemas that are
// registered with XFactory).
XItemFactory itemFactory = factory.getItemFactory();