Foren

Migrating WEB Content using Structures

thumbnail
Jonatan Oyola, geändert vor 10 Jahren.

Migrating WEB Content using Structures

Regular Member Beiträge: 193 Beitrittsdatum: 06.06.07 Neueste Beiträge
Hi, I am migrating articles from a CMS to Liferay. So I've created a XLS to transform the article to be valid for liferay.


<!--?xml version="1.0" encoding="UTF-8"?-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output method="xml" indent="yes" encoding="UTF-8" />

	<xsl:template match="/article">
		<root available-locales="es_ES" default-locale="es_ES">
			<dynamic-element instance-id="XbU4Tt8d" name="main-info" type="text" index-type="">
				<dynamic-content>
					<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
					<xsl:value-of select="maininfo/content" disable-output-escaping="yes" />
					<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
				</dynamic-content>
			</dynamic-element>

			<dynamic-element instance-id="XbU4Tt8d" name="scheme" type="text" index-type="">
				<dynamic-content>
					<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
					<xsl:value-of select="scheme/content" disable-output-escaping="yes" />
					<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
				</dynamic-content>
			</dynamic-element>

			<dynamic-element instance-id="XbU4Tt8d" name="chronology" type="text" index-type="">
				<dynamic-content>
					<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
					<xsl:value-of select="chronology/content" disable-output-escaping="yes" />
					<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
				</dynamic-content>
			</dynamic-element>

			<xsl:for-each select="thoughts/thought">
				<dynamic-element instance-id="XbU4Tt8d" name="thoughts" type="text" index-type="">
					<dynamic-content>
						<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
						<xsl:value-of select="." disable-output-escaping="yes" />
						<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
					</dynamic-content>
				</dynamic-element>
			</xsl:for-each>

			<dynamic-element instance-id="XbU4Tt8d" name="timing" type="text" index-type="">
				<dynamic-content>
					<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
					<xsl:value-of select="location/timing/@century" />
					<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
				</dynamic-content>
			</dynamic-element>

			<dynamic-element instance-id="XbU4Tt8d" name="country" type="text" index-type="">
				<dynamic-content>
					<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
					<xsl:value-of select="location/countries/country/@name" />
					<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
				</dynamic-content>
			</dynamic-element>

			<dynamic-element instance-id="XbU4Tt8d" name="continent" type="text" index-type="">
				<dynamic-content>
					<xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
					<xsl:value-of select="location/continents/continent/@name" />
					<xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
				</dynamic-content>
			</dynamic-element>
		</root>
	</xsl:template>
</xsl:stylesheet>


The way to import the content was taken from welcome theme plugins. Example: Liferay Benefits.xml

But I dont know how to generate a valid value for: instance-id

Can somebody help to resolve it.

Thanks on advances.
thumbnail
Jonatan Oyola, geändert vor 10 Jahren.

RE: Migrating WEB Content using Structures

Regular Member Beiträge: 193 Beitrittsdatum: 06.06.07 Neueste Beiträge
Finnaly I could resolve it, I must add the attribute instance-id with the value PwdGenerator.getPassword() for each dynamic-element tag.


Source xslt = new StreamSource(getClass().getClassLoader().getResourceAsStream("/toArticle.xsl"));
Transformer transformer = factory.newTransformer(xslt);

Source text = new StreamSource(new StringReader(art.getInfo()));
transformer.transform(text, new StreamResult(new File("/tmp", art.getName() + ".xml")));

Document document = SAXReaderUtil.read(new File("/tmp", art.getName() + ".xml"));
List<element> elementList = document.getRootElement().elements();
for(Element element : elementList) {
	if(Validator.equals(element.getName(), "dynamic-element")) {
		element.addAttribute("instance-id", PwdGenerator.getPassword());
	}
}

String xmlContent = document.asXML();
</element>