{"id":51660,"date":"2021-02-12T03:01:54","date_gmt":"2021-02-11T17:01:54","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=51660"},"modified":"2021-02-11T19:33:50","modified_gmt":"2021-02-11T09:33:50","slug":"appml-acronyms-hierarchy-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/appml-acronyms-hierarchy-tutorial\/","title":{"rendered":"AppML Acronyms Hierarchy Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/index.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"AppML Acronyms Hierarchy Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata_sub.jpg\" title=\"AppML Acronyms Hierarchy Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">AppML Acronyms Hierarchy Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='AppML Acronyms Tutorial' href='#amlat'>AppML Acronyms Tutorial<\/a> works in an HTML table by <font size=1>appml-<\/font>repeat<font size=2>ing<\/font> table cell content elements via an array.  What happens if your JSON contains arrays within arrays, like our Acronym data&#8217;s &#8220;vars&#8221; members &#8230;<\/p>\n<p><code><br \/>\n[{\"sf\": \"BHP\", \"lfs\": [{\"lf\": \"benign prostatic hyperplasia\", \"freq\": 12, \"since\": 1992, \"vars\": [{\"lf\": \"benign prostatic hyperplasia\", \"freq\": 8, \"since\": 1992}, {\"lf\": \"Human benign hyperplastic prostate\", \"freq\": 2, \"since\": 1994}, {\"lf\": \"Benign prostatic hyperplasia\", \"freq\": 1, \"since\": 1995}, {\"lf\": \"benign prostate hyperplasia\", \"freq\": 1, \"since\": 1995}]}, {\"lf\": \"tert-butyl hydroperoxide\", \"freq\": 11, \"since\": 1986, \"vars\": [{\"lf\": \"tert-butyl hydroperoxide\", \"freq\": 6, \"since\": 1994}, {\"lf\": \"t-butyl hydroperoxide\", \"freq\": 3, \"since\": 1986}, {\"lf\": \"Tert-butyl hydroperoxide\", \"freq\": 1, \"since\": 1993}, {\"lf\": \"tert.-butyl hydroperoxide\", \"freq\": 1, \"since\": 2003}]}, {\"lf\": \"N-nitrosobis (2-hydroxypropyl) amine\", \"freq\": 7, \"since\": 1985, \"vars\": [{\"lf\": \"N-nitrosobis (2-hydroxypropyl) amine\", \"freq\": 6, \"since\": 1985}, {\"lf\": \"N-Nitrosobis (2-hydroxypropyl) amine\", \"freq\": 1, \"since\": 1993}]}, {\"lf\": \"benign hypertrophy of the prostate\", \"freq\": 6, \"since\": 1988, \"vars\": [{\"lf\": \"benign hypertrophy of the prostate\", \"freq\": 4, \"since\": 1988}, {\"lf\": \"Benign hypertrophy of the prostate\", \"freq\": 2, \"since\": 2003}]}]}]<br \/>\n<\/code><\/p>\n<p>?  Well, we just surmised (a table template like) &#8230;<\/p>\n<p><code><br \/>\n&lt;table appml-data=\"appis\"&gt;<br \/>\n&lt;tr&gt;<br \/>\n  &lt;th&gt;Meaning&lt;\/th&gt;<br \/>\n  &lt;th&gt;Frequency&lt;\/th&gt;<br \/>\n  &lt;th&gt;Since&lt;\/th&gt;<br \/>\n  &lt;th&gt;Subs&lt;\/th&gt;<br \/>\n&lt;\/tr&gt;<br \/>\n&lt;tr appml-repeat=\"records\"&gt;<br \/>\n  &lt;td&gt;{{lf}}&lt;\/td&gt;<br \/>\n  &lt;td&gt;{{freq}}&lt;\/td&gt;<br \/>\n  &lt;td&gt;{{since}}&lt;\/td&gt;<br \/>\n  &lt;td&gt;{{vars}}&lt;\/td&gt;<br \/>\n&lt;\/tr&gt;<br \/>\n&lt;\/table&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; might be a good start.  It was, the AppML leaving behind comma separated <i>[object Object]<\/i> hardcodings for the submembers of the &#8220;vars&#8221; array members, and then <font color=-blue>PHP code like<\/font> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n  $json_output = json_decode(str_replace(\"$@$\", \"\",  str_replace(\"}]}]}]\", \"}]}]}\", str_replace(\"$@$[\",\"\", (\"$@$\" . $pageContent))))); \/\/  ,true);<br \/>\n<br \/>\n  $hstuff = str_replace(\"none;\", \"block;\", str_replace(\"&gt;&lt;\/th&gt;\", \"&gt;&nbsp;&nbsp;&nbsp;\" . $selname . \"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/th&gt;\", $uc));<br \/>\n<br \/> <br \/>\n  for ($i=0; $i&lt;sizeof($json_output-&gt;lfs); $i++) {<br \/>\n    if (strpos($hstuff, '&gt;' . $json_output-&gt;lfs[$i]-&gt;lf . '&lt;\/td') === false) {<br \/>\n      if ($done == \"n\") {<br \/>\n       for ($ii=1; $ii&lt;sizeof($biarray); $ii+=2) {<br \/>\n         if (strtoupper($json_output-&gt;lfs[$i]-&gt;lf) == strtoupper($biarray[$ii])) $done = \"Y\";<br \/>\n       }<br \/>\n      }<br \/>\n      <font color=-blue>$subhstuff=\"\";<br \/>\n      $shs=\"\";<\/font><br \/>\n      if ($json_output-&gt;lfs[$i]-&gt;vars) {<br \/>\n      for ($iij=0; $iij&lt;sizeof($json_output-&gt;lfs[$i]-&gt;vars); $iij++) {<br \/>\n         <font color=-blue>if ($subhstuff == \"\") {<br \/>\n           $subhstuff=\"&lt;br&gt;&lt;table&gt;&lt;TBODY&gt;&lt;\/TBODY&gt;&lt;\/table&gt;\";<br \/>\n           $shs=\"[object Object]\";<br \/>\n         } else {<br \/>\n           $shs.=\",[object Object]\";<br \/>\n         }<br \/>\n         $subhstuff=str_replace(\"&lt;\/TBODY&gt;\", \"&lt;tr&gt;&lt;th&gt;\" . ($iij + 1) . \"&lt;\/th&gt;&lt;th class=thlink&gt;\" . $json_output-&gt;lfs[$i]-&gt;vars[$iij]-&gt;lf . \"&lt;\/th&gt;&lt;th&gt;\" . $json_output-&gt;lfs[$i]-&gt;vars[$iij]-&gt;freq . \"&lt;\/th&gt;&lt;th&gt;\" . $json_output-&gt;lfs[$i]-&gt;vars[$iij]-&gt;since . \"&lt;\/th&gt;&lt;\/tr&gt;&lt;\/TBODY&gt;\", $subhstuff);<br \/>\n      <\/font>}<br \/>\n      <font color=-blue>if ($fillin == \"\") { $fillin=\" setTimeout(alat, 5000); \\n } \\n function alat() { \\n  var dai=document.getElementsByTagName('table'); \" . \"\\n\"; }<br \/>\n      $fillin.=\" dai[0].innerHTML=dai[0].innerHTML.replace(\/\" . '\\\"' . \"\/g,'').replace(\\\"\" . $shs . \"\\\", \\\"\" . str_replace(\"&lt;br&gt;\", \"\", $subhstuff) . \"\\\");  \" . \"\\n\";<br \/>\n      }<\/font><br \/>\n      $hstuff = str_replace(\"&lt;\/tbody&gt;&lt;\/table&gt;\", \"&lt;tr class='\" . $trclass . \"'&gt;&lt;td&gt;\" . ($i + 1) . \"<font color=-blue>.&lt;details&gt;&lt;summary&gt;\" . sizeof($json_output-&gt;lfs[$i]-&gt;vars) . \"&lt;\/summary&gt;\" . str_replace(\" class=\\\"thlink\\\"\", \"\", str_replace(\" class=thlink\", \"\", str_replace(\"&lt;th\", \"&lt;td\", str_replace(\"&lt;\/th&gt;\", \"&lt;\/td&gt;\", $subhstuff)))) . \"&lt;\/details&gt;<\/font>&lt;\/td&gt;&lt;td&gt;\" . $json_output-&gt;lfs[$i]-&gt;lf . \"&lt;\/td&gt;&lt;td&gt;\" . $json_output-&gt;lfs[$i]-&gt;freq . \"&lt;\/td&gt;&lt;td&gt;\" . $json_output-&gt;lfs[$i]-&gt;since . \"&lt;\/td&gt;&lt;\/tr&gt;&lt;\/tbody&gt;&lt;\/table&gt;\", $hstuff);<br \/>\n      if ($trclass == \"odd\") {<br \/>\n        $trclass = \"even\";<br \/>\n      } else {<br \/>\n        $trclass = \"odd\";<br \/>\n      }<br \/>\n    }<br \/>\n    $ij = 1 + $i;<br \/>\n  }<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; replaces those with table within table submember display HTML.<\/p>\n<p>Along the way we add in <a target=_blank title='Wikipedia, thanks' href='https:\/\/wikipedia.org'>Wikipedia<\/a> links and hashtag navigation to swap between the JSON and the Wikipedia and vice versa.<\/p>\n<p>Like yesterday, you can check out <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.php---GETME\" title='getacronymdata.php'>the PHP changed<a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.php---GETME\" title='getacronymdata.htm'>getacronymdata.php<\/a> called by <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.html-----GETME\" title='getacronymdata.htm'>the minor changes<a> of <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.html-----GETME\" title='getacronymdata.htm'>getacronymdata.htm<\/a>&#8216;s <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/\" title=\"Click picture\">acronym web application<\/a> to see (or try) this all for yourself.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/appml-acronyms-hierarchy-tutorial\/'>AppML Acronyms Hierarchy Tutorial<\/a>.<\/p-->\n<hr>\n<p id='amlat'>Previous relevant <a target=_blank title='AppML Acronyms Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/appml-acronyms-tutorial\/'>AppML Acronyms Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/index.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"AppML Acronyms Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/acronym_appml.jpg\" title=\"AppML Acronyms Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">AppML Acronyms Tutorial<\/p><\/div>\n<p>After yesterday&#8217;s <a title='AppML Primer Tutorial' href='#amlpt'>AppML Primer Tutorial<\/a> we went looking for an apt inhouse web application that allows an interface to these new AppML framework concepts.  Do you remember <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/acronyms-lookup-wikipedia-tutorial\/' title='Acronyms Lookup Wikipedia Tutorial'>Acronyms Lookup Wikipedia Tutorial<\/a>?<\/p>\n<p>We first thought we&#8217;d be working in the client half of this web application but found it was much better to just add a new input element (ie. textbox) placeholder, just, here, and do the bulk of the changes needed in the serverside PHP that is Ajax called from the client HTML.<\/p>\n<p>What most pointed us in the right direction here, with the code, was <a target=_blank href='http:\/\/webdevable.com\/w3schools\/appml\/appml_data.html' title='AppML Data'>AppML Data<\/a> whereby that &#8220;<font color=blue>customers.js<\/font>&#8221; web server JSON file arrangement of yesterday, can be localized via PHP (where $pageContent is JSON results for acronym query from third parties, thanks and $appml is true for user flagging they want the AppML output report look) &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n if ($appml) {<br \/>\n   $mytitle=$selname;   \/\/ incoming acronym to look up<br \/>\n<br \/>\n   $aml=\"&lt;!DOCTYPE html&gt;<br \/>\n&lt;html lang=\\\"en-US\\\"&gt;<br \/>\n&lt;link rel=\\\"stylesheet\\\" href=\\\"style.css\\\"&gt;<br \/>\n&lt;title&gt;Customers&lt;\/title&gt;<br \/>\n&lt;script src=\\\"\/\/www.w3schools.com\/appml\/2.0.3\/appml.js\\\"&gt;&lt;\/script&gt;<br \/>\n&lt;body&gt;<br \/>\n<br \/>\n&lt;h1&gt;\" . $mytitle . \"&lt;\/h1&gt;<br \/>\n<br \/>\n&lt;h4&gt;Thanks to &lt;a target=_blank title='AppML via W3Schools, thanks' href='\/\/webdevable.com\/w3schools\/appml\/appml_howto.html'&gt;W3Schools&lt;\/a&gt;&lt;\/h4&gt;<br \/>\n<br \/>\n&lt;table appml-data='<font color=blue>appis<\/font>'&gt;<br \/>\n&lt;tr&gt;<br \/>\n  &lt;th&gt;Meaning&lt;\/th&gt;<br \/>\n  &lt;th&gt;Frequency&lt;\/th&gt;<br \/>\n  &lt;th&gt;Since&lt;\/th&gt;<br \/>\n&lt;\/tr&gt;<br \/>\n&lt;tr appml-repeat=\\\"records\\\"&gt;<br \/>\n  &lt;td&gt;{{lf}}&lt;\/td&gt;<br \/>\n  &lt;td&gt;{{freq}}&lt;\/td&gt;<br \/>\n  &lt;td&gt;{{since}}&lt;\/td&gt;<br \/>\n&lt;\/tr&gt;<br \/>\n&lt;\/table&gt;<br \/>\n<br \/>\n&lt;script&gt;<br \/>\n  var <font color=blue>appis<\/font>=\" . (str_replace('\"JUNKJUNK',\"'\",str_replace('\"sf\": \"' . $selname . '\", \"lfs\": ', '\"records\":', str_replace(\"\\n\",\"\",str_replace(\"}]}]}]\", \"}]}]}\",substr($pageContent,1)) ))) ) . \";<br \/>\n&lt;\/script&gt;<br \/>\n<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n\";<br \/>\n<br \/>\n    echo $aml;<br \/>\n    exit;<br \/>\n }<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>So, you can check out <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.php--GETME\" title='getacronymdata.php'>the PHP changed<a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.php--GETME\" title='getacronymdata.htm'>getacronymdata.php<\/a> called by <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.html----GETME\" title='getacronymdata.htm'>the minor changes<a> of <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/getacronymdata.html----GETME\" title='getacronymdata.htm'>getacronymdata.htm<\/a>&#8216;s <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/JSON\/Acronym\/\" title=\"Click picture\">acronym web application<\/a> to see (or try) this all for yourself.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/appml-acronym-tutorial\/'>AppML Acronym Tutorial<\/a>.<\/p-->\n<hr>\n<p id='amlpt'>Previous relevant <a target=_blank title='AppML Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/appml-primer-tutorial\/'>AppML Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/AppML\/index.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"AppML Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/AppML\/appml_primer.jpg\" title=\"AppML Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">AppML Primer Tutorial<\/p><\/div>\n<p>There are hundreds and perhaps thousands of Framework type applications out there that create HTML output.  Some set to a Framework the handling of data, and today we&#8217;re trying out one called AppML where we are going to use the <a target=_blank title='AppML first tutorial' href='http:\/\/webdevable.com\/w3schools\/appml\/appml_howto.html'>W3Schools<\/a> Two Step first tutorial as per &#8230;<\/p>\n<blockquote cite='http:\/\/webdevable.com\/w3schools\/appml\/appml_howto.html'><p>\nAppML Explained:<br \/>\n&lt;script src=&#8221;https:\/\/www.w3schools.com\/appml\/2.0.3\/appml.js&#8221;&gt; adds AppML to your page.<br \/>\n<br \/>\nappml-data=&#8221;customers.js&#8221; connects AppML data (customers.js) to an HTML element (&lt;table>&gt;).<br \/>\n<br \/>\nIn this case we have used a JSON file: customers.js<br \/>\n<br \/>\nappml-repeat=&#8221;records&#8221; repeats an HTML element (&lt;tr&gt;) for each item (records) in a data object.<br \/>\n<br \/>\nThe {{ }} brackets are placeholders for AppML data.\n<\/p><\/blockquote>\n<p>Tokenizing this way (or you could call it substituting) gels with our thinking nearly as much as adding global data attributes as ways to make your HTML more intelligent, and more like that &#8220;protocol with glasses&#8221;, XML.<\/p>\n<p>All it took to create today&#8217;s &#8220;pretty swish&#8221; table of a <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/AppML\/index.html\" title=\"Click picture\">web application<\/a> was &#8230;<\/p>\n<ol>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/AppML\/index.html_GETME\" title=\"index.html\">index.html<\/a> HTML<\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/AppML\/style.css_GETME\" title=\"style.css\">style.css<\/a> CSS<\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/AppML\/customers.js_GETME\" title=\"customers.js\">customers.js<\/a> JSON<\/li>\n<\/ol>\n<p> &#8230; that JSON serving as a flat file data source.   Interesting, huh?!<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d51643' onclick='var dv=document.getElementById(\"d51643\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/framework\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d51643' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d51654' onclick='var dv=document.getElementById(\"d51654\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/json\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d51654' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d51660' onclick='var dv=document.getElementById(\"d51660\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/hashtag\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d51660' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday&#8217;s AppML Acronyms Tutorial works in an HTML table by appml-repeating table cell content elements via an array. What happens if your JSON contains arrays within arrays, like our Acronym data&#8217;s &#8220;vars&#8221; members &#8230; [{&#8220;sf&#8221;: &#8220;BHP&#8221;, &#8220;lfs&#8221;: [{&#8220;lf&#8221;: &#8220;benign prostatic &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/appml-acronyms-hierarchy-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,37],"tags":[56,69,3560,103,281,2053,462,557,564,576,3563,664,849,932,997,3559,3304,1319,1431,1480],"class_list":["post-51660","post","type-post","status-publish","format-standard","hentry","category-elearning","category-tutorials","tag-acronym","tag-ajax","tag-appml","tag-array","tag-css","tag-data-table","tag-framework","tag-hashtag","tag-hierarchy","tag-html","tag-javascript-object","tag-json","tag-object","tag-php","tag-programming","tag-substitute","tag-token","tag-tutorial","tag-wikipedia","tag-xml"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/51660"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=51660"}],"version-history":[{"count":5,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/51660\/revisions"}],"predecessor-version":[{"id":51665,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/51660\/revisions\/51665"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=51660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=51660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=51660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}