{"id":76,"date":"2005-05-30T15:54:22","date_gmt":"2005-05-30T15:54:22","guid":{"rendered":"http:\/\/lachy.id.au\/log\/2005\/05\/separator-elements"},"modified":"2006-04-30T23:45:57","modified_gmt":"2006-04-30T23:45:57","slug":"separator-elements","status":"publish","type":"post","link":"https:\/\/lachy.id.au\/log\/2005\/05\/separator-elements","title":{"rendered":"Separator Elements"},"content":{"rendered":"<p>The traditional, structured way to markup and delimit separate sections in\r\n\tSGML and XML is to put each part within its own container element. e.g.<\/p>\r\n\r\n<div id=\"sep-example-1\" class=\"example\">\r\n<p><a href=\"#sep-example-1\">Example 1<\/a>:<\/p>\r\n<pre><code class=\"markup\">&lt;part&gt;\r\n  &lt;p&gt;part 1&lt;\/p&gt;\r\n&lt;\/part&gt;\r\n&lt;part&gt;\r\n  &lt;p&gt;part 2&lt;\/p&gt;\r\n&lt;\/part&gt;<\/code><\/pre>\r\n<\/div>\r\n\r\n<p>From a structural point of view, this clearly indicates a certain separation\r\n\tbetween the two parts, whatever the actual container element or semantics may\r\n\tbe.<\/p>\r\n<p>However, there is an anomaly in all versions HTML and XHTML with some elements\r\n\tdesigned as separators, rather than container elements. Specifically, I\u2019m referring\r\n\tto HTML\u2019s <code class=\"markup\"><a href=\"http:\/\/www.w3.org\/TR\/html401\/present\/graphics.html#edef-HR\">hr<\/a><\/code> and <code class=\"markup\"><a href=\"http:\/\/www.w3.org\/TR\/html401\/struct\/text.html#edef-BR\">br<\/a><\/code> elements, and XHTML 2\u2019s proposed <a href=\"http:\/\/www.w3.org\/TR\/2005\/WD-xhtml2-20050527\/mod-structural.html#sec_8.9.\"><code class=\"markup\">separator<\/code> element<\/a>. To separate\r\n\tone part from another, these elements are placed between the content, which\r\n\tsome argue goes against the spirit of SGML and XML. e.g.<\/p>\r\n\r\n<div id=\"sep-example-2\" class=\"example\">\r\n<p><a href=\"#sep-example-2\">Example 2<\/a>:<\/p>\r\n<pre><code class=\"markup\">&lt;p&gt;part 1&lt;\/p&gt;\r\n&lt;separator\/&gt;\r\n&lt;p&gt;part 2&lt;\/p&gt;<\/code><\/pre>\r\n<\/div>\r\n\r\n<h3 id=\"sep-tag-name\">Tag Name<\/h3>\r\n<p>The XHTML 2 <code class=\"markup\">separator<\/code> element has been renamed from HTML 4\u2019s <code class=\"markup\">hr<\/code> element.\r\n\tThe reason for this is that the presentation of the separation is not always\r\n\thorizontal, and not always a rule. According to <a href=\"http:\/\/www.w3.org\/2005\/Talks\/04-19-steven-XHTML2-XForms\/\" title=\"XHTML2 {u\/a}nd XForms\">a\r\n\trecent presentation by Stephen Pemberton<\/a>, the Japanese community were asking for a <code class=\"markup\">vr<\/code> (Vertical\r\n\tRule) element. He also provided some examples from different editions of\r\n\tthe same book where, in each case, the presentation of the separator was\r\n\tdifferent, but the semantics were the same.<\/p>\r\n<p>In order to remove all presentational suggestion from the element name, and\r\n\tin an attempt to address the true structure of the construct, the element was\r\n\trenamed to <code class=\"markup\">separator<\/code>. However, this name has been questioned because of its\r\n\tapparent spelling difficulty. It seems that \u2018separator\u2019 is often incorrectly\r\n\tspelt with an \u2018e\u2019 in place of the first \u2018a\u2019 as: \u2018seperator\u2019. There has been\r\n\ta suggestion for the tag name to be reduced to \u2018<code class=\"markup\">sep<\/code>\u2019 to avoid all this confusion\r\n\tand make it easier to type.<\/p>\r\n<p>However, regardless of the tag name\u2019s spelling, the question still remains\r\n\tas to whether the name truly represents the elements semantics; or, indeed,\r\n\twhether it has any semantics at all, or if it\u2019s just a place holder for a presentational\r\n\tconstruct.<\/p>\r\n\r\n<h3 id=\"sep-structure\">Structure<\/h3>\r\n<p><a href=\"http:\/\/www.cs.tut.fi\/~jkorpela\/\">Jukka Korpela<\/a> has previously <a href=\"http:\/\/www.cs.tut.fi\/~jkorpela\/html\/empty.html\">argued\r\n\t\tstrongly against these empty separator-like elements<\/a> in HTML, and suggested that the <code class=\"markup\">br<\/code> element be replaced with a much\r\n\tmore structured <code class=\"markup\">line<\/code> element instead, and that the <code class=\"markup\">hr<\/code> element be replaced with\r\n\ta similar structural equivalent. He compares <code class=\"markup\">hr<\/code> with the original structure\r\n\tof the <code class=\"markup\">p<\/code> element as a separator between paragraphs, rather than a container;\r\n\tand Unicode control codes; and explains why this structure is not appropriate\r\n\tin an SGML or XML context.<\/p>\r\n<p>There is also the question of what exactly does it separate? In <a href=\"#sep-example-2\">example\r\n\t\t2<\/a>\tabove, the separator element clearly separates part 1 from part 2. However,\r\n\tthe separation is not always as clear. For example, if the separator were to\r\n\tbe included within its own part, then the question of what it actually separates\r\n\tbecomes a little more complex.<\/p>\r\n\r\n<div id=\"sep-example-3\" class=\"example\">\r\n<p><a href=\"#sep-example-3\">Example 3<\/a>:<\/p>\r\n<pre><code class=\"markup\">&lt;part&gt;\r\n  &lt;p&gt;part 1&lt;\/p&gt;\r\n&lt;\/part&gt;\r\n&lt;part&gt;\r\n  &lt;separator\/&gt;\r\n&lt;\/part&gt;\r\n&lt;part&gt;\r\n  &lt;p&gt;part 2&lt;\/p&gt;\r\n&lt;\/part&gt;<\/code><\/pre>\r\n<\/div>\r\n\r\n<p>It would appear that the intention of this markup structure is to markup the\r\n\tseparation between parts 1 and 2. However, from a structural point of view,\r\n\tthe <code class=\"markup\">separator<\/code> element in this case really only serves to separate the content\r\n\twithin the second part element. If the <code class=\"markup\">separator<\/code> element is really intended\r\n\tto both structurally and semantically separate parts 1 and 2, then it would\r\n\tseem that the boundary of separation extends beyond the <code class=\"markup\">separator<\/code> element\u2019s\r\n\tparent, which really seems to break the tree-like structure of XML markup even\r\n\tmore.<\/p>\r\n<p>Now, you may be asking what possible reason there is that would require such\r\n\ta structure with any real XHTML elements; but take my word for it, as we\r\n\twill see later, this kind of structure is required in some circumstances, for\r\n\tthe separator element.<\/p>\r\n\r\n<h3 id=\"sep-alt-markup\">Alternative Markup<\/h3>\r\n<p>This issue with <code class=\"markup\">br<\/code> element has in fact already been addressed with the introduction\r\n\tof the <code class=\"markup\">l<\/code> element in XHTML 2, but the issues with the <code class=\"markup\">hr<\/code> and <code class=\"markup\">separator<\/code> elements\r\n\tstill remain. In essence, the <code class=\"markup\">hr<\/code> element is the block-level equivalent to the\r\n\tinline <code class=\"markup\">br<\/code> element; yet it is not quite so easy to replace it with a structural\r\n\tand semantic equivalent, as it is replacing <code class=\"markup\">br<\/code> with <code class=\"markup\">l<\/code>, because it is harder\r\n\tto define its semantics.<\/p>\r\n<p><a href=\"#sep-example-1\">Examples 1<\/a> and <a href=\"#sep-example-2\">2<\/a> above are logically identical, in that they both mark up\r\n\tthe separation between parts 1 and 2. They are clearly structurally different;\r\n\tbut the question of semantics still remains. It has been argued that the\r\n\tstructured, semantic equivalent already exists in XHTML 2 as <a href=\"http:\/\/www.w3.org\/TR\/2005\/WD-xhtml2-20050527\/mod-structural.html#sec_8.9.\">the <code class=\"markup\">section<\/code> element<\/a>. For example, the following is structurally equivalent to example 1\r\n\tand logically equivalent to both examples 1 and 2, but is it semantically equivalent\r\n\tto either?<\/p>\r\n\r\n<div id=\"sep-example-4\" class=\"example\">\r\n<p><a href=\"#sep-example-4\">Example 4<\/a>:<\/p>\r\n<pre><code class=\"markup\">&lt;section&gt;\r\n  &lt;p&gt;part 1&lt;\/p&gt;\r\n&lt;\/section&gt;\r\n&lt;section&gt;\r\n  &lt;p&gt;part 2&lt;\/p&gt;\r\n&lt;\/section&gt;<\/code><\/pre>\r\n<\/div>\r\n\r\n<h3 id=\"sep-presentation\">Presentation<\/h3>\r\n<p>One of the arguments against the semantic equivalence of <a href=\"#sep-example-2\">examples\r\n\t\t2<\/a> and <a href=\"#sep-example-4\">4<\/a>\tis that example 2 typically results in some default presentation as an indication\r\n\tof separation between sections, which may convey some semantics to the reader.\r\n\tThis indication is typically a horizontal rule, stars, or other graphical representation\r\n\tin a visual medium; a long pause in an aural medium, etc.<\/p>\r\n<p>Although the presentation alone is not, in any way, a reason to retain any\r\n\telement in a semantic language \u2013 particularly if a non-presentational, well\r\n\tstructured, semantic equivalent already exists \u2013 the issue of presentation is\r\n\tnot simply about how it looks in this case; but the semantics that the presentation\r\n\tconveys to the reader, which makes it semantically different from other existing\r\n\tmarkup.<\/p>\r\n\r\n<h3 id=\"sep-semantics\">Semantics<\/h3>\r\n<p>As we have seen throughout this discussion, each issue comes down to the issue\r\n\tof semantics, and what the element actually means. One of the problems is with\r\n\tdefining the semantics is that the definition was rather vague in HTML 2.0,\r\n\tand only became more so later. The definitions for the <code class=\"markup\">hr<\/code> element in all versions\r\n\tfrom HTML 2.0 through to XHTML 1.1 and the <code class=\"markup\">separator<\/code> element in the XHTML 2.0\r\n\tdraft are as follows:<\/p>\r\n\r\n<dl>\r\n\t<dt>\t\tHorizontal Rule: <code class=\"markup\">HR<\/code> (<a href=\"http:\/\/www.ietf.org\/rfc\/rfc1866\">HTML\r\n\t2.0<\/a>):<\/dt>\r\n\t<dd>The <code class=\"markup\">&lt;HR&gt;<\/code> element is a divider between sections of text; typically\r\n\t\ta full width horizontal rule or equivalent graphic.<\/dd>\r\n\t<dt>\t\t<a href=\"http:\/\/www.w3.org\/MarkUp\/html3\/rules.html\">Horizontal Rules<\/a> (HTML\r\n\t3.0 \u2013 Expired draft)<\/dt>\r\n\t<dd>The <code class=\"markup\">&lt;HR&gt;<\/code> element is used for horizontal rules that act as dividers\r\n\t\tbetween sections. The <code class=\"markup\">SRC<\/code> attribute can be used to designate a custom graphic,\r\n\t\totherwise subclass <code class=\"markup\">HR<\/code> with the <code class=\"markup\">CLASS<\/code> attribute and specify the appropriate\r\n\t\trendering with an associated style sheet.<\/dd>\r\n\t<dt>\t    <code class=\"markup\"><a href=\"http:\/\/www.w3.org\/TR\/REC-html32#hr\">HR<\/a><\/code><a href=\"http:\/\/www.w3.org\/TR\/REC-html32#hr\"> &#8211; horizontal rules<\/a> (HTML\r\n\t3.2)<\/dt>\r\n\t<dd>Horizontal rules may be used to indicate a change in topic. In a speech based\r\n\t\tuser agent, the rule could be rendered as a pause.<\/dd>\r\n\t<dt>\t\t<a href=\"http:\/\/www.w3.org\/TR\/html401\/present\/graphics.html#edef-HR\">Rules: the <code class=\"markup\">HR<\/code> element<\/a> (HTML 4.0 to XHTML 1.1 (Modularization of XHTML))<\/dt>\r\n\t<dd>The <code class=\"markup\">HR<\/code> element causes a horizontal rule to be rendered by visual user agents.<\/dd>\r\n\t<dt>\t\t<a href=\"http:\/\/www.w3.org\/TR\/2005\/WD-xhtml2-20050527\/mod-structural.html#sec_8.9.\">The <code class=\"markup\">separator<\/code> element<\/a> (XHTML 2.0)<\/dt>\r\n\t<dd>The <code class=\"markup\">separator<\/code> element separates parts of the document from each other.<\/dd>\r\n<\/dl>\r\n<p>With such poor definitions, it\u2019s easy to understand why there is such a debate\r\n\tover the element\u2019s semantics, and why it is often viewed as a poorly structured,\r\n\tnon-semantic, presentational element. In order to understand its true semantics,\r\n\tand how it differs from other elements like section, we must analyse its legitimate,\r\n\tnon-presentational usage in the real world. There are two common use cases we\r\n\twill investigate, including separators used in books, and separators used to\r\n\tgroup menu items in a typical <abbr title=\"Graphical User Interface\">GUI<\/abbr>.<\/p>\r\n\r\n<h3 id=\"sep-usage\">Usage<\/h3>\r\n<h4 id=\"sep-usage-book\">Book Chapters and Topics<\/h4>\r\n<p>In books, and other similar publications, such separators are often used to\r\n\tindicate a minor change in topic, scene or perspective. These changes, or divisions,\r\n\tare usually smaller than a whole chapter and, in fact, a chapter may contain\r\n\tmany such divisions with each separated visually with some kind of rule, stars\r\n\tor other graphical representation.<\/p>\r\n<p>Compare this with the <code class=\"markup\">section<\/code> element, which is designed to structure\r\n\ta document into sections &ndash; each with its own heading (in most cases).\r\n\tThe sections delimited with the separator element tend not to have headings\r\n\t\u2013 they\u2019re still related to the same section \u2013 but they do indicate a slight,\r\n\tyet related, change in topic. Thus, while both are similar, there is a semantic\r\n\tdifference between the two.<\/p>\r\n\r\n<h4 id=\"sep-usage-menu\">Menu Items<\/h4>\r\n<p>For menu items, such separators usually group related items. For example,\r\n\toptions to create, open and save documents are separated from those used to\r\n\tpreview and print the document, yet they are still operations performed on the\r\n\tfile as a whole, and therefore generally belong in the File menu. In this case,\r\n\tthe separator doesn\u2019t really indicate a change in topic, but rather a way to\r\n\tgroup related items. Using the <code class=\"markup\">separator<\/code> element, this structure could be marked\r\n\tup as follows.<\/p>\r\n\r\n<div id=\"sep-example-5\" class=\"example\">\r\n<p><a href=\"#sep-example-5\">Example 5<\/a>:<\/p>\r\n<pre><code class=\"markup\">&lt;nl&gt;\r\n  &lt;label&gt;Menu&lt;\/label&gt;\r\n  &lt;li&gt;Item 1&lt;\/li&gt;\r\n  &lt;li&gt;Item 2&lt;\/li&gt;\r\n  &lt;li&gt;&lt;separator\/&gt;&lt;\/li&gt;\r\n  &lt;li&gt;Item 3&lt;\/li&gt;\r\n  &lt;li&gt;Item 4&lt;\/li&gt;\r\n&lt;\/nl&gt;<\/code><\/pre>\r\n<\/div>\r\n\r\n<p>Note the similarity in structure to <a href=\"#sep-example-3\">example 3<\/a> where the separator element\r\n\tis within its own separate container element.<\/p>\r\n<p>It should be noted that there is another common method used to group related\r\n\tmenu items with the use of submenus, which usually fly-out to the side of the\r\n\tparent menu item. For this reason, it is often believed that nested lists represent\r\n\tthe semantics of submenus, while separators indicate the semantics of the lower-level\r\n\tgrouping. However, as I will demonstrate, this is not always the case, and structures\r\n\talready exist to semantically markup both kinds of groupings without the use\r\n\tof a separator element.<\/p>\r\n\r\n<h3 id=\"sep-solutions\">Solutions<\/h3>\r\n<p>The first, and most often proposed, solution is to introduce a new container\r\n\telement for these purposes. The benefit is that the element will (hopefully)\r\n\thave well defined semantics and allow a UA to present it appropriately. However,\r\n\tthe difficulty with this is that a new element that would be appropriate for\r\n\tuse within a section would not be appropriate for use within a list, due to\r\n\tthe differing content models and semantics of the seperation.<\/p>\r\n<p>The next commonly proposed solution is for authors to include a <code class=\"markup\">class<\/code> attribute\r\n\ton the elements that require separation and then use CSS to style them appropriately,\r\n\tsuch as with a border. While this solution is perfectly reasonable when the\r\n\tseparation is purely presentational with no semantic meaning whatsoever, it\r\n\tis not suitable for the semantic cases discussed above.<\/p>\r\n<p>If it were used for a semantic case, then it would be a case of moving the\r\n\tsemantics out with the presentation (rather than separating) and actually depend\r\n\tupon the availability of stylesheets to accurately express the semantics. As\r\n\ta result, the document may inadvertently change meaning when stylesheets are\r\n\tdisabled or unsupported.<\/p>\r\n<p>Another solution is to make use of a semantic attribute on existing container\r\n\telements, such as <code class=\"markup\">section<\/code>, <code class=\"markup\">div<\/code> or whatever else. Luckily, in XHTML 2, there\r\n\talready exists an attribute for the purpose of extending elements with more\r\n\tspecific and well defined semantics, known as the <code class=\"markup\">role<\/code> attribute.<\/p>\r\n\r\n<h4 id=\"sep-solutions-book\">Book Chapters and Topics<\/h4>\r\n<p>Using the example of the book chapters given earlier, a section element could\r\n\tbe used to represent a chapter and div elements to represent the change in topic.<\/p>\r\n\r\n<div id=\"sep-example-6\" class=\"example\">\r\n<p><a href=\"#sep-example-6\">Example 6<\/a>:<\/p>\r\n<pre><code class=\"markup\">&lt;section role=&quot;chapter&quot;&gt;\r\n  &lt;h&gt;Chapter Title&lt;\/h&gt;\r\n  &lt;div role=&quot;topic&quot;&gt;\r\n    &lt;p&gt;part 1&lt;\/p&gt;\r\n  &lt;\/div&gt;\r\n  &lt;div role=&quot;topic&quot;&gt;\r\n    &lt;p&gt;part 2&lt;\/p&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/section&gt;<\/code><\/pre>\r\n<\/div>\r\n\r\n<p>Ordinarily, the <code class=\"markup\">div<\/code> element is semantically meaningless; however semantics\r\n\tare added to it with the use of the <code class=\"markup\">role<\/code> attribute in this case. Since the semantics\r\n\tof the <code class=\"markup\">role<\/code> attribute and value would be well defined, unlike the <code class=\"markup\">class<\/code> attribute,\r\n\tUAs may freely default to drawing a horizontal rule, or other presentation,\r\n\tbetween each topic; even in a non-CSS environment. Of course, authors may freely\r\n\tuse CSS to alter this presentation as desired. The important point is that the\r\n\tsemantics of the separation is retained, while providing a much more structured\r\n\tand semantic method.<\/p>\r\n\r\n<h4 id=\"sep-solutions-menu\">Menu Items<\/h4>\r\n<p>Unlike books, the separation in the case of menu items generally doesn\u2019t indicate\r\n\ta change of topic; but rather a method to logically group related items.\r\n\tThis separation is still somewhat semantic &ndash; not entirely presentational\r\n\t&ndash;  and, as such, requires structurally correct, semantic markup. This\r\n\tcan be easily achieved using various kinds of nested lists.<\/p>\r\n<p>In the following example, the nested unordered lists represent the same grouping\r\n\tachieved with a separator element, and the nested navigation list represents\r\n\ta sub menu.<\/p>\r\n\r\n<div id=\"sep-example-7\" class=\"example\">\r\n<p><a href=\"#sep-example-7\">Example 7<\/a>:<\/p>\r\n<pre><code class=\"markup\">&lt;nl&gt;\r\n  &lt;label&gt;Menu&lt;\/label&gt;\r\n  &lt;li&gt;\r\n    &lt;ul&gt;\r\n      &lt;li&gt;Item 1&lt;\/li&gt;\r\n      &lt;li&gt;Item 2&lt;\/li&gt;\r\n    &lt;\/ul&gt;\r\n  &lt;\/li&gt;\r\n  &lt;li&gt;\r\n    &lt;ul&gt;\r\n      &lt;li&gt;Item 3&lt;\/li&gt;\r\n      &lt;li&gt;Item 4&lt;\/li&gt;\r\n    &lt;\/ul&gt;\r\n  &lt;\/li&gt;\r\n  &lt;li&gt;\r\n    &lt;nl&gt;\r\n      &lt;label&gt;Submenu&lt;\/label&gt;\r\n      &lt;li&gt;Submenu Item 1&lt;\/li&gt;\r\n      &lt;li&gt;Submenu Item 2&lt;\/li&gt;\r\n    &lt;\/nl&gt;\r\n  &lt;\/li&gt;\r\n&lt;\/nl&gt;<\/code><\/pre>\r\n<\/div>\r\n\r\n<h3 id=\"sep-conclusion\">Conclusion<\/h3>\r\n<p>It should be clear that the structure of the <code class=\"markup\">separator<\/code> element is not really\r\n\tappropriate for the tree-like structure of an XML document \u2014 it\u2019s an anomaly\r\n\tintroduced in early versions of HTML that is still hanging on by a thread. Regardless\r\n\tof what the element is actually called: <code class=\"markup\">hr<\/code>, <code class=\"markup\">separator<\/code> or even <code class=\"markup\">sep<\/code>, the most\r\n\timportant issue that needs to be addressed is its semantic definition, and thus\r\nwhether the structure is really appropriate within a semantic language.<\/p>\r\n<p>Only after clearly defining the intended semantics of the element can it be\r\n\tdetermined whether or not suitable alternatives already exist, and, if not,\r\n\twhether or not it is possible to apply the same semantics in a more well structured\r\n\tmanner.<\/p>\r\n<p>There are already elements in XHTML intended to markup sections and divisions\r\n\twithin a document, as well as many other structures. In many of these structures,\r\n\tthere may be reasons to logically, structurally and semantically group and\/or\r\n\tseparate sections within. However, because the semantics of the separation for\r\n\tone structure may differ from another, a single general purpose grouping or\r\n\tseparation mechanism may not provide the required structure and semantics in\r\n\tall cases.<\/p>\r\n<p>Where the separation indicates a change in topic, scene or perspective, the\r\n\tuse of existing structural elements with a semantic attribute is a good, feasible\r\n\tsolution. However, where the separation merely indicates groups of related items,\r\n\tsuch as in a list, then adjusting the markup structure may be all that is needed;\r\n\tperhaps combined with some additional semantic attributes as well.<\/p>\r\n","protected":false},"excerpt":{"rendered":"The traditional, structured way to markup and delimit separate sections in SGML and XML is to put each part within its own container element.  However, there is an anomaly in all versions HTML and XHTML with some elements designed as separators, rather than container elements. Specifically, I\u2019m referring to HTML\u2019s hr and br elements, and XHTML 2\u2019s proposed separator element.","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,7],"tags":[],"_links":{"self":[{"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/posts\/76"}],"collection":[{"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":0,"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"wp:attachment":[{"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lachy.id.au\/log\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}