{"id":184,"date":"2007-10-01T20:29:56","date_gmt":"2007-10-02T03:29:56","guid":{"rendered":"https:\/\/dubinko.info\/blog\/2007\/10\/01\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/"},"modified":"2007-10-01T20:29:56","modified_gmt":"2007-10-02T03:29:56","slug":"simple-parsing-of-space-seprated-attributes-in-xpathxslt","status":"publish","type":"post","link":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/","title":{"rendered":"simple parsing of space-seprated attributes in XPath\/XSLT"},"content":{"rendered":"<p>It&#8217;s a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=&#8221;vcard&#8221;}. This is wrong, since the value can still match and still have other literal values, like &#8220;foo vcard&#8221; or &#8220;vcard foo&#8221; or &#8221; foo vcard bar &#8220;.<\/p>\n<p>The proper way is to look at individual tokens in the attribute value. On first glance, this might require a call to EXSLT or some complex tokenization routine, but there&#8217;s a simpler way. I first discovered this on the <a title=\"Parsing Microformats\" href=\"http:\/\/microformats.org\/wiki\/parsing-microformats\">microformats wiki<\/a>, and only cleaned up the technique a tiny bit.<\/p>\n<p>The solution involves three XPath 1.0 functions, contains(), concat() to join together string fragments, and normalize-space() to strip off leading and trailing spaces and convert any other sequences of whitespace into a single space.<\/p>\n<p>In english, you<\/p>\n<ul>\n<li>normalize the class attribute value, then<\/li>\n<li>concatenate spaces front and back, then<\/li>\n<li>test whether the resulting string contains your searched-for value with spaces concatenated front and back (e.g. &#8221; vcard &#8220;<\/li>\n<\/ul>\n<p>Or {contains(concat(&#8216; &#8216;,normalize-space(@class),&#8217; &#8216;),&#8217; vcard &#8216;)} A moment&#8217;s thought shows that this works well on all the different examples shown above, and is perhaps even less involved than resorting to extension functions that return nodes that require further processing\/looping. It would be interesting to compare performance as well&#8230;<\/p>\n<p>So next time you need to match class or rel values, give it a shot. Let me know how it works for you, or if you have any further improvements. -m<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=&#8221;vcard&#8221;}. This is wrong, since the value can still match and still have other literal values, like &#8220;foo vcard&#8221; or &#8220;vcard foo&#8221; or &#8221; foo vcard bar &#8220;&#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":[7,27,22,19,13,4,32],"tags":[],"class_list":["post-184","post","type-post","status-publish","format-standard","hentry","category-browsers","category-languages","category-software","category-web20","category-xforms","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=\"It&#039;s a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=&quot;vcard&quot;}. This is wrong, since the value can still match and still have other literal values, like &quot;foo vcard&quot; or &quot;vcard foo&quot; or &quot; foo vcard bar &quot;.\" \/>\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\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/\" \/>\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=\"simple parsing of space-seprated attributes in XPath\/XSLT | MicahLogic Queryopticon\" \/>\n\t\t<meta property=\"og:description\" content=\"It&#039;s a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=&quot;vcard&quot;}. This is wrong, since the value can still match and still have other literal values, like &quot;foo vcard&quot; or &quot;vcard foo&quot; or &quot; foo vcard bar &quot;.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2007-10-02T03:29:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2007-10-02T03:29:56+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"simple parsing of space-seprated attributes in XPath\/XSLT | MicahLogic Queryopticon\" \/>\n\t\t<meta name=\"twitter:description\" content=\"It&#039;s a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=&quot;vcard&quot;}. This is wrong, since the value can still match and still have other literal values, like &quot;foo vcard&quot; or &quot;vcard foo&quot; or &quot; foo vcard bar &quot;.\" \/>\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\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#article\",\"name\":\"simple parsing of space-seprated attributes in XPath\\\/XSLT | MicahLogic Queryopticon\",\"headline\":\"simple parsing of space-seprated attributes in XPath\\\/XSLT\",\"author\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/#organization\"},\"datePublished\":\"2007-10-01T20:29:56-07:00\",\"dateModified\":\"2007-10-01T20:29:56-07:00\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#webpage\"},\"articleSection\":\"browsers, languages, software, web20, XForms, xml, xpath\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#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\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#listItem\",\"name\":\"simple parsing of space-seprated attributes in XPath\\\/XSLT\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/tags\\\/standards\\\/#listItem\",\"name\":\"standards\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#listItem\",\"position\":4,\"name\":\"simple parsing of space-seprated attributes in XPath\\\/XSLT\",\"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\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#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\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#webpage\",\"url\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/\",\"name\":\"simple parsing of space-seprated attributes in XPath\\\/XSLT | MicahLogic Queryopticon\",\"description\":\"It's a common need to parse space-separated attribute values from XPath\\\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=\\\"vcard\\\"}. This is wrong, since the value can still match and still have other literal values, like \\\"foo vcard\\\" or \\\"vcard foo\\\" or \\\" foo vcard bar \\\".\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/2007\\\/10\\\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/dubinko.info\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2007-10-01T20:29:56-07:00\",\"dateModified\":\"2007-10-01T20:29:56-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":"simple parsing of space-seprated attributes in XPath\/XSLT | MicahLogic Queryopticon","description":"It's a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=\"vcard\"}. This is wrong, since the value can still match and still have other literal values, like \"foo vcard\" or \"vcard foo\" or \" foo vcard bar \".","canonical_url":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#article","name":"simple parsing of space-seprated attributes in XPath\/XSLT | MicahLogic Queryopticon","headline":"simple parsing of space-seprated attributes in XPath\/XSLT","author":{"@id":"https:\/\/dubinko.info\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/dubinko.info\/blog\/#organization"},"datePublished":"2007-10-01T20:29:56-07:00","dateModified":"2007-10-01T20:29:56-07:00","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#webpage"},"isPartOf":{"@id":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#webpage"},"articleSection":"browsers, languages, software, web20, XForms, xml, xpath"},{"@type":"BreadcrumbList","@id":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#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\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#listItem","name":"simple parsing of space-seprated attributes in XPath\/XSLT"},"previousItem":{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/tags\/standards\/#listItem","name":"standards"}},{"@type":"ListItem","@id":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#listItem","position":4,"name":"simple parsing of space-seprated attributes in XPath\/XSLT","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\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#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\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#webpage","url":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/","name":"simple parsing of space-seprated attributes in XPath\/XSLT | MicahLogic Queryopticon","description":"It's a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=\"vcard\"}. This is wrong, since the value can still match and still have other literal values, like \"foo vcard\" or \"vcard foo\" or \" foo vcard bar \".","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/dubinko.info\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/#breadcrumblist"},"author":{"@id":"https:\/\/dubinko.info\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/dubinko.info\/blog\/author\/admin\/#author"},"datePublished":"2007-10-01T20:29:56-07:00","dateModified":"2007-10-01T20:29:56-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":"simple parsing of space-seprated attributes in XPath\/XSLT | MicahLogic Queryopticon","og:description":"It's a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=&quot;vcard&quot;}. This is wrong, since the value can still match and still have other literal values, like &quot;foo vcard&quot; or &quot;vcard foo&quot; or &quot; foo vcard bar &quot;.","og:url":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/","article:published_time":"2007-10-02T03:29:56+00:00","article:modified_time":"2007-10-02T03:29:56+00:00","twitter:card":"summary","twitter:title":"simple parsing of space-seprated attributes in XPath\/XSLT | MicahLogic Queryopticon","twitter:description":"It's a common need to parse space-separated attribute values from XPath\/XSLT 1.0, usually @class or @rel. One common (but incorrect) technique is simple equality test, as in {@class=&quot;vcard&quot;}. This is wrong, since the value can still match and still have other literal values, like &quot;foo vcard&quot; or &quot;vcard foo&quot; or &quot; foo vcard bar &quot;."},"aioseo_meta_data":{"post_id":"184","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:13:20","updated":"2025-12-10 02:37:13","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\tsimple parsing of space-seprated attributes in XPath\/XSLT\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":"simple parsing of space-seprated attributes in XPath\/XSLT","link":"https:\/\/dubinko.info\/blog\/2007\/10\/simple-parsing-of-space-seprated-attributes-in-xpathxslt\/"}],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8eo8l-2Y","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/posts\/184","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=184"}],"version-history":[{"count":0,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/posts\/184\/revisions"}],"wp:attachment":[{"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/media?parent=184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/categories?post=184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dubinko.info\/blog\/wp-json\/wp\/v2\/tags?post=184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}