{"id":24987709,"url":"https://github.com/soniex2/mdxml","last_synced_at":"2025-10-11T19:42:14.366Z","repository":{"id":150583913,"uuid":"44684318","full_name":"SoniEx2/MDXML","owner":"SoniEx2","description":"Markdown Extensible Markup Language and Markdown-Serialized XML. Sometimes referred to as MemeML or MeML.","archived":false,"fork":false,"pushed_at":"2016-07-28T16:23:23.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-14T18:55:20.661Z","etag":null,"topics":["file-format","markdown","specification","xml"],"latest_commit_sha":null,"homepage":"https://github.com/SoniEx2/MDXML/tree/stable","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SoniEx2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-10-21T15:04:38.000Z","updated_at":"2017-10-14T15:05:13.000Z","dependencies_parsed_at":"2023-06-11T07:45:14.231Z","dependency_job_id":null,"html_url":"https://github.com/SoniEx2/MDXML","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/SoniEx2/MDXML","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoniEx2%2FMDXML","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoniEx2%2FMDXML/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoniEx2%2FMDXML/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoniEx2%2FMDXML/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoniEx2","download_url":"https://codeload.github.com/SoniEx2/MDXML/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoniEx2%2FMDXML/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279008434,"owners_count":26084460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-format","markdown","specification","xml"],"created_at":"2025-02-04T11:48:35.146Z","updated_at":"2025-10-11T19:42:14.351Z","avatar_url":"https://github.com/SoniEx2.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# MDXML\nMarkdown Extensible Markup Language\n\nVersion: 1.1\n\nTags\n----\n\nTags are done with markdown H1 headers. The syntax is a `#` with no free spaces preceding it.\n\n    # TagName\n\nAttributes\n----------\n\nAttributes are done with markdown H2 headers. The syntax is `##` with no free spaces preceding it. Attributes MUST come after tags. Attributes MAY come before any content.\n\n    # TagName\n    ## Attribute\n    ### Value\n\nor\n\n    # TagName\n    \u003e ##Attribute\n    \u003e ###Value\n\nAttribute Values\n----------------\n\nAttribute Values are done with markdown H3 headers and must come immediately after an attribute. The syntax is `###` with no free spaces preceding it. Attribute values MUST come after attributes. Attribute values MAY come before any content.\n\n    # TagName\n    ## Attribute\n    ### Value\n\nor\n\n    # TagName\n    \u003e ##Attribute\n    \u003e ###Value\n\nor\n\n    # TagName\n    ##Attribute\n    \u003e ###Value\n\nNamespaces\n----------\n\nNamespaces are done with markdown H4 and H5 headers. H4 headers specify tag namespace, H5 headers specify attribute namespace. The syntax is `####` with no free spaces preceding it and `#####` with no free spaces preceding it, respectively. Namespaces MUST come after attributes or tags. Namespaces MAY come before any content.\n\n    # Tag\n    #### TagNamespace\n    ## Attribute\n    ### AttributeValue\n    ##### AttributeNamespace\n\nor\n\n    # Tag\n    \u003e #### TagNamespace\n    \u003e ## Attribute\n    \u003e ### AttributeValue\n    \u003e ##### AttributeNamespace\n\nor\n\n    # Tag\n    ## Attribute\n    #### TagNamespace\n    \u003e ### AttributeValue\n    \u003e ##### AttributeNamespace\n\nExtension mechanism\n-------------------\nMarkdown H6 headers may be used as an extension mechanism. There are no restrictions on the behaviour of `######`.\n\nRaw Data/CDATA\n--------------\n\nRaw Data are done with markdown code blocks\n\n        this is raw data!\n\nYou need an empty line at the same depth to trigger a raw data block.\n\n    depth 0\n        this is not raw data\n    \n    depth 0\n    \n        but this is\n\nNote that when using a raw data block with inner data you need to use 5 spaces instead of just 4\n\n    \u003e    not a raw data block\n    \u003e\n    \u003e     is a raw data block\n\nNote that, as with inline data below, to get out of a raw data block you need an empty line.\n\n        this is raw data!\n    \n    this is not raw data! putting it on the above line would keep it as raw data\n\nInner Data\n----------\n\nInner Data are done with markdown quote blocks\n\n    \u003e this is inner data\n\nThe syntax is a `\u003e` with no free spaces preceding it, optionally followed by a single ASCII space or tab character.\n\nGoing a depth in is as simple as adding more \u003e. Going one or more depths out requires at least 1 new depth indicator line.\n\n    depth 0\n    \u003e depth 1\n    \u003e \u003e depth 2\n    \u003e \u003e \u003e depth 3\n    \u003e\n    \u003e depth 1. putting it on the above line would keep it a depth 3\n    \n    depth 0. putting it on the above line would keep it at depth 1\n\nThis also means that:\n\n    # root tag\n    \u003e # inner tag\n    contents\n\nIs valid and \"contents\" is the contents of `inner tag`.\n\nComments\n--------\n\nComments are done with markdown inline code\n\n    `this is a comment`\n\nMultiline comments [Not Markdown Compatible]\n--------------------------------------------\n\nMultiline comments are done with [Github Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/)'s [fenced code blocks](https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks).\n\n    ```\n    this is a multiline comment\n    ```\n\nVersion\n-------\n\nTo add a version attribute, add it at the absolute start of the document\n\n    ## version\n    ### 1.0\n    [ rest of the document here ]\n\nEncoding\n--------\n\nAs with version, encoding also goes at the absolute start of the document\n\n    ## version\n    ### 1.0\n    ## encoding\n    ### utf-8\n    [ rest of the document here]\n\nCase-Sensitivity\n----------------\n\nMDXML is case-sensitive.\n\nSpaces\n------\n\nAs with markdown, leading and trailing spaces are ignored (stripped) except in a few specific situations: (Note: the following examples are for clarification only. Their rules are described in the rest of this document.)\n\n    #something\n\nis the same as\n\n    #     something\n\nbut is NOT the same as\n\n       # something\n\nAnd for mixing raw data and inner data blocks:\n\n    \u003e\u003e\u003e\u003esomething\n\nis the same as\n\n    \u003e \u003e \u003e \u003e something\n\nwhich is the same as\n\n    \u003e\u003e\u003e\u003e    something\n\nbut is NOT the same as\n\n    \u003e\u003e\u003e\u003e     something\n\n(the latter is a code block with \"something\")\n\nA line starting with 4 spaces is a code block. An inner data line starting with 5 spaces (\"\u003e     \") is also a code block.\n\nEscaping\n--------\n\nAs with markdown, escaping can be done with `\\`.\n\n    \\    this counts as 4 spaces in a row\n    \\# this is not a tag\n    \\## this is not an attribute\n    \\`this isn't a comment\\`\n\nUnlike markdown, MDXML allows you to use `\\n` to insert virtual newlines.\n\n    #Tag\\n##Attribute\\n###Value\\nContent\n\nis equivalent to:\n\n    #Tag\n    ##Attribute\n    ###Value\n    Content\n\nAll other escapes are disallowed and should be implicitly unescaped. E.g. `\\x` is converted to `x`.\nNote that escapes don't work inside raw data blocks or comments (single-line or multi-line). Note that strict parsers are allowed to error on invalid escapes.\n\nCompatibility with XML\n----------------------\n\nIt *may* be possible to convert a MDXML document into an XML document if *at least* the following conditions are met:\n\n- The document contains only properly encoded legal Unicode characters\n- The tag names don't contain any of the characters `!\"#$%\u0026'()*+,/;\u003c=\u003e?@[\\]^{|}~ `, nor a backtick, and don't start with `-`, `.`, or a numeric digit.\n- A single \"root\" element contains all the other elements.\n\nAn example of an XML-compatible MDXML document is available [here](/example.md).\n\nReference implementation\n------------------------\n\nAt https://bitbucket.org/SoniEx2/mdxml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoniex2%2Fmdxml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoniex2%2Fmdxml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoniex2%2Fmdxml/lists"}