<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Data lineage — technical principles |</title><link>https://ellipsys-bi.com/en/ressources/data-lineage-principes/</link><atom:link href="https://ellipsys-bi.com/en/ressources/data-lineage-principes/index.xml" rel="self" type="application/rss+xml"/><description>Data lineage — technical principles</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-US</language><lastBuildDate>Thu, 02 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://ellipsys-bi.com/media/logo.svg</url><title>Data lineage — technical principles</title><link>https://ellipsys-bi.com/en/ressources/data-lineage-principes/</link></image><item><title>Data lineage - connection protocols to the various analytics technologies</title><link>https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-protocoles-connexion/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-protocoles-connexion/</guid><description>&lt;p&gt;Metadata acquisition relies on the native interfaces exposed by the technologies analyzed by &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Depending on the platform, collection uses database protocols, REST APIs, SDKs, technical repositories, or standardized exports.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-protocoles-connexion/data-lineage-protocoles-connexion-1-en_hu_4967f9e18b9d0dcd.webp 320w, https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-protocoles-connexion/data-lineage-protocoles-connexion-1-en_hu_9d2456d624348ad8.webp 480w, https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-protocoles-connexion/data-lineage-protocoles-connexion-1-en_hu_e2b8b9561fd43ef3.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-protocoles-connexion/data-lineage-protocoles-connexion-1-en_hu_4967f9e18b9d0dcd.webp"
width="760"
height="661"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the collectors use the mechanisms officially exposed by the vendors (JDBC, ODBC, REST API, SDK, technical repositories, exports).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="technical-principles"&gt;Technical principles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Dedicated service accounts.&lt;/li&gt;
&lt;li&gt;Access limited to metadata.&lt;/li&gt;
&lt;li&gt;On-premise, Cloud, and hybrid compatibility.&lt;/li&gt;
&lt;li&gt;Use of platforms&amp;rsquo; native interfaces.&lt;/li&gt;
&lt;li&gt;Password encryption after first use.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="databases"&gt;Databases&lt;/h2&gt;
&lt;p&gt;Relational databases are analyzed via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JDBC.&lt;/li&gt;
&lt;li&gt;ODBC.&lt;/li&gt;
&lt;li&gt;Proprietary connectors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Collection covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schemas.&lt;/li&gt;
&lt;li&gt;Tables.&lt;/li&gt;
&lt;li&gt;Views.&lt;/li&gt;
&lt;li&gt;Stored procedures.&lt;/li&gt;
&lt;li&gt;Usage statistics (when analyzed).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="etl--elt"&gt;ETL / ELT&lt;/h2&gt;
&lt;p&gt;ETL/ELT platforms are analyzed via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Technical repositories.&lt;/li&gt;
&lt;li&gt;Administration APIs.&lt;/li&gt;
&lt;li&gt;XML or JSON exports.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The collected metadata makes it possible to reconstruct:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jobs.&lt;/li&gt;
&lt;li&gt;Transformations.&lt;/li&gt;
&lt;li&gt;Dependencies.&lt;/li&gt;
&lt;li&gt;Data flows.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="data-visualization-tools"&gt;Data Visualization Tools&lt;/h2&gt;
&lt;p&gt;Data visualization tools are analyzed via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SDKs.&lt;/li&gt;
&lt;li&gt;REST APIs.&lt;/li&gt;
&lt;li&gt;Internal repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Collection covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data sources.&lt;/li&gt;
&lt;li&gt;Semantic layers.&lt;/li&gt;
&lt;li&gt;Dashboards.&lt;/li&gt;
&lt;li&gt;Business rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This information makes it possible to extend the data lineage all the way to the reporting layer.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; build data lineage in the sources and connect it with the data lineage in the data visualization layer, all the way to the dashboard cell.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="secure-environments"&gt;Secure environments&lt;/h2&gt;
&lt;p&gt;Collection can be securely supervised via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VMware Horizon.&lt;/li&gt;
&lt;li&gt;OpenOTP (two-factor authentication).&lt;/li&gt;
&lt;li&gt;Administration bastion.&lt;/li&gt;
&lt;li&gt;Logging and traceability of operations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Access remains limited to the components needed for metadata collection.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;For information:&lt;/strong&gt; the same collection mechanism applies in Cloud, on-premise, or hybrid environments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>Data lineage - feeding third-party data catalogs to expose technical data lineage</title><link>https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-alimentation-data-catalogues/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-alimentation-data-catalogues/</guid><description>&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; lets you browse data lineage through its Mosaïc web portal, but the consolidated metadata can also be published to various data catalogs on the market, which often have significant limitations when it comes to data lineage. The benefit is having a single tool for optimal data governance.&lt;/p&gt;
&lt;p&gt;The data lineage is reconstructed in the &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; technical repository, then exposed to data catalogs via dedicated connectors.&lt;/p&gt;
&lt;p&gt;This architecture makes it possible to decouple the data lineage collection and reconstruction mechanisms from the exposure layer used by governance teams.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the technical repository stays independent from the target catalog. The collection and lineage-reconstruction (and connection) mechanisms don&amp;rsquo;t depend on the data catalog in use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-alimentation-data-catalogues/data-lineage-alimentation-data-catalogues-1-en_hu_cbb841d43bbf559e.webp 320w, https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-alimentation-data-catalogues/data-lineage-alimentation-data-catalogues-1-en_hu_7a240380fc93dde0.webp 480w, https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-alimentation-data-catalogues/data-lineage-alimentation-data-catalogues-1-en_hu_3ee369225894186e.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-alimentation-data-catalogues/data-lineage-alimentation-data-catalogues-1-en_hu_cbb841d43bbf559e.webp"
width="760"
height="417"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The collected metadata is consolidated in the &lt;strong&gt;oA.mdb&lt;/strong&gt; columnar database after processing by the &lt;strong&gt;oA.Job&lt;/strong&gt; engine.&lt;/p&gt;
&lt;p&gt;The central repository notably contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Field-level data lineage.&lt;/li&gt;
&lt;li&gt;Usage data.&lt;/li&gt;
&lt;li&gt;Associated governance information, where applicable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The catalogs are then fed from this single repository via exposure connectors independent of the data catalog solutions in use.&lt;/p&gt;
&lt;h2 id="exposure-connectors"&gt;Exposure connectors&lt;/h2&gt;
&lt;p&gt;The connectors handle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automated publication of the lineage.&lt;/li&gt;
&lt;li&gt;Continuous synchronization.&lt;/li&gt;
&lt;li&gt;Restriction management.&lt;/li&gt;
&lt;li&gt;Support for the various Workspaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Data lineage exposure can be complete or partial depending on the display capabilities of the target catalog, keeping in mind that the data lineage produced upstream is itself available at field level.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; catalogs only consume the consolidated metadata, not the original technical sources.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="supported-catalogs"&gt;Supported catalogs&lt;/h2&gt;
&lt;p&gt;The available connectors currently support the following data catalogs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DataGalaxy&lt;/li&gt;
&lt;li&gt;Zeenea&lt;/li&gt;
&lt;li&gt;Collibra&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="usage-management"&gt;Usage management&lt;/h2&gt;
&lt;p&gt;When audit logs are available, observed usage is integrated into the technical repository and then exposed to the catalog.&lt;/p&gt;
&lt;p&gt;This lets users distinguish:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Live&amp;rdquo; flows, consumed by tools or queried.&lt;/li&gt;
&lt;li&gt;Flows — and therefore objects — that see no consumption (often more than 80% of the total).&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; enrich the data catalog with usage information to identify objects that are candidates for rationalization or decommissioning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>Data lineage - the principles of connector containerization</title><link>https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-conteneurisation-connecteurs/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-conteneurisation-connecteurs/</guid><description>&lt;p&gt;The &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; architecture relies on containerized components deployed within the Client&amp;rsquo;s environment.&lt;/p&gt;
&lt;p&gt;Each component is specialized for a given technology and handles the collection of the metadata needed to reconstruct the data lineage: databases, ETL/ELT platforms, data visualization tools, and audit databases.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-conteneurisation-connecteurs/data-lineage-conteneurisation-connecteurs-1-fr-en_hu_c51658701639c8d0.webp 320w, https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-conteneurisation-connecteurs/data-lineage-conteneurisation-connecteurs-1-fr-en_hu_3dbde412f7fa9e7e.webp 480w, https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-conteneurisation-connecteurs/data-lineage-conteneurisation-connecteurs-1-fr-en_hu_29ea72192a933588.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/data-lineage-principes/data-lineage-conteneurisation-connecteurs/data-lineage-conteneurisation-connecteurs-1-fr-en_hu_c51658701639c8d0.webp"
width="760"
height="581"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The extractors produce standardized CSV files containing the collected metadata. These files can be reviewed by the Client before being transferred to the central processing components.&lt;/p&gt;
&lt;p&gt;Where anonymization is required, a dedicated container is inserted into the collection chain to replace strings, SQL constants, and other sensitive information with variables before the exchange files are produced.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; extractors and anonymizers are decoupled from the processing engines. Each component can be deployed and updated independently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="technical-principles"&gt;Technical principles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;One dedicated container per technology.&lt;/li&gt;
&lt;li&gt;Metadata collected as close as possible to the analyzed systems.&lt;/li&gt;
&lt;li&gt;Optional anonymization before transfer.&lt;/li&gt;
&lt;li&gt;Production of standardized CSV files.&lt;/li&gt;
&lt;li&gt;Docker and Podman compatibility.&lt;/li&gt;
&lt;li&gt;On-premise, SaaS, or hybrid deployment.&lt;/li&gt;
&lt;li&gt;Independent updates for each component.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="extraction"&gt;Extraction&lt;/h2&gt;
&lt;p&gt;The extractors connect to the analyzed technologies using dedicated service accounts.&lt;/p&gt;
&lt;p&gt;The metadata collected relates to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Databases.&lt;/li&gt;
&lt;li&gt;ETL / ELT platforms.&lt;/li&gt;
&lt;li&gt;Data visualization tools.&lt;/li&gt;
&lt;li&gt;Audit databases.&lt;/li&gt;
&lt;li&gt;The scheduler.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each extractor produces a consistent output format regardless of the technology being analyzed.&lt;/p&gt;
&lt;h2 id="anonymization"&gt;Anonymization&lt;/h2&gt;
&lt;p&gt;An anonymization container can be positioned between metadata collection and transfer.&lt;/p&gt;
&lt;p&gt;The following elements can be replaced with technical variables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Strings.&lt;/li&gt;
&lt;li&gt;Application parameters.&lt;/li&gt;
&lt;li&gt;Literal values.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal is to preserve technical dependencies while removing sensitive information.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; anonymization happens before the transferred files are generated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="exchange-files"&gt;Exchange files&lt;/h2&gt;
&lt;p&gt;The components produce standardized CSV files containing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Technical objects.&lt;/li&gt;
&lt;li&gt;Dependencies.&lt;/li&gt;
&lt;li&gt;Transformations.&lt;/li&gt;
&lt;li&gt;Usage information, where available.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These files can be archived, reviewed, or validated by the Client before being transferred.&lt;/p&gt;
&lt;h2 id="processing"&gt;Processing&lt;/h2&gt;
&lt;p&gt;The generated files are used by &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt;&amp;rsquo;s central components to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reconstruct dependencies.&lt;/li&gt;
&lt;li&gt;Consolidate metadata.&lt;/li&gt;
&lt;li&gt;Integrate usage from audit logs.&lt;/li&gt;
&lt;li&gt;And produce the data lineage.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; a consistent collection chain, independent of the analyzed technologies and deployment modes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item></channel></rss>