How best to make those values available throughout the codebase is not inherently obvious. One option is simply to call the implementation-provided functions for accessing these input values wherever such a value is needed. For example, given a URL ending with? A less haphazard technique would be to assign the input values to variables using global prolog-level variable declarations in a library module, which could then be imported by any controller or view that needs to access those input values. However, it doesn't solve a deeper problem: functions that access such global variables cannot be independently tested.
Unit testing—whereby a single unit of code is tested in isolation from the rest of the program in a deliberately controlled environment, using sample data—is a common and highly advisable practice across many programming domains and languages. In a functional programming language like XQuery, the logical code unit for testing is the function. If a function relies on a global variable containing a value taken from the HTTP request, and if that function gets called for testing purposes outside the context of any HTTP request, the value of the global variable will always be empty.
Therefore, we have no way to verify the real-world behavior of the function. The controller can then pass that map to any given view, and each view in turn can pass the map to any functions that need user input values to make determinations about what data is needed, how to format it for display, or other such internal decisions. As mentioned above, running a web application written in XQuery requires implementation-specific extensions—not necessarily to the language itself, but to provide functions specific to the HTTP context, for such things as accessing URL parameters of GET requests and setting HTTP response headers.
There are, however, some techniques that help alleviate this problem. One such technique is to utilize what standardizations are available for XQuery web application development. The EXQuery organization exquery.
FunctX XQuery Functions: Hundreds of useful examples
As a result, the code is portable across multiple implementations and shareable among developers and projects. The main barrier to code portability across implementations and code sharing across the XQuery web development community is the necessity of implementation-provided functions.
One technique to alleviate this problem is to abstract and isolate such functions. This goal can be achieved by creating one or more library modules containing generically named functions that internally utilize the corresponding implementation-specific functions.
Stay ahead with the world's most comprehensive technology and business learning platform.
Then, throughout the codebase, whenever implementation-provided functionality is needed, we simply call the applicable generic function instead of the implementation-specific one. This approach creates a layer of abstraction, separating and hiding implementation-dependent code from the rest of the codebase.
- Navigation menu.
- Essay on a New Theory of the Human Capacity for Representation.
- Cell Biology of Metals and Nutrients.
- Books & Videos.
- Your Brain and Your Self: What You Need to Know!
- Extract "Version" or "version" from XML.?
- Brain Training: Ultimate Brain Training Strategies For Memory Improvement, Concentration, Mental Clarity, Neuroplasticity, And Mind Power?
Such a module written for BaseX would look like this: xquery version "3. When you have XML content that needs to be presented on the web, developing web applications with XQuery has notable advantages over the traditional technology stack and its accompanying web development frameworks. The techniques for web application development with XQuery described here are straightforward to apply, but they can have powerful and wide-ranging effects on the resulting code, leaving it more organized, readable, maintainable, testable, portable, and shareable.
How to cite this paper Murray, Gregory. Techniques for web application development with XQuery Utilizing MVC Despite the drawbacks of web development frameworks just described, there is one common feature that is just as relevant for XQuery web development as for any other language: the utilization of MVC model, view, controller. View The role of the view is to provide the presentation, whether for human- or machine-readability. Controller The controller is responsible for receiving user input and responding accordingly.
Figure 2: First option: only the controller calls the model. Figure 3: Second option: any given view can call the model.
Ancillary modules In addition to the core MVC components, additional specialized XQuery library modules are often helpful. Keeping functions testable As shown in Figures 2 and 3 above , when responding to an HTTP request using XQuery and MVC, the chain of processing forms a loop in which the request is routed to the controller, which calls a view, which constructs a fully formatted representation and returns it to the controller, which returns the HTTP response.
Improving code portability and sharing As mentioned above, running a web application written in XQuery requires implementation-specific extensions—not necessarily to the language itself, but to provide functions specific to the HTTP context, for such things as accessing URL parameters of GET requests and setting HTTP response headers. Using available standardizations One such technique is to utilize what standardizations are available for XQuery web application development.
Isolating implementation-specific functions The main barrier to code portability across implementations and code sharing across the XQuery web development community is the necessity of implementation-provided functions. Conclusion When you have XML content that needs to be presented on the web, developing web applications with XQuery has notable advantages over the traditional technology stack and its accompanying web development frameworks. References [Kaufmann] Kaufmann, M. See if you have enough points for this item. Sign in. The W3C XQuery 3.
Designed for query writers who have some knowledge of XML basics, but not necessarily advanced knowledge of XML-related technologies, this book is ideal as both a tutorial and a reference. Programming in C. Stephen G. Linux Device Drivers. Jonathan Corbet. The Linux Programming Interface. Michael Kerrisk. Sam R. Python Essential Reference. David M. Postfix: The Definitive Guide. Kyle D.
Kalen Delaney. Jonathan Hobson. Mark Horninger. Francesco Marchioni. Paul DuBois.
Doug Tidwell. Clement Nedelcu. Richard Stevens.
Executing XQuery in Java
Herbert Schildt. Mike Hotek. Mike Volodarsky. JBoss AS 7 Development. Bradley L. Patrick LeBlanc.
XQuery, 2nd Edition
Brian Knight. Bill Calkins. Ritesh Shah. MySQL Troubleshooting. Sveta Smirnova. Apache Security. Ivan Ristic. Oracle Database 10g Linux Administration. Edward Whalen. Learning Nagios 3. Wojciech Kocjan. Ray Rankins. Oracle GoldenGate 11g Implementer's guide. John P Jeffries. XSLT 2.
- FunctX XQuery Function Library;
- Healing a Childs Grieving Heart: 100 Practical Ideas for Families, Friends and Caregivers (Healing a Grieving Heart series).
- Log in to Wiley Online Library.
- The Theory of Arithmetic Functions.