Вопрос или проблема
Предыстория
Я пишу много кода на C# и использую XML-комментарии повсюду, чтобы описывать, как ведут себя мои методы, члены и свойства.
В конечном итоге я хотел бы собрать всю информацию, собранную из этих комментариев (вместе с методами, членами и именами свойств), и сгенерировать красивый/читабельный документ, описывающий мое API.
Я знаю, что существует несколько программ, которые делают подобные вещи, например, SandCastle help-builder. Однако я хотел бы избежать использования SandCastle и помощи Windows в целом.
На самом деле, я хотел бы сгенерировать мой документ в формате PDF, если это возможно.
Вопрос
Существует ли бесплатное/с открытым исходным кодом программное обеспечение для превращения всех моих XML-комментариев в красивый PDF-документ?
У нас есть собственные инструменты, которые это делают, и это довольно сложно, но это показывает, что это возможно. Мы больше работаем с Java, чем с C#, и конечно, мы используем XSLT, так что это, вероятно, окрашивает наш подход. Мы берем выходной файл apidoc.xml компилятора C# в качестве одного входного файла, другой XML-файл, созданный с помощью грубой разбивки исходного кода C#, как второй входной файл, затем объединяем их вместе (с использованием XSLT) в XML-файл в формате, совместимом с документацией наших Java APIs, произведенной с использованием javadoc и jeldoclet, комбинируем это с Java APIs, а затем превращаем результат в особый вид HTML5, который совместим с остальной нашей документацией, опять же используя XSLT. В наши дни мы не производим PDF, но делали это в прошлом, используя XSL-FO.
Это, конечно, внутренние инструменты, и они недостаточно формализованы для использования кем-либо другим, но я подумал, что просто опишу это, чтобы у вас было (a) доказательство того, что это можно сделать, и (b) мера сложности.
Мы вообще-то были удивлены, насколько плохи инструменты для этого в мире .NET по сравнению с аналогичными в Java. Возможно, с тех пор, как мы это сделали, что-то изменилось, я не смотрел недавно.
Ответ или решение
Генерация PDF из XML-комментариев в C
Введение
Ваша задача заключается в создании документации для API на основе XML-комментариев в коде C#. Это распространенная практика, так как XML-комментарии предоставляют структурированное описание методов, свойств и членов классов. В отличие от более привычных инструментов, таких как SandCastle, вы ищете открытое решение, которое позволит вам сгенерировать PDF-документ.
Подход к решению
Для достижения вашей цели, вам необходимо выполнить несколько шагов:
-
Сбор XML-комментариев: Сначала вы должны сгенерировать XML-документацию из вашего C# кода. Это можно сделать, используя опцию
/doc
компилятора C#. После компиляции проект будет содержать файл.xml
, содержащий ваши XML-комментарии. -
Применение XSLT для преобразования: Используя XSLT (Extensible Stylesheet Language Transformations), вы можете преобразовать XML-документы в требуемый формат. Создайте XSLT-шаблон, который извлечет нужную информацию из XML-файла и представит её в виде структуры, удобной для дальнейшей работы.
-
Преобразование в PDF с использованием XSL-FO: Чтобы сгенерировать PDF-файл, вы можете воспользоваться XSL-FO (XSL Formatting Objects). Сначала нужно преобразовать ваш XML-документ в XSL-FO с помощью того же XSLT-шаблона, затем используйте движок для генерации PDF, например Apache FOP (Formatting Objects Processor). Это open-source решение, которое достаточно мощно и адаптивно.
Примерный процесс
-
Создание XML-документации:
Скомпилируйте проект с параметром/doc
, чтобы получить файл XML с вашими комментариями.csc /doc:YourApiDocumentation.xml YourSourceFile.cs
-
Создание XSLT-шаблона:
Разработайте XSLT-файл, который будет трансформировать ваш XML в XSL-FO. Пример простой структуры:<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="/"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="simple" page-height="29.7cm" page-width="21cm" margin="2cm"> <fo:region-body region-name="body" margin="2cm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="simple"> <fo:flow flow-name="xsl-region-body"> <fo:block><xsl:value-of select="/api/docs"/></fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> </xsl:stylesheet>
-
Генерация XSL-FO и PDF:
Убедитесь, что у вас установлен Apache FOP и выполните команду на генерацию PDF из XSL-FO файла:fop -xml YourApiDocumentation.xml -xsl YourXSLTFile.xsl -pdf YourApiDocumentation.pdf
Заключение
Создание PDF-документации на основе XML-комментариев в C# – это выполнимая задача, которая требует усилий по настройки рабочего процесса, но возможна благодаря открытым инструментам. В результате, используя комбинацию C#, XSLT и Apache FOP, вы сможете создать профессионально оформленный PDF-документ, который будет содержать всю необходимую информацию о вашем API.
Проанализируйте, какие особенности вашего API можно подчеркнуть в документации, подобранной с учетом целевой аудитории. Это не только улучшит понимание вашего кода, но и повысит его привлекательность для разработчиков, использующих ваше API.