La clase XFactory
Se ofrece de una visión general rápida de los métodos que proporciona la clase XFactory. En otros artículos del Information Center se tratan los métodos individuales de forma detallada.
La clase XFactory se encuentra en la clase principal de fábrica para crear ejecutables para XPath, XQuery y XSLT. También implica la creación de instancias de otras clases y fábricas como, por ejemplo, las clases XStaticContext, XDynamicContext, XItemFactory y XSequenceTypeFactory. Una instancia de XFactory conserva un conjunto de esquemas registrados y también se puede validar o no validar. Una fábrica de validación genera ejecutables que tienen en cuenta el esquema y garantiza que los documentos de origen se validan con el conjunto de esquemas registrados antes de procesarlos. Si hay diversos conjuntos de hojas de estilo o expresiones que necesitan distintos conjuntos de esquemas, se pueden conservar por separados utilizando más de una instancia de XFactory. Se puede crear una instancia de XFactory invocando al método estático newInstance() en la clase XFactory. La instancia ofrece seguridad de hebras mientras los valores permanezcan estáticos.
// Crear un XFactory nuevo
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();