%META:TOPICINFO{author="ProjectContributor" date="1284905286" format="1.1" version="1"}%
%META:TOPICPARENT{name="Macros"}%
#VarQUERY
---+++ QUERY -- get the value of meta-data
   * Uses the query syntax described in [[System.QuerySearch][QuerySearch]] to get information about meta-data.
      * supports formatted access to formfields and other meta-data in  topics using the same syntax as is used in =IF= and =SEARCH= statements,
      * gives access to *all* meta-data, including that added by extensions,
      * supports reporting values using JSON and other standards, simplifying the retrieval of meta-data for REST applications,
      * replaces the =[[VarFORMFIELD][FORMFIELD]]= macro for most applications.
   * Syntax: =%<nop>QUERY{ "query" }%=
   * See !QuerySearch for more details of how to write queries
   * Parameters:
      * =style="stylename"= - set the output format (see below)
      * =rev="version"= - operate on the given version of the current topic.
        Note that this will _only_ affect simple queries that refer to the
        current topic, such as =form.name=. More complex queries that use
        searches or indirection to refer to other topics always use the
        *latest* version of those topics.
   * Examples:<pre class="tml">
      Get the name of the form in the current topic:
      %<nop>QUERY{"form.name"}%

      Get the value of the 'Firstname' form field in
        the current topic:
      %<nop>QUERY{"fields[name='Firstname'].value"}%

      Get the value of the 'Firstname' form field in
        the current topic (shorthand version):
      %<nop>QUERY{"Firstname"}%

      Get a list of all the names of attachments on
        the topic 'System.DocumentGraphics':
      %<nop>QUERY{"'System.DocumentGraphics'/attachments.name"}%

      Get configuration setting {NameFilter}:
      %<nop>QUERY{"{NameFilter}"}%</pre>
Plain strings (such as field values) are returned _without_ quotes. Simple arrays of scalars are also returned without quotes, in a comma-separated list (beware of values that contain commas!).

More complex data structures (e.g. arrays of hashes) will be returned as Perl code strings generated by running through CPAN:Data::Dumper.

You can make the macro generate different output formats using the =style= parameter:
   * =style="perl"= - generates values as Perl code strings
   * =style="json"= - generates values as JSON strings, suitable for reading by browsers.

Only some configuration settings are available via QUERY: %FORMAT{"%QUERY{"{AccessibleCFG}"}%" type="string" format="=$item=" separator=", "}%

   * Related: [[%IF{"'%INCLUDINGTOPIC%'='Macros'" then="#"}%VarMETA][META]] [[%IF{"'%INCLUDINGTOPIC%'='Macros'" then="#"}%QuerySearch][QuerySearch]]
<!--%JQREQUIRE{"chili"}%-->
