XML QL Query language and its implementation-2

zhaozj2021-02-16  71

1. Introduction to XML-QL query and its commonly used grammar structure

There are several important issues that need to be solved in the face of large XML data. For example, using what technology or tools can extract data from a large XML document; XML data can be translated between different DTDs; data can be combined from multiple XML documents; or can transmit a large number of XML data.

Data extraction, transmission, merge is a traditional database problem, which solves the implementation of Structured Query Language SQL. However, SQL cannot be applied directly to XML because the data structure in XML includes not only conventional structured data format, but also contains a large number of semi-structural data. The appearance of XML-QL solves these issues.

The XML-QL language can extract information from the XML document by querying, and can translate XML data between different DTDs, and can bind to data from multiple XML documents, which can transmit XML data.

The XML-QL query language currently proposed by the W3C is the standard language of the XML document, and there are also some XML query languages ​​independently developed by other organizations, such as AT & T's STRU-QL. The following discussion is based on the standard QL proposed by W3C. Introducing the five grammatical structures of XML-QL as input as input. The document lib.xml is as follows:

Database System Introduction </ Title></p> <p><author> <lastname> Sa Master </ lastname> </ author></p> <p><author> <lastname> Wang Shan </ lastname> </ author></p> <p><Publisher> <Name> Higher Education Press </ Name> </ Publisher></p> <p></ book></p> <p><book year = "2001"></p> <p><title> C program design second version </ title></p> <p><author> <lastname> Tan Haoqiang </ lastname> </ author></p> <p><Publisher> <Name> Tsinghua University Press </ Name> </ Publisher></p> <p><book></p> <p></ lib></p> <p>(1) Match data with mode</p> <p>XML-QL uses element mode to find data in an XML document. If you check the authors of all Tsinghua University Press, you can use the following query:</p> <p>WHERE <book></p> <p><Publisher> <Name> Tsinghua University Press </ Name> </ Publisher></p> <p><author> $ a </ author></p> <p></ book> in "lib.xml"</p> <p>Construct $ A</p> <p>In the above search, the matching <book> element must contain a <author> element, and there is a <name> element as the <Publisher> element of Tsinghua University Press. Each time you find a qualified <book> element, the XML-QL will assign the contents of the <author> element to the variable a. The final result of XML-QL is all the contents of the <author> element assigned to a.</p> <p>(2) Establish XML data</p> <p>In the above query, XML-QL will generate a range of <author> elements, can also generate a series of <results> elements containing <author> elements and <title> elements to find the author of "Higher Education Press" . WHERE <book></p> <p><Publisher> <Name> Higher Education Press </ Name> </ Publisher></p> <p><title> $ t </ title></p> <p><author> $ a </ author></p> <p></ book> in "lib.xml"</p> <p>Construct <result></p> <p><author> $ a </ author></p> <p><title> $ t </ title></p> <p></ result></p> <p>We will get the following results after application query:</p> <p><result></p> <p><author> <lastname> Sa Master </ lastname> </ author></p> <p><Title> Database System Introduction </ Title></p> <p></ result></p> <p><result></p> <p><author> <lastname> Wang Shan </ lastname> </ author></p> <p><Title> Database System Introduction </ Title></p> <p></ result></p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-21792.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="21792" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.041</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'DzbV5WUM5RsZXs4ZQ2hiJwzE_2BOmXYKTA3PrYGlJ_2Fd8tskAH8Iyhn4bMGQl_2F6rxkeNRsj9qrZrMFUTEYVzkjoyw_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>