Custom Web Publishing Guide
Table Of Contents
- Chapter 1 Introducing Custom Web Publishing
- Chapter 2 Preparing databases for Custom Web Publishing
- Chapter 3 Accessing XML data with the Web Publishing Engine
- Using Custom Web Publishing with XML
- General process for accessing XML data from the Web Publishing Engine
- About the URL syntax for XML data and container objects
- Accessing XML data via the Web Publishing Engine
- Using the fmresultset grammar
- Using other FileMaker XML grammars
- About UTF-8 encoded data
- Using FileMaker query strings to request XML data
- Switching layouts for an XML response
- Understanding how an XML request is processed
- Using server-side and client-side processing of stylesheets
- Troubleshooting XML document access
- Chapter 4 Introduction to Custom Web Publishing with XSLT
- Chapter 5 Developing FileMaker XSLT stylesheets
- Using XSLT stylesheets with the Web Publishing Engine
- About the FileMaker XSLT Extension Function Reference
- About the URL syntax for FileMaker XSLT stylesheets
- About the URL syntax for FileMaker container objects in XSLT solutions
- Using query strings in FileMaker XSLT stylesheets
- Specifying an XML grammar for a FileMaker XSLT stylesheet
- About namespaces and prefixes for FileMaker XSLT stylesheets
- Using statically defined query commands and query parameters
- Setting text encoding for requests
- Specifying an output method and encoding
- About the encoding of XSLT stylesheets
- Processing XSLT requests that do not query FileMaker Server
- Using tokens to pass information between stylesheets
- Using the FileMaker XSLT extension functions and parameters
- About the FileMaker-specific XSLT parameters set by the Web Publishing Engine
- Accessing the query information in a request
- Obtaining client information
- Using the Web Publishing Engine base URI parameter
- Using the authenticated base URI parameter
- Loading additional documents
- Using a database’s layout information in a stylesheet
- Using content buffering
- Using Web Publishing Engine sessions to store information between requests
- Using the session extension functions
- Sending email messages from the Web Publishing Engine
- Using the header functions
- Using the cookie extension functions
- Using the string manipulation extension functions
- Comparing strings using Perl 5 regular expressions
- Checking for values in a field formatted as a checkbox
- Using the date, time, and day extension functions
- Checking the error status of extension functions
- Using logging
- Chapter 6 Testing and monitoring a site
- Appendix A Valid names used in query strings
- About the query commands and parameters
- Using the query commands
- -dbnames (Database names) query command
- -delete (Delete record) query command
- -dup (Duplicate record) query command
- -edit (Edit record) query command
- -find, -findall, or -findany (Find records) query commands
- -layoutnames (Layout names) query command
- -new (New record) query command
- -process (Process XSLT stylesheets)
- -scriptnames (Script names) query command
- -view (View layout information) query command
- Using the query parameters
- -db (Database name) query parameter
- -encoding (Encoding XSLT request) query parameter
- -field (Container field name) query parameter
- fieldname (Non-container field name) query parameter
- fieldname.op (Comparison operator) query parameter
- -grammar (Grammar for XSLT stylesheets) query parameter
- -lay (Layout) query parameter
- -lay.response (Switch layout for response) query parameter
- -lop (Logical operator) query parameter
- -max (Maximum records) query parameter
- -modid (Modification ID) query parameter
- -recid (Record ID) query parameter
- -script (Script) query parameter
- -script.prefind (Script before Find) query parameter
- -script.presort (Script before Sort) query parameter
- -skip (Skip records) query parameter
- -sortfield (Sort field) query parameter
- -sortorder (Sort order) query parameter
- -styletype (Style type) query parameter
- -stylehref (Style href) query parameter
- -token.[string] (Pass values between XSLT stylesheets) query parameter
- Appendix B Error codes for Custom Web Publishing
- Appendix C Converting CDML solutions to FileMaker XSLT
- About the process of converting CDML solutions to FileMaker XSLT solutions
- Conversion of CDML action tags, variable tags, and URLs
- Conversion of the -error and -errornum CDML variable tags
- Conversion of obsolete CDML action tags
- Conversion of supported CDML action tags
- Conversion of obsolete CDML variable tags
- Conversion of supported CDML variable tags
- Conversion of CDML boolean parameters to XPath boolean parameters
- Conversion of CDML boolean operators to XPath
- Conversion of CDML intratag parameters to XSLT-CWP
- Manually fixing CDML conversion errors
- Conversion of CDML replacement tags to XSLT-CWP
- Index
78 Custom Web Publishing Guide
For example, the following URL adds a new parent Employee record for John Doe, and a new related record
for Jane in the portal at the same time. The name of the related table is Dependents, and the name of the related
field in the portal is Names. The match field, ID, stores an employee ID number.
http://192.168.123.101/fmi/xml/fmresultset.xml?-db=employees&-lay=family&FirstName=John&LastName=Doe&ID=9756
&Dependents::Names.0=Jane&-new
Note You can only add one related record to a portal per request.
Editing records in a portal
To edit one or more records in a portal, use the –edit command and a record ID to specify the parent record
that contains the portal records you want to edit. Specify the particular portal record to edit by using its record
ID in a fully qualified field name. You can determine a record ID from the record ID attribute of the
<record>
element in the
<relatedset> element in the XML data. See “Using the fmresultset grammar” on page 27.
For example, the following URL edits a record in a portal where the parent record has the record ID of 1001.
Dependents is the name of the related table, Names is the name of the related field in the portal, and the 2 in
Names.2 is the record ID of a portal record.
http://192.168.123.101/fmi/xml/fmresultset.xml?-db=employees&-lay=family&–recid=1001&Dependents::Names.2=Kevin
&-edit
Here is an example of how to use one request to edit multiple portal records via the parent record:
http://192.168.123.101/fmi/xml/fmresultset.xml?-db=employees&-lay=family&–recid=1001&Dependents::Names.2=Kevin
&Dependents::Names.5=Susan&-edit
You can also use the –edit command and specify 0 as the portal record ID to add a new related record in the
portal for an existing parent record. For example:
http://192.168.123.101/fmi/xml/fmresultset.xml?-db=employees&-lay=family&–recid=1001
&Dependents::Names.0=Timothy&-edit
About the syntax for specifying a global field
The syntax for specifying a global field is:
table-name::field-name(repetition-number).global
where global identifies a field as using global storage. For information about table-name and field-
name(repetition-number), see “About the syntax for a fully qualified field name” on page 77. For information on
global fields, see FileMaker Pro Help.
You must use the .global syntax to identify a global field in a query string. The Web Publishing Engine sets
the parameter values for global fields before performing the query command or setting any other parameter
values in the query string. For direct XML requests and requests made via XSLT stylesheets that don’t use
sessions, the global values expire immediately after the request is made. For requests made via an XSLT
stylesheet that use sessions, the global values persist for the duration of the session defined in the stylesheet,
or until they are changed again with another request.
If you don’t use the .global syntax to identify a global field in a query string, the Web Publishing Engine
evaluates the global field along with the remainder of the query string without setting the global field value
first.