Last active
September 2, 2024 03:06
-
-
Save jkowalleck/a0f874ee0a8af9a56a0e887631fc53d1 to your computer and use it in GitHub Desktop.
CycloneDX dependency grapth to mermaid diagramm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<stylesheet version="2.0" | |
xmlns="http://www.w3.org/1999/XSL/Transform" | |
xmlns:xs="http://www.w3.org/2001/XMLSchema" | |
xmlns:fn="http://www.w3.org/2005/xpath-functions" | |
xmlns:my="http://gist.github.com/jkowalleck/a0f874ee0a8af9a56a0e887631fc53d1" | |
> | |
<!-- | |
@author: Jan Kowalleck | |
@license: (MIT OR Apache-2.0) | |
@description: generate mermaid charts from the dependency graph in CycloneDX XML documents. | |
--> | |
<output method="text" indent="no" media-type="text/vnd.mermaid"/> | |
<param name="graphDirection" select="'TD'"> | |
<!-- see https://mermaid.js.org/syntax/flowchart.html#direction --> | |
</param> | |
<variable name="bomNS" select="fn:namespace-uri(/*:bom[fn:starts-with(fn:namespace-uri(), 'http://cyclonedx.org/schema/bom/1.')])"/> | |
<function name="my:isNS" as="xs:boolean"> | |
<param name="c"/> | |
<sequence select="fn:namespace-uri($c) = $bomNS"/> | |
</function> | |
<template match="/"> | |
<for-each select="*:bom[my:isNS(.)]"> | |
<text>graph </text> | |
<value-of select="$graphDirection"/> | |
<text>; </text> | |
<for-each select="*:dependencies[my:isNS(.)]/*:dependency[my:isNS(.)]"> | |
<call-template name="renderDependency"/> | |
</for-each> | |
</for-each> | |
</template> | |
<template name="renderDependency"> | |
<for-each select="*:dependency[my:isNS(.)]"> | |
<value-of select="my:mmRelation(../@ref, @ref, 'depends')"/> | |
<call-template name="renderDependency"> | |
<!-- the xml allows nested dependencies -> recursion is needed --> | |
</call-template> | |
</for-each> | |
<for-each select="*:provides[my:isNS(.)]"> | |
<value-of select="my:mmRelation(../@ref, @ref, 'provides')"/> | |
</for-each> | |
</template> | |
<function name="my:mmEscapeNode" as="xs:string"> | |
<!-- escape chars that mermaid does not allow for node names --> | |
<param name="i" as="xs:string"/> | |
<sequence select="fn:translate($i, '@:=[]{}() "><', '_____________')"/> | |
</function> | |
<function name="my:mmRelation" as="xs:string"> | |
<param name="a" as="xs:string"/> | |
<param name="b" as="xs:string"/> | |
<param name="r" as="xs:string"/> | |
<xs:sequence> | |
<text> </text> | |
<value-of select="my:mmEscapeNode($a)"/> | |
<text>["</text> | |
<value-of select="$a"/> | |
<text>"] -- </text> | |
<value-of select="$r"/> | |
<text> --> </text> | |
<value-of select="my:mmEscapeNode($b)"/> | |
<text>["</text> | |
<value-of select="$b"/> | |
<text>"] </text> | |
</xs:sequence> | |
</function> | |
</stylesheet> |
call like here: https://gist.github.com/jkowalleck/a0f874ee0a8af9a56a0e887631fc53d1?permalink_comment_id=5097436#gistcomment-5097436
example results based on https://github.com/CycloneDX/cyclonedx-php-composer/blob/704cf28ade153274d94892ebeb3cb18e8422b5d0/demo/laravel-7.12.0/results/bom.1.6.xml
graph LR;
asm89/stack-cors-1.3.0.0["asm89/stack-cors-1.3.0.0"] -- depends --> symfony/http-foundation-5.4.16.0["symfony/http-foundation-5.4.16.0"]
asm89/stack-cors-1.3.0.0["asm89/stack-cors-1.3.0.0"] -- depends --> symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"]
egulias/email-validator-2.1.25.0["egulias/email-validator-2.1.25.0"] -- depends --> doctrine/lexer-1.2.3.0["doctrine/lexer-1.2.3.0"]
egulias/email-validator-2.1.25.0["egulias/email-validator-2.1.25.0"] -- depends --> symfony/polyfill-intl-idn-1.27.0.0["symfony/polyfill-intl-idn-1.27.0.0"]
fruitcake/laravel-cors-1.0.6.0["fruitcake/laravel-cors-1.0.6.0"] -- depends --> asm89/stack-cors-1.3.0.0["asm89/stack-cors-1.3.0.0"]
fruitcake/laravel-cors-1.0.6.0["fruitcake/laravel-cors-1.0.6.0"] -- depends --> symfony/http-foundation-5.4.16.0["symfony/http-foundation-5.4.16.0"]
fruitcake/laravel-cors-1.0.6.0["fruitcake/laravel-cors-1.0.6.0"] -- depends --> symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"]
guzzlehttp/guzzle-6.5.8.0["guzzlehttp/guzzle-6.5.8.0"] -- depends --> guzzlehttp/promises-1.5.2.0["guzzlehttp/promises-1.5.2.0"]
guzzlehttp/guzzle-6.5.8.0["guzzlehttp/guzzle-6.5.8.0"] -- depends --> guzzlehttp/psr7-1.9.0.0["guzzlehttp/psr7-1.9.0.0"]
guzzlehttp/guzzle-6.5.8.0["guzzlehttp/guzzle-6.5.8.0"] -- depends --> symfony/polyfill-intl-idn-1.27.0.0["symfony/polyfill-intl-idn-1.27.0.0"]
guzzlehttp/psr7-1.9.0.0["guzzlehttp/psr7-1.9.0.0"] -- depends --> psr/http-message-1.0.1.0["psr/http-message-1.0.1.0"]
guzzlehttp/psr7-1.9.0.0["guzzlehttp/psr7-1.9.0.0"] -- depends --> ralouphie/getallheaders-3.0.3.0["ralouphie/getallheaders-3.0.3.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> doctrine/inflector-2.0.6.0["doctrine/inflector-2.0.6.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> dragonmantank/cron-expression-2.3.1.0["dragonmantank/cron-expression-2.3.1.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> egulias/email-validator-2.1.25.0["egulias/email-validator-2.1.25.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> league/commonmark-1.6.7.0["league/commonmark-1.6.7.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> league/flysystem-1.1.10.0["league/flysystem-1.1.10.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> monolog/monolog-2.8.0.0["monolog/monolog-2.8.0.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> nesbot/carbon-2.63.0.0["nesbot/carbon-2.63.0.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> opis/closure-3.6.3.0["opis/closure-3.6.3.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> psr/container-1.1.1.0["psr/container-1.1.1.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> psr/simple-cache-1.0.1.0["psr/simple-cache-1.0.1.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> ramsey/uuid-4.2.3.0["ramsey/uuid-4.2.3.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> swiftmailer/swiftmailer-6.3.0.0["swiftmailer/swiftmailer-6.3.0.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/console-5.4.16.0["symfony/console-5.4.16.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/error-handler-5.4.15.0["symfony/error-handler-5.4.15.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/finder-5.4.11.0["symfony/finder-5.4.11.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/http-foundation-5.4.16.0["symfony/http-foundation-5.4.16.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/mime-5.4.16.0["symfony/mime-5.4.16.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/polyfill-php73-1.27.0.0["symfony/polyfill-php73-1.27.0.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/process-5.4.11.0["symfony/process-5.4.11.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/routing-5.4.15.0["symfony/routing-5.4.15.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> symfony/var-dumper-5.4.14.0["symfony/var-dumper-5.4.14.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> tijsverkoyen/css-to-inline-styles-2.2.5.0["tijsverkoyen/css-to-inline-styles-2.2.5.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> vlucas/phpdotenv-4.3.0.0["vlucas/phpdotenv-4.3.0.0"]
laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"] -- depends --> voku/portable-ascii-1.6.1.0["voku/portable-ascii-1.6.1.0"]
laravel/laravel-7.12.0.0["laravel/laravel-7.12.0.0"] -- depends --> fideloper/proxy-4.4.2.0["fideloper/proxy-4.4.2.0"]
laravel/laravel-7.12.0.0["laravel/laravel-7.12.0.0"] -- depends --> fruitcake/laravel-cors-1.0.6.0["fruitcake/laravel-cors-1.0.6.0"]
laravel/laravel-7.12.0.0["laravel/laravel-7.12.0.0"] -- depends --> guzzlehttp/guzzle-6.5.8.0["guzzlehttp/guzzle-6.5.8.0"]
laravel/laravel-7.12.0.0["laravel/laravel-7.12.0.0"] -- depends --> laravel/framework-7.30.6.0["laravel/framework-7.30.6.0"]
laravel/laravel-7.12.0.0["laravel/laravel-7.12.0.0"] -- depends --> laravel/tinker-2.7.3.0["laravel/tinker-2.7.3.0"]
laravel/tinker-2.7.3.0["laravel/tinker-2.7.3.0"] -- depends --> psy/psysh-0.11.9.0["psy/psysh-0.11.9.0"]
laravel/tinker-2.7.3.0["laravel/tinker-2.7.3.0"] -- depends --> symfony/var-dumper-5.4.14.0["symfony/var-dumper-5.4.14.0"]
league/flysystem-1.1.10.0["league/flysystem-1.1.10.0"] -- depends --> league/mime-type-detection-1.11.0.0["league/mime-type-detection-1.11.0.0"]
monolog/monolog-2.8.0.0["monolog/monolog-2.8.0.0"] -- depends --> psr/log-1.1.4.0["psr/log-1.1.4.0"]
nesbot/carbon-2.63.0.0["nesbot/carbon-2.63.0.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
nesbot/carbon-2.63.0.0["nesbot/carbon-2.63.0.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
nesbot/carbon-2.63.0.0["nesbot/carbon-2.63.0.0"] -- depends --> symfony/translation-5.4.14.0["symfony/translation-5.4.14.0"]
psy/psysh-0.11.9.0["psy/psysh-0.11.9.0"] -- depends --> nikic/php-parser-4.15.2.0["nikic/php-parser-4.15.2.0"]
psy/psysh-0.11.9.0["psy/psysh-0.11.9.0"] -- depends --> symfony/console-5.4.16.0["symfony/console-5.4.16.0"]
psy/psysh-0.11.9.0["psy/psysh-0.11.9.0"] -- depends --> symfony/var-dumper-5.4.14.0["symfony/var-dumper-5.4.14.0"]
ramsey/collection-1.2.2.0["ramsey/collection-1.2.2.0"] -- depends --> symfony/polyfill-php81-1.27.0.0["symfony/polyfill-php81-1.27.0.0"]
ramsey/uuid-4.2.3.0["ramsey/uuid-4.2.3.0"] -- depends --> brick/math-0.9.3.0["brick/math-0.9.3.0"]
ramsey/uuid-4.2.3.0["ramsey/uuid-4.2.3.0"] -- depends --> ramsey/collection-1.2.2.0["ramsey/collection-1.2.2.0"]
ramsey/uuid-4.2.3.0["ramsey/uuid-4.2.3.0"] -- depends --> symfony/polyfill-ctype-1.27.0.0["symfony/polyfill-ctype-1.27.0.0"]
ramsey/uuid-4.2.3.0["ramsey/uuid-4.2.3.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
swiftmailer/swiftmailer-6.3.0.0["swiftmailer/swiftmailer-6.3.0.0"] -- depends --> egulias/email-validator-2.1.25.0["egulias/email-validator-2.1.25.0"]
swiftmailer/swiftmailer-6.3.0.0["swiftmailer/swiftmailer-6.3.0.0"] -- depends --> symfony/polyfill-iconv-1.27.0.0["symfony/polyfill-iconv-1.27.0.0"]
swiftmailer/swiftmailer-6.3.0.0["swiftmailer/swiftmailer-6.3.0.0"] -- depends --> symfony/polyfill-intl-idn-1.27.0.0["symfony/polyfill-intl-idn-1.27.0.0"]
swiftmailer/swiftmailer-6.3.0.0["swiftmailer/swiftmailer-6.3.0.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
symfony/console-5.4.16.0["symfony/console-5.4.16.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/console-5.4.16.0["symfony/console-5.4.16.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
symfony/console-5.4.16.0["symfony/console-5.4.16.0"] -- depends --> symfony/polyfill-php73-1.27.0.0["symfony/polyfill-php73-1.27.0.0"]
symfony/console-5.4.16.0["symfony/console-5.4.16.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/console-5.4.16.0["symfony/console-5.4.16.0"] -- depends --> symfony/service-contracts-2.5.2.0["symfony/service-contracts-2.5.2.0"]
symfony/console-5.4.16.0["symfony/console-5.4.16.0"] -- depends --> symfony/string-5.4.15.0["symfony/string-5.4.15.0"]
symfony/css-selector-5.4.11.0["symfony/css-selector-5.4.11.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/error-handler-5.4.15.0["symfony/error-handler-5.4.15.0"] -- depends --> psr/log-1.1.4.0["psr/log-1.1.4.0"]
symfony/error-handler-5.4.15.0["symfony/error-handler-5.4.15.0"] -- depends --> symfony/var-dumper-5.4.14.0["symfony/var-dumper-5.4.14.0"]
symfony/event-dispatcher-5.4.9.0["symfony/event-dispatcher-5.4.9.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/event-dispatcher-5.4.9.0["symfony/event-dispatcher-5.4.9.0"] -- depends --> symfony/event-dispatcher-contracts-2.5.2.0["symfony/event-dispatcher-contracts-2.5.2.0"]
symfony/event-dispatcher-5.4.9.0["symfony/event-dispatcher-5.4.9.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/event-dispatcher-contracts-2.5.2.0["symfony/event-dispatcher-contracts-2.5.2.0"] -- depends --> psr/event-dispatcher-1.0.0.0["psr/event-dispatcher-1.0.0.0"]
symfony/finder-5.4.11.0["symfony/finder-5.4.11.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/finder-5.4.11.0["symfony/finder-5.4.11.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/http-foundation-5.4.16.0["symfony/http-foundation-5.4.16.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/http-foundation-5.4.16.0["symfony/http-foundation-5.4.16.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
symfony/http-foundation-5.4.16.0["symfony/http-foundation-5.4.16.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> psr/log-1.1.4.0["psr/log-1.1.4.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> symfony/error-handler-5.4.15.0["symfony/error-handler-5.4.15.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> symfony/event-dispatcher-5.4.9.0["symfony/event-dispatcher-5.4.9.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> symfony/http-foundation-5.4.16.0["symfony/http-foundation-5.4.16.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> symfony/polyfill-ctype-1.27.0.0["symfony/polyfill-ctype-1.27.0.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> symfony/polyfill-php73-1.27.0.0["symfony/polyfill-php73-1.27.0.0"]
symfony/http-kernel-5.4.16.0["symfony/http-kernel-5.4.16.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/mime-5.4.16.0["symfony/mime-5.4.16.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/mime-5.4.16.0["symfony/mime-5.4.16.0"] -- depends --> symfony/polyfill-intl-idn-1.27.0.0["symfony/polyfill-intl-idn-1.27.0.0"]
symfony/mime-5.4.16.0["symfony/mime-5.4.16.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
symfony/mime-5.4.16.0["symfony/mime-5.4.16.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/polyfill-intl-idn-1.27.0.0["symfony/polyfill-intl-idn-1.27.0.0"] -- depends --> symfony/polyfill-intl-normalizer-1.27.0.0["symfony/polyfill-intl-normalizer-1.27.0.0"]
symfony/polyfill-intl-idn-1.27.0.0["symfony/polyfill-intl-idn-1.27.0.0"] -- depends --> symfony/polyfill-php72-1.27.0.0["symfony/polyfill-php72-1.27.0.0"]
symfony/process-5.4.11.0["symfony/process-5.4.11.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/routing-5.4.15.0["symfony/routing-5.4.15.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/routing-5.4.15.0["symfony/routing-5.4.15.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/service-contracts-2.5.2.0["symfony/service-contracts-2.5.2.0"] -- depends --> psr/container-1.1.1.0["psr/container-1.1.1.0"]
symfony/service-contracts-2.5.2.0["symfony/service-contracts-2.5.2.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/string-5.4.15.0["symfony/string-5.4.15.0"] -- depends --> symfony/polyfill-ctype-1.27.0.0["symfony/polyfill-ctype-1.27.0.0"]
symfony/string-5.4.15.0["symfony/string-5.4.15.0"] -- depends --> symfony/polyfill-intl-grapheme-1.27.0.0["symfony/polyfill-intl-grapheme-1.27.0.0"]
symfony/string-5.4.15.0["symfony/string-5.4.15.0"] -- depends --> symfony/polyfill-intl-normalizer-1.27.0.0["symfony/polyfill-intl-normalizer-1.27.0.0"]
symfony/string-5.4.15.0["symfony/string-5.4.15.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
symfony/string-5.4.15.0["symfony/string-5.4.15.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/translation-5.4.14.0["symfony/translation-5.4.14.0"] -- depends --> symfony/deprecation-contracts-2.5.2.0["symfony/deprecation-contracts-2.5.2.0"]
symfony/translation-5.4.14.0["symfony/translation-5.4.14.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
symfony/translation-5.4.14.0["symfony/translation-5.4.14.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
symfony/translation-5.4.14.0["symfony/translation-5.4.14.0"] -- depends --> symfony/translation-contracts-2.5.2.0["symfony/translation-contracts-2.5.2.0"]
symfony/var-dumper-5.4.14.0["symfony/var-dumper-5.4.14.0"] -- depends --> symfony/polyfill-mbstring-1.27.0.0["symfony/polyfill-mbstring-1.27.0.0"]
symfony/var-dumper-5.4.14.0["symfony/var-dumper-5.4.14.0"] -- depends --> symfony/polyfill-php80-1.27.0.0["symfony/polyfill-php80-1.27.0.0"]
tijsverkoyen/css-to-inline-styles-2.2.5.0["tijsverkoyen/css-to-inline-styles-2.2.5.0"] -- depends --> symfony/css-selector-5.4.11.0["symfony/css-selector-5.4.11.0"]
vlucas/phpdotenv-4.3.0.0["vlucas/phpdotenv-4.3.0.0"] -- depends --> phpoption/phpoption-1.9.0.0["phpoption/phpoption-1.9.0.0"]
vlucas/phpdotenv-4.3.0.0["vlucas/phpdotenv-4.3.0.0"] -- depends --> symfony/polyfill-ctype-1.27.0.0["symfony/polyfill-ctype-1.27.0.0"]
cyclonedx/cyclonedx-php-composer-demo-dev-master["cyclonedx/cyclonedx-php-composer-demo-dev-master"] -- depends --> laravel/laravel-7.12.0.0["laravel/laravel-7.12.0.0"]
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
example usage with saxon-he:
example result here: https://gist.github.com/jkowalleck/a0f874ee0a8af9a56a0e887631fc53d1?permalink_comment_id=5097441#gistcomment-5097441