This project aims to assemble, merge, and resolve dependencies in XSD files
npm install xsd-assemblerThis project aims to assemble, merge, and resolve dependencies in XSD files, allowing complex schemas with multiple and references to be processed and combined into a single XSD document.
The XSD Schema Assembler is a TypeScript library that simplifies the merging of multiple XSD files, resolving dependencies, including schema attributes, and merging properties as needed. It is designed for scenarios where schemas reference each other using or , such as in systems following the Brazilian Fiscal Portal standards.
- Resolution of and Processing of : Automatically loads and merges schema dependencies, replacing statements with the contents of the referenced files. For , the statement is retained, and the referenced file must be in the same directory as the main file for proper resolution.
- Preservation of Main Schema Attributes: Attributes from the main XSD file, such as targetNamespace, are retained, while attributes from imported files are only added if they do not conflict with the main schema.
- Removal of XML Declarations and Tags: During assembly, the schema tags from imported files are removed, ensuring a single schema tag in the final XSD.
import xsdAssembler from 'xsd-assembler';
Install the lib:
``bash`
npm install xsd-assembler
Usage:
`typescript
import xsdAssembler from 'xsd-assembler';
const pathToYourFile = '/schemas/enviNFe_v4.00.xsd';
const assembledXSD = await xsdAssembler.assemble(pathToYourFile);
`
Rembember: All .xsd files should be in the same folder as your main file, as the example:
``
βββ πschemas
βββ enviNFe_v4.00.xsd
βββ leiauteNFe_v4.00.xsd
βββ tiposBasico_v4.00.xsd
βββ xmldsig-core-schema_v1.01.xsd
Love this project? If you find it useful and would like to show your support, consider buying me a coffee (or a few!). Your contribution helps keep this project going strong and fuels me to keep pushing out new features, improvements, and bug fixes.
- β Express Appreciation: Show your support and appreciation for the time and effort that goes into maintaining this project.
- π Boost Development: Your support helps fund the time needed to bring new features and improvements.
- πΌ Support a New Parent: My first child arrived earlier this year, and those late-night coding sessions go great with some extra coffee (and maybe a few diapers)!
You can "buy me a coffee" through these options:
- Buy Me a Coffee on GitHub Sponsors
- Pix Donation: Prefer Pix? Use this key:
```
Pix Key: 944ce2f2-e90f-400a-a388-bb1fe6719e02
Name: Marco Lima
Thank you for your support! Every bit helps keep this project growing and evolving. βπ»
Not in a position to donate financially? No problem! Here are a few other ways to support:
- Report Issues: Found a bug? Let us know!
- Contribute Code: Submit a pull request to improve the project.
- Share with Friends: Spread the word about the project.
Thank you for helping make this project better for everyone!
| |
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Marco Lima |
Designed with β₯ by Marco Lima. Licensed under GPL-3.0.