{"id":228,"date":"2008-01-25T23:57:47","date_gmt":"2008-01-26T06:57:47","guid":{"rendered":"https:\/\/dubinko.info\/blog\/2008\/01\/25\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/"},"modified":"2008-01-25T23:57:47","modified_gmt":"2008-01-26T06:57:47","slug":"webpath-python-xpath-2-engine-now-up-on-sourceforge","status":"publish","type":"post","link":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/","title":{"rendered":"WebPath: Python XPath 2 engine now up on Sourceforge"},"content":{"rendered":"<p>I&#8217;ve taken this opportunity to ditch CVS on all my existing Sourceforge projects (<a href=\"http:\/\/sourceforge.net\/projects\/pyxmlwiki\" title=\"Flexible structured text parser\">pyxmlwiki<\/a>, <a href=\"http:\/\/sourceforge.net\/projects\/xfv\" title=\"XForms Validator\">xfv<\/a>) while setting up my <a href=\"http:\/\/sourceforge.net\/projects\/webpath\" title=\"WebPath\">newest project<\/a>. Here&#8217;s the <a href=\"http:\/\/webpath.svn.sourceforge.net\/\">browable subversion source<\/a>. Have at it.<\/p>\n<p>Where should you start with this code? Step zero, if you haven&#8217;t already, is to look through my <a href=\"https:\/\/dubinko.info\/events\/XML2007\/\">XML 2007 slides<\/a> on my site. First thing is to grab a copy of <a href=\"http:\/\/www.dabeaz.com\/ply\/\">PLY<\/a>, which is a dependency. Then with all these files in your current directory, run python with no parameters. At the interpreter prompt type <code>import demo<\/code> then <code>demo.demo1()<\/code>, <code>demo.demo2()<\/code>, and so on. This will give you a feel for how the system works. Look at the source of demo.py to see how it works at the high level.<\/p>\n<p>To actually get into the code, I suggest opening webpath.py and scrolling down to the end, where a large series of unit tests begins. Tracing through these will be (I hope!) instructive on how the various details of the engine are put together.<\/p>\n<p>There are many missing pieces (a few intentionally so). So have a look around the code and start thinking about what you could do with it. One thing I would love to have happen soon is getting rid of minidom, replacing it with something more robust.<\/p>\n<p>If you want developer access on Sourceforge, drop me a note with your sf username. -m<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here&#8217;s the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven&#8217;t already, is to look through my XML 2007 slides on my site. First thing&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[23,4,32],"tags":[],"class_list":["post-228","post","type-post","status-publish","format-standard","hentry","category-announcement","category-xml","category-xpath"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"I&#039;ve taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here&#039;s the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven&#039;t already, is to look through my XML 2007 slides on my site. First thing\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"mdubinko\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"MicahLogic Queryopticon | Yields undecidable when preceded by its quotation\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon\" \/>\n\t\t<meta property=\"og:description\" content=\"I&#039;ve taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here&#039;s the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven&#039;t already, is to look through my XML 2007 slides on my site. First thing\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2008-01-26T06:57:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2008-01-26T06:57:47+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon\" \/>\n\t\t<meta name=\"twitter:description\" content=\"I&#039;ve taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here&#039;s the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven&#039;t already, is to look through my XML 2007 slides on my site. First thing\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#article\",\"name\":\"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon\",\"headline\":\"WebPath: Python XPath 2 engine now up on Sourceforge\",\"author\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/#organization\"},\"datePublished\":\"2008-01-25T23:57:47-07:00\",\"dateModified\":\"2008-01-25T23:57:47-07:00\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#webpage\"},\"articleSection\":\"announcement, xml, xpath\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dubinko.info\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/#listItem\",\"name\":\"standards\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/#listItem\",\"position\":2,\"name\":\"standards\",\"item\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/xml\\\/#listItem\",\"name\":\"xml\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/xml\\\/#listItem\",\"position\":3,\"name\":\"xml\",\"item\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/xml\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#listItem\",\"name\":\"WebPath: Python XPath 2 engine now up on Sourceforge\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/#listItem\",\"name\":\"standards\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#listItem\",\"position\":4,\"name\":\"WebPath: Python XPath 2 engine now up on Sourceforge\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/xml\\\/#listItem\",\"name\":\"xml\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/#organization\",\"name\":\"MicahLogic Queryopticon\",\"description\":\"Yields undecidable when preceded by its quotation\",\"url\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"mdubinko\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c1160c0ab9ce581a55013f96fd61356e166ffc9a00666a5062bc8121922fcdcd?s=96&d=retro&r=g\",\"width\":96,\"height\":96,\"caption\":\"mdubinko\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#webpage\",\"url\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/\",\"name\":\"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon\",\"description\":\"I've taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here's the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven't already, is to look through my XML 2007 slides on my site. First thing\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2008\\\/01\\\/webpath-python-xpath-2-engine-now-up-on-sourceforge\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2008-01-25T23:57:47-07:00\",\"dateModified\":\"2008-01-25T23:57:47-07:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/\",\"name\":\"MicahLogic Queryopticon\",\"description\":\"Yields undecidable when preceded by its quotation\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon","description":"I've taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here's the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven't already, is to look through my XML 2007 slides on my site. First thing","canonical_url":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#article","name":"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon","headline":"WebPath: Python XPath 2 engine now up on Sourceforge","author":{"@id":"https:\/\/dubinko.info\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/dubinko.info\/blog\/#organization"},"datePublished":"2008-01-25T23:57:47-07:00","dateModified":"2008-01-25T23:57:47-07:00","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#webpage"},"isPartOf":{"@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#webpage"},"articleSection":"announcement, xml, xpath"},{"@type":"BreadcrumbList","@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog#listItem","position":1,"name":"Home","item":"https:\/\/dubinko.info\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/tags\/standards\/#listItem","name":"standards"}},{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/tags\/standards\/#listItem","position":2,"name":"standards","item":"https:\/\/dubinko.info\/blog\/tags\/standards\/","nextItem":{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/tags\/standards\/xml\/#listItem","name":"xml"},"previousItem":{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/tags\/standards\/xml\/#listItem","position":3,"name":"xml","item":"https:\/\/dubinko.info\/blog\/tags\/standards\/xml\/","nextItem":{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#listItem","name":"WebPath: Python XPath 2 engine now up on Sourceforge"},"previousItem":{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/tags\/standards\/#listItem","name":"standards"}},{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#listItem","position":4,"name":"WebPath: Python XPath 2 engine now up on Sourceforge","previousItem":{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/tags\/standards\/xml\/#listItem","name":"xml"}}]},{"@type":"Organization","@id":"https:\/\/dubinko.info\/blog\/#organization","name":"MicahLogic Queryopticon","description":"Yields undecidable when preceded by its quotation","url":"https:\/\/dubinko.info\/blog\/"},{"@type":"Person","@id":"https:\/\/dubinko.info\/blog\/author\/admin\/#author","url":"https:\/\/dubinko.info\/blog\/author\/admin\/","name":"mdubinko","image":{"@type":"ImageObject","@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/c1160c0ab9ce581a55013f96fd61356e166ffc9a00666a5062bc8121922fcdcd?s=96&d=retro&r=g","width":96,"height":96,"caption":"mdubinko"}},{"@type":"WebPage","@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#webpage","url":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/","name":"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon","description":"I've taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here's the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven't already, is to look through my XML 2007 slides on my site. First thing","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/dubinko.info\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/#breadcrumblist"},"author":{"@id":"https:\/\/dubinko.info\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/dubinko.info\/blog\/author\/admin\/#author"},"datePublished":"2008-01-25T23:57:47-07:00","dateModified":"2008-01-25T23:57:47-07:00"},{"@type":"WebSite","@id":"https:\/\/dubinko.info\/blog\/#website","url":"https:\/\/dubinko.info\/blog\/","name":"MicahLogic Queryopticon","description":"Yields undecidable when preceded by its quotation","inLanguage":"en-US","publisher":{"@id":"https:\/\/dubinko.info\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"MicahLogic Queryopticon | Yields undecidable when preceded by its quotation","og:type":"article","og:title":"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon","og:description":"I've taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here's the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven't already, is to look through my XML 2007 slides on my site. First thing","og:url":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/","article:published_time":"2008-01-26T06:57:47+00:00","article:modified_time":"2008-01-26T06:57:47+00:00","twitter:card":"summary","twitter:title":"WebPath: Python XPath 2 engine now up on Sourceforge | MicahLogic Queryopticon","twitter:description":"I've taken this opportunity to ditch CVS on all my existing Sourceforge projects (pyxmlwiki, xfv) while setting up my newest project. Here's the browable subversion source. Have at it. Where should you start with this code? Step zero, if you haven't already, is to look through my XML 2007 slides on my site. First thing"},"aioseo_meta_data":{"post_id":"228","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-02-04 08:12:22","updated":"2025-12-10 02:50:09","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/dubinko.info\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/dubinko.info\/blog\/tags\/standards\/\" title=\"standards\">standards<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/dubinko.info\/blog\/tags\/standards\/xml\/\" title=\"xml\">xml<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tWebPath: Python XPath 2 engine now up on Sourceforge\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/dubinko.info\/blog"},{"label":"standards","link":"https:\/\/dubinko.info\/blog\/tags\/standards\/"},{"label":"xml","link":"https:\/\/dubinko.info\/blog\/tags\/standards\/xml\/"},{"label":"WebPath: Python XPath 2 engine now up on Sourceforge","link":"https:\/\/dubinko.info\/blog\/2008\/01\/webpath-python-xpath-2-engine-now-up-on-sourceforge\/"}],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8eo8l-3G","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/posts\/228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/comments?post=228"}],"version-history":[{"count":0,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/posts\/228\/revisions"}],"wp:attachment":[{"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/media?parent=228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/categories?post=228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/tags?post=228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}