A step-by-step guide to help you integrate and use the FundsXML standard in your applications and data workflows.
Overview
What is FundsXML?
FundsXML is a standardized XML schema designed specifically for European fund data exchange. It provides a unified format for sharing fund information, performance data, and regulatory compliance information across financial institutions.
Regulatory Compliant
Meets EU financial data standards
High Performance
Optimized for large-scale data processing
Validation Ready
Built-in data quality assurance
Use Cases
Fund data aggregation
Performance reporting
Regulatory submissions
Data warehouse integration
Third-party data feeds
Key Features
Standardized fund identification
Performance data modeling
Risk metrics integration
Multi-currency support
Regulatory reporting compatibility
The Technology: XML & XSD
FundsXML is built upon two powerful, open standards: XML for structuring data and XSD for defining the rules of that structure. Understanding these will help you work with FundsXML more effectively.
XML (eXtensible Markup Language)
XML is a markup language designed to store and transport data. Unlike HTML, it doesn’t define how to display data, but rather how to describe it. Its self-describing nature makes it perfect for complex data exchange between different systems.
XSD (XML Schema Definition)
An XSD file is a “rulebook” or “blueprint” for an XML document. It defines the legal building blocks of the XML, such as the element names, data types, and structure. The FundsXML XSD ensures that all data files are consistent and valid.
Linking Your XML to the Schema
To enable validation and provide context to XML editors and processors, you must link your FundsXML file to its corresponding XSD schema. This is done in the root <FundsXML4> element using the xsi:noNamespaceSchemaLocation attribute. This attribute tells any processing application where to find the rules (the XSD) that define the structure of your XML file.
<FundsXML4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://github.com/fundsxml/schema/releases/download/4.2.2/FundsXML.xsd">
<!-- Your FundsXML data goes here -->
</FundsXML4>To use a different version of the schema, simply update the URL to point to the desired version on GitHub. All versions of FundsXML since 4.0.0 are designed to be backward compatible, ensuring a smooth transition when upgrading.
Quick Start
1
Download the Schema
2
Create a FundsXML File
Generate a FundsXML file, either programmatically from your system’s data or manually for testing. Ensure the file header references the correct schema version for validation. See the “Examples” tab for a basic file structure.
3
Validate Your XML
Validation is a critical step to ensure your file is compliant and can be correctly processed. An invalid file will be rejected by consuming systems. Use an IDE with XML support, our online tools, or a programmatic library to validate your files against the XSD.
Watch Video Tutorials
For visual learners, our YouTube channel provides step-by-step guides, tutorials, and presentations on implementing and using FundsXML.
Understanding the Schema
The FundsXML schema is defined in an XML Schema Definition (XSD) file. This file acts as the rulebook, specifying all allowed elements, data types, and hierarchies. A deep understanding of the schema is key to a successful implementation.
XSD as the Source of Truth: The XSD file is the definitive reference for what constitutes a valid FundsXML document. It enforces data types, element order, and cardinality.
Modular Structure: The schema is modular, with different sections for different data types (e.g., portfolio data, static fund data, transaction data). This allows you to use only the parts you need.
Exploring the Schema: Use an XML editor (like FreeXMLToolit, XMLSpy or VS Code with an XML extension) or an online schema viewer to explore the main components like Portfolio, Fund, and Asset. This will help you visualize the data relationships.
Key Schema Nodes
The FundsXML schema is extensive. Here are some of the most important parent nodes you will encounter when working with the standard.
<FundsXML4>
The root element for every FundsXML document. It contains header information like the schema version and creation timestamp, and acts as the main container for all other data nodes.
<?xml version="1.0" encoding="UTF-8"?>
<FundsXML4> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://github.com/fundsxml/schema/releases/download/4.2.2/FundsXML.xsd">
...
</FundsXML4><ControlData>
Contains metadata about the file transmission, such as sender and recipient information, file type, and timestamps. It’s used for routing and processing the file correctly.
<ControlData>
<UniqueDocumentID>ID_01</UniqueDocumentID>
<DocumentGenerated>2021-11-30T16:14:04</DocumentGenerated>
<ContentDate>2021-11-30</ContentDate>
<DataSupplier>
<SystemCountry>AT</SystemCountry>
<Short>ASSETMGNT</Short>
<Name>Asset Management Company Name</Name>
<Type>Asset Manager</Type>
<Contact>
<Email>datamanagement@company.com</Email>
</Contact>
</DataSupplier>
<DataOperation>INITIAL</DataOperation>
<Language>EN</Language>
</ControlData><Fund>
Contains all static and dynamic master data for a single fund. This includes identifiers (ISIN, WKN), fund name, management company, currency, and legal information.
<Funds>
<Fund>
<Identifiers>
<LEI>PQOH26KWDF7CG10L6792</LEI>
</Identifiers>
<Names>
<OfficialName>DEMO FUND 01</OfficialName>
</Names>
<Currency>EUR</Currency>
<SingleFundFlag>true</SingleFundFlag>
...
</Fund>
<Fund>
...
</Fund>
</Funds>Data Validation & Quality Checks
Ensuring High-Quality Data
Data quality is paramount. FundsXML provides a two-level approach to ensure that your data is not only structurally correct but also logically consistent.
Level 1: XSD Validation
This is the fundamental check. Validating your XML file against the FundsXML XSD ensures that it adheres to the official structure, uses correct data types, and meets all basic requirements of the standard. This step is mandatory and catches most structural errors.
Level 2: XSLT Quality Checks
For more advanced quality assurance, you can use XSLT (eXtensible Stylesheet Language Transformations). XSLT files can enforce complex business rules that an XSD cannot, such as checking for consistency between different data fields.
Tools for XSLT Transformation
XSLT transformations can be performed with a variety of tools. Professional XML editors like XMLSpy offer powerful features for developing and running these checks. For an open-source alternative, the FreeXmlToolkit provides robust capabilities for applying XSLT transformations and is a valuable resource for the community.
Example XSLT Checks
We provide a repository of example XSLT files to help you get started with advanced quality checks. These can be adapted to your specific needs.
Code Examples
Equity Fund Portfolio
An example of a portfolio holding report for a fund that primarily invests in equities. Note the <AssetType> is ‘Equity’.
<?xml version="1.0" encoding="UTF-8"?>
<FundsXML4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://github.com/fundsxml/schema/releases/download/4.2.2/FundsXML.xsd">
<ControlData>
<UniqueDocumentID>EAM_FUND_001</UniqueDocumentID>
...
</ControlData>
<Funds>
<Fund>
<Identifiers>
<LEI>PQOH26KWDF7CG10L6792</LEI>
</Identifiers>
<Names>
<OfficialName>DEMO FUND 01</OfficialName>
</Names>
<Currency>EUR</Currency>
<SingleFundFlag>true</SingleFundFlag>
...
<FundDynamicData>
<TotalAssetValues>
<TotalAssetValue>
<NavDate>2021-11-30</NavDate>
<TotalAssetNature>OFFICIAL</TotalAssetNature>
<TotalNetAssetValue>
<Amount ccy="EUR">255355819.05</Amount>
</TotalNetAssetValue>
</TotalAssetValue>
</TotalAssetValues>
<Portfolios>
<Portfolio>
<NavDate>2021-11-30</NavDate>
<Positions>
<Position>
<UniqueID>ID_24347801</UniqueID>
<Currency>EUR</Currency>
<TotalValue>
<Amount ccy="EUR">7928598.39</Amount>
</TotalValue>
<TotalPercentage>3.104922</TotalPercentage>
<Account>
<MarketValue>
<Amount ccy="EUR">7934101.13</Amount>
</MarketValue>
<Interests>
<Amount ccy="EUR">-5502.74</Amount>
</Interests>
</Account>
</Position>
...
</Positions>
</Portfolio>
</Portfolios>
</FundDynamicData>
</Fund>
</Funds>
<AssetMasterData>
<Asset>
<UniqueID>ID_24347801</UniqueID>
<Currency>EUR</Currency>
<Country>AT</Country>
<Name>EUR Account</Name>
<AssetType>AC</AssetType>
<AssetDetails>
<Account>
<Counterparty>
<Identifiers>
<LEI>PQOH26KWDF7CG10L6792</LEI>
</Identifiers>
<Name>Erste Group Bank AG</Name>
<Address>
<StreetName>Am Belvedere 1</StreetName>
<CityName>Vienna</CityName>
<CityCode>1100</CityCode>
<Country>AT</Country>
</Address>
</Counterparty>
</Account>
</AssetDetails>
<Securitized>false</Securitized>
</Asset>
...
</AssetMasterData>
</FundsXML4>