{"id":889,"date":"2011-12-01T04:19:52","date_gmt":"2011-12-01T04:19:52","guid":{"rendered":"http:\/\/www.ericwhite.com\/home2\/bm8qcmjy\/public_html\/blog\/?page_id=889"},"modified":"2014-03-04T06:01:22","modified_gmt":"2014-03-04T06:01:22","slug":"xml-expanded","status":"publish","type":"page","link":"https:\/\/www.ericwhite.com\/blog\/xml-expanded\/","title":{"rendered":"XML"},"content":{"rendered":"<h2 style='font-size: small;'><a href='https:\/\/www.ericwhite.com\/blog\/toc-expanded'>Back to TOC<\/a><span style='position: relative; left: 1em;'><a href='https:\/\/www.ericwhite.com\/blog\/xml-condensed'>Condensed TOC<\/a><\/span><\/h2>\n<p>Extensible Markup Language<\/p>\n<ul>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/10\/24\/comparing-linq-to-xml-and-xpath.aspx\" target=\"_blank\">Comparing LINQ to XML and XPath<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Provides an overview of the similarities and differences between XPath and LINQ to XML<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/functional-programming-expanded'>Functional Programming<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/12\/15\/a-more-robust-approach-for-handling-xname-objects-in-linq-to-xml.aspx\" target=\"_blank\">A More Robust Approach for Handling XName Objects in LINQ to XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Pre-atomizing XName objects enables you to write more reliable code that performs well.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/01\/01\/writing-succinct-code-to-move-xelement-and-xattribute-objects-from-one-linq-to-xml-tree-from-another.aspx\" target=\"_blank\">Writing Succinct Code to move XElement and XAttribute Objects from One LINQ to XML Tree to Another<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>This post presents an interesting idiom of LINQ to XML that makes it easy to write short, succinct code when creating one XML tree from another.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/01\/28\/equality-semantics-of-linq-to-xml-trees.aspx\" target=\"_blank\">Equality Semantics of LINQ to XML Trees<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>In certain scenarios, it is important to be able to compare two XML trees for equivalence.  For example, if you are writing a web service that serves results of queries, and you want to cache query results so that duplicate queries use previously cached results instead of always accessing the underlying database.  However, the senders of those queries may potentially be using a variety of tools to generate the queries, and these tools may introduce trivial differences into the XML.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/functional-programming-expanded'>Functional Programming<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/01\/28\/manually-cloning-linq-to-xml-trees.aspx\" target=\"_blank\">Manually Cloning LINQ to XML Trees<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>There are a variety of circumstances where you want to clone a LINQ to XML tree while making modifications to the cloned tree.  It&#8217;s possible to write a very small amount of recursive code to do this.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/functional-programming-expanded'>Functional Programming<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/06\/24\/querying-linq-to-xml-nodes-in-reverse-document-order-with-better-performance.aspx\" target=\"_blank\">Querying LINQ to XML Nodes in Reverse Document Order with Better Performance<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Occasionally I need to query LINQ to XML nodes in reverse document order.  However, nodes in LINQ to XML are forward-linked only, so getting the previous sibling element can perform slowly.  This post presents an approach for significant performance gains.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/07\/09\/document-centric-transforms-using-linq-to-xml.aspx\" target=\"_blank\">Document-Centric Transforms using LINQ to XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>When thought of in a certain way, XML documents come in two flavors &#8211; data-centric and document-centric.  Further, there are two types of document-centric documents.  This post presents my thoughts about approaches to various types of document-centric transformations &#8211; data-centric to document-centric, document-centric to data-centric, and document-centric to document-centric.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/07\/20\/a-tutorial-in-the-recursive-approach-to-pure-functional-transformations-of-xml.aspx\" target=\"_blank\">Recursive Approach to Pure Functional Transformations of XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Writing pure functional transformations a in a recursive style enables us to put together interesting transformations in a very small amount of code.  Using some specific techniques that allow us to write this code very concisely, this approach takes advantage of some perhaps obscure semantics of LINQ to XML.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/functional-programming-expanded'>Functional Programming<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/12\/13\/implementing-inheritance-in-xml.aspx\" target=\"_blank\">Implementing &#8216;Inheritance&#8217; in XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Some XML vocabularies implement a powerful XML pattern that is analogous to inheritance in programming language type systems.  Open XML WordprocessingML has these semantics around styles.  When you define a new style, you can base this style on another style, and if the new style doesn&#8217;t explicitly define some aspect of the style, the new style &#8216;inherits&#8217; this aspect from its base style.  This post presents some code that uses one approach for implementing inheritance semantics.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded'>WordprocessingML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded'>PowerTools for Open XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/functional-programming-expanded'>Functional Programming<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2008\/12\/30\/align-attributes-when-formatting-xml-using-linq-to-xml.aspx\" target=\"_blank\">Align Attributes when Formatting XML using LINQ to XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Sometimes an XML element contains a large number of attributes, and the values of the attributes may be long.  When written to the console, such lines wrap, making it hard to read the XML.  This post shows how you can use appropriate settings for an XmlWriter so that the attributes are aligned, and each attribute is on a separate line.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/01\/21\/writing-entity-references-using-linq-to-xml.aspx\" target=\"_blank\">Writing Entity References using LINQ to XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>As delivered, it is difficult to write entities using LINQ to XML.  This post presents a small hack that enables you to serialize XML entities.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/openxml-expanded'>OpenXML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/open-xml-sdk-expanded'>Open XML SDK<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/wordprocessingml-expanded'>WordprocessingML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/powertools-for-open-xml-expanded'>PowerTools for Open XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/03\/05\/convert-xdocument-to-xmldocument-and-convert-xmldocument-to-xdocument.aspx\" target=\"_blank\">Convert XDocument to XmlDocument (and Convert XmlDocument to XDocument)<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Some time ago, I blogged about an approach for converting an XElement object to an XmlNode object, and vice versa.  This is useful when you want to use a programming interface that takes and returns objects of type XmlNode, but you want to use the expressiveness and power of LINQ to XML for your code that modifies the XML tree.  There are a few occasions where this isn&#8217;t good enough &#8211; you need to convert from an XDocument to XmlDocument and back.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/03\/08\/serializing-encoded-xml-documents-using-linq-to-xml.aspx\" target=\"_blank\">Serializing Encoded XML Documents using LINQ to XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Writing encoded (utf-8, utf-16, etc.) documents using LINQ to XML is pretty straight-forward, but there is one interesting dynamic of the semantics.  When serializing to a file on disk, then you can set the encoding in the XML declaration, and the resulting XML document will be serialized as you wish.  However, if you are writing to a stream that supports only one specific encoding, then the XML document will automatically be encoded to match the stream, overriding your specified desired encoding, and the XML declaration will be adjusted accordingly.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2010\/04\/16\/controlling-namespace-serialization-of-linq-to-xml.aspx\" target=\"_blank\">Controlling Namespace Serialization of LINQ to XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>You can explicitly control how LINQ to XML serializes the namespaces for an XML tree.  You can control whether a namespace is serialized as the default namespace for a tree, or whether the namespace will use a prefix.  <span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/08\/12\/xml-element-and-attribute-name-guidelines.aspx\" target=\"_blank\">XML Element and Attribute Name Guidelines<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Some time ago, a dev team here at Microsoft asked me to review their XML vocabulary that they had designed.  They wanted to know if the element and attribute names in their vocabulary design were good ones.  This is the advice that I gave them.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class=\"ericListItem broken_link\" href=\"http:\/\/blogs.msdn.com\/b\/ericwhite\/archive\/2009\/05\/14\/working-with-optional-elements-and-attributes-in-linq-to-xml-queries.aspx\" target=\"_blank\">Working with Optional Elements and Attributes in LINQ to XML Queries<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Often XML schemas allow for optional elements and attributes.  When you write queries on these elements or attributes, you may be tempted to write code that does lots of testing for null.  There is a better way to do this, laid out in this post.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<li class='ericListItem'><a class='ericListItem' href='https:\/\/www.ericwhite.com\/blog\/2011\/05\/09\/custom-formatting-of-xml-using-linq-to-xml-2\/' target='_blank'>Custom Formatting of XML using LINQ to XML<\/a><\/li>\n<p><\/p>\n<div style='margin-left: 2em; margin-bottom: 1em;'>Demonstrates the ability to customize the serialization of XML trees when using LINQ to XML.<span style='color:#2b91af;'>  (Article)<\/span><\/p>\n<div style='vertical-align: text-top; margin-top: .5em;'><span style='color:#2b91af;'>Keywords:&nbsp;&nbsp;<\/span><a href='https:\/\/www.ericwhite.com\/blog\/linq-to-xml-expanded'>LINQ to XML<\/a>&nbsp;&nbsp;<a href='https:\/\/www.ericwhite.com\/blog\/xml-expanded'>XML<\/a>&nbsp;&nbsp;<\/div>\n<\/div>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Back to TOCCondensed TOC Extensible Markup Language Comparing LINQ to XML and XPath Provides an overview of the similarities and differences between XPath and LINQ to XML (Article) Keywords:&nbsp;&nbsp;Functional Programming&nbsp;&nbsp;LINQ to XML&nbsp;&nbsp;XML&nbsp;&nbsp; A More Robust Approach for Handling XName Objects in LINQ to XML Pre-atomizing XName objects enables you to write more reliable code that [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_s2mail":"","footnotes":""},"class_list":["post-889","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/889","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/comments?post=889"}],"version-history":[{"count":6,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/889\/revisions"}],"predecessor-version":[{"id":1743,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/889\/revisions\/1743"}],"wp:attachment":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/media?parent=889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}