{"id":22281072,"url":"https://github.com/ietf-tools/xml2rfc","last_synced_at":"2026-02-05T15:32:40.019Z","repository":{"id":37440290,"uuid":"455841517","full_name":"ietf-tools/xml2rfc","owner":"ietf-tools","description":"Generate RFCs and IETF drafts from document source in XML according to the IETF xml2rfc v2 and v3 vocabularies","archived":false,"fork":false,"pushed_at":"2025-12-02T10:00:57.000Z","size":264798,"stargazers_count":99,"open_issues_count":232,"forks_count":64,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-12-08T15:16:48.294Z","etag":null,"topics":["ascii","convert","html","ietf","xml"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ietf-tools.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-05T10:41:58.000Z","updated_at":"2025-12-02T10:01:02.000Z","dependencies_parsed_at":"2023-02-19T12:01:19.461Z","dependency_job_id":"25800cd4-14d5-46a5-b68e-90dbf913f616","html_url":"https://github.com/ietf-tools/xml2rfc","commit_stats":{"total_commits":2531,"total_committers":18,"mean_commits":"140.61111111111111","dds":0.318846305807981,"last_synced_commit":"5f904921201f7080681c03190a7f945e48299ee0"},"previous_names":[],"tags_count":182,"template":false,"template_full_name":null,"purl":"pkg:github/ietf-tools/xml2rfc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ietf-tools%2Fxml2rfc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ietf-tools%2Fxml2rfc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ietf-tools%2Fxml2rfc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ietf-tools%2Fxml2rfc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ietf-tools","download_url":"https://codeload.github.com/ietf-tools/xml2rfc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ietf-tools%2Fxml2rfc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29124802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T14:05:12.718Z","status":"ssl_error","status_checked_at":"2026-02-05T14:03:53.078Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ascii","convert","html","ietf","xml"],"created_at":"2024-12-03T16:13:35.786Z","updated_at":"2026-02-05T15:32:39.998Z","avatar_url":"https://github.com/ietf-tools.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \n\u003cimg src=\"https://raw.githubusercontent.com/ietf-tools/common/main/assets/logos/xml2rfc.svg\" alt=\"XML2RFC\" height=\"125\" /\u003e\n    \n[![Release](https://img.shields.io/github/release/ietf-tools/xml2rfc.svg?style=flat\u0026maxAge=600)](https://github.com/ietf-tools/xml2rfc/releases)\n[![License](https://img.shields.io/github/license/ietf-tools/xml2rfc)](https://github.com/ietf-tools/xml2rfc/blob/main/LICENSE)\n[![PyPI - Version](https://img.shields.io/pypi/v/xml2rfc)](https://pypi.org/project/xml2rfc/)\n[![PyPI - Status](https://img.shields.io/pypi/status/xml2rfc)](https://pypi.org/project/xml2rfc/)\n[![PyPI - Format](https://img.shields.io/pypi/format/xml2rfc)](https://pypi.org/project/xml2rfc/)\n    \n##### Generate RFCs and IETF drafts from document source in XML according to the IETF xml2rfc v2 and v3 vocabularies\n    \n\u003c/div\u003e\n\n- [Changelog](https://github.com/ietf-tools/xml2rfc/blob/main/CHANGELOG.md)\n- [Installation](#installation)\n- [Updating xml2rfc](#updating-xml2rfc)\n- [Usage](#usage)\n- [Contributing](https://github.com/ietf-tools/.github/blob/main/CONTRIBUTING.md)\n- [Getting Started](#getting-started)\n    - [Git Cloning Tips](#git-cloning-tips)\n    - [Docker Dev Environment](#docker-dev-environment)\n- [Release Procedure](https://github.com/ietf-tools/.github/blob/main/CONTRIBUTING.md#release-procedure)\n\n---\n\n### Introduction\n\nThe [IETF] uses a specific format for the standards and other documents it publishes as [RFCs], and for the draft documents which are produced when developing documents for publications. There exists a number of different tools to facilitate the formatting of drafts and RFCs according to the existing rules, and this tool, **xml2rfc**, is one of them. It takes as input an xml file that contains the text and meta-information about author names etc., and transforms it into suitably formatted output. The input xml file should follow the grammars in [RFC7749] *(for v2 documents)* or [RFC7991] *(for v3 documents)*.\n\n[RFCXML vocabulary reference] is available at [authors.ietf.org].\n\n**xml2rfc** provides a variety of output formats. See the command line help for a full list of formats. It also provides conversion from v2 to v3, and can run the [preptool] on its input.\n\n### Installation\n\n`xml2rfc` is available as Python package. You can install it with following command:\n```sh\npip install xml2rfc\n```\n\nIf you're using [pipx](https://pipx.pypa.io/stable/), you can install `xml2rfc` with the following command:\n```sh\npipx install xml2rfc\n```\n\n`xml2rfc` also provides `pdf` extra package to install required packages required for PDF file generation.\nSee [next section](#installation-of-support-libraries-for-the-pdf-formatter) about additional requirements for PDF generation.\n\nTo install `xml2rfc` with PDF generation support run:\n```sh\npip install \"xml2rfc[pdf]\"\n```\n\nTo install `pdf` extra with `pipx` run:\n```sh\npipx install \"xml2rfc[pdf]\"\n```\n\n#### Installation of support libraries for the PDF-formatter\n\nIn order to generate PDFs, **xml2rfc** uses the [WeasyPrint] module, which depends on external libraries that must be installed as native packages on your platform, separately from the **xml2rfc** install.\n\n1. First, install the **Pango**, and other required libraries on your system.  See installation instructions on the [WeasyPrint Docs].\n\n2. Next, install WeasyPrint python modules using pip.\n\n```sh\npip install \"xml2rfc[pdf]\"\n```\n3. Finally, install the required fonts:\n  * Download latest fonts from [xml2rfc-fonts](https://github.com/ietf-tools/xml2rfc-fonts/releases/latest).\n  * In the **Assets** section, download either the `tar.gz` or the `zip` archive.\n  * Extract the contents of the downloaded `xml2rfc-fonts` archive.\n  * Install the fonts found in the `noto` and `roboto_mono` directories to your operating system.\n\nWith these installed and available to **xml2rfc**, the `--pdf` switch will be enabled.\n\n### Updating xml2rfc\n\nTo update `xml2rfc`, run the following command:\n```sh\npip install --upgrade xml2rfc\n```\n\nIf you are using `pipx`, you can update it with:\n```sh\npipx upgrade xml2rfc\n```\n\n### Usage\n\n**xml2rfc** accepts a single XML document as input and outputs to one or more conversion formats.\n\n#### Basic Usage\n\n```sh\nxml2rfc SOURCE [options] FORMATS...\n```\n\nRun `xml2rfc --help` for a full listing of command-line options.\n\n### Getting Started\n\nThis project is following the standard **Git Feature Workflow** development model. Learn about all the various steps of the development workflow, from creating a fork to submitting a pull request, in the [Contributing](https://github.com/ietf-tools/.github/blob/main/CONTRIBUTING.md) guide.\n\n\u003e Make sure to read the [Styleguides](https://github.com/ietf-tools/.github/blob/main/CONTRIBUTING.md#styleguides) section to ensure a cohesive code format across the project.\n\nYou can submit bug reports, enhancements and new feature requests in the [discussions](https://github.com/ietf-tools/xml2rfc/discussions) area. Accepted tickets will be converted to issues.\n\n#### Git Cloning Tips\n\nAs outlined in the [Contributing](https://github.com/ietf-tools/.github/blob/main/CONTRIBUTING.md) guide, you will first want to create a fork of the xml2rfc project in your personal GitHub account before cloning it.\n\nFor example *(replace `USERNAME` with your GitHub username)*:\n\n```sh\ngit clone https://github.com/USERNAME/xml2rfc.git\n```\n#### Docker Dev Environment\n\nRun `./run.sh` command to build and start a docker development environment.\nThe initial build may take time because it downloads all required fonts as well.\n\n\n```sh\n./run.sh\n```\n\n[IETF]: https://www.ietf.org/\n[RFCs]: https://www.rfc-editor.org/\n[RFC7749]: https://www.rfc-editor.org/info/rfc7749\n[RFC7991]: https://www.rfc-editor.org/info/rfc7991\n[RFCXML vocabulary reference]: https://authors.ietf.org/en/rfcxml-vocabulary\n[authors.ietf.org]: https://authors.ietf.org/\n[preptool]: https://www.rfc-editor.org/info/rfc7998\n[WeasyPrint]: https://weasyprint.org/\n[WeasyPrint Docs]: https://doc.courtbouillon.org/weasyprint/stable/first_steps.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fietf-tools%2Fxml2rfc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fietf-tools%2Fxml2rfc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fietf-tools%2Fxml2rfc/lists"}