La función query nos permite realizar consultas tanto al repositorio de destino como al de origen de objetos según un criterio de búsqueda. Para usarlo declaramos una variable que contendrá el resultado de la búsqueda y le asignamos la función query donde definimos el repositorio donde queremos realizar la búsqueda , el atributo de búsqueda ( match attribute ) y los atributos que queremos consultar de los objetos que cumplan con las condiciones de búsqueda.
Captura en designer con la declaración de la variable y el objecto query
Ahora nos quedará por definir las propiedades de búsqueda como se puede ver en la siguiente captura , en este ejemplo buscamos en origen ( metadirecotry ) un objeto usuario de nombre alfredo ( cn = alfredo ) y queremos obtener su apellido y su dirección de email
Es importante definir el tipo de objeto de la variable a node-set , si no queremos tener problemas para recorrer el resultado. Una vez definido como node-set podremos usar expresiones xpath para consultar los resultados.
La ejecución de la función nos devolverá un documento XML del siguiente estilo
<nds dtdversion="3.5" ndsversion="8.x">
<source>
<product version="3.6.10.4747">DirXML</product>
<contact>Novell, Inc.</contact>
</source>
<output>
<instance class-name="User" qualified-src-dn="O=Company\OU=Users\CN=alfredo" src-dn="\ARBRE\Company\Users\Alfredo" src-entry-id="33136">
<attr attr-name="CN">
<value naming="true" timestamp="1264497510#16" type="string">alfredo</value>
</attr>
<attr attr-name="sn">
<value naming="true" timestamp="1264497510#16" type="string">Garcia</value>
</attr>
<attr attr-name="Internet Email Address">
<value naming="true" timestamp="1264497510#16" type="string">agarcia@company.es</value>
</attr>
</instance>
<status level="success"></status>
</output>
</nds>
Este es el contenido de la variable $user ahora , mediante xpath podemos obtener los valores que deseamos.
$user/cn Para obtener el cn
$user/sn Para obtener el surname
Eso es todo! para mas información sobre consultas xpath consultar la guia de la w3c