Last active
June 21, 2018 19:31
-
-
Save animaux/6cf803ac099b457cbe50 to your computer and use it in GitHub Desktop.
Symphony CMS Page consuming external XML via a external datasource and transforming some content for XML-import. #symphony-cms
This file contains hidden or 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"?> | |
<xsl:stylesheet version="1.0" | |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
extension-element-prefixes="dyn exslt str" | |
xmlns:exslt="http://exslt.org/common" | |
xmlns:dyn="http://exslt.org/dynamic" | |
xmlns:str="http://exslt.org/strings"> | |
<xsl:output method="xml" | |
encoding="UTF-8" | |
indent="yes" | |
cdata-section-elements="Inhaltsangabe" /> | |
<xsl:strip-space elements="*"/> | |
<!-- Umformen der Seminar-XML-Daten + Zuordnung der Personen --> | |
<xsl:template match="/"> | |
<tagungen> | |
<xsl:apply-templates select="/data/seminar/entry"/> | |
</tagungen> | |
</xsl:template> | |
<xsl:template match="/data/seminar/entry"> | |
<entry id="{@id}"> | |
<xsl:for-each select="*"> | |
<xsl:choose> | |
<!-- Zuordnung der Personen Leitung --> | |
<xsl:when test="name()='Leitung'"> | |
<Leitung> | |
<xsl:if test=". != ''"> | |
<xsl:call-template name="person_ids"/> | |
</xsl:if> | |
</Leitung> | |
</xsl:when> | |
<!-- Zuordnung der Personen Tagungsassistenz --> | |
<xsl:when test="name()='Assistenz'"> | |
<Leitung> | |
<xsl:if test=". != ''"> | |
<xsl:call-template name="person_ids"/> | |
</xsl:if> | |
</Leitung> | |
</xsl:when> | |
<!-- Linebreaks im Titel entfernen? --> | |
<!-- | |
<xsl:when test="name()='Titel'"> | |
<Titel><xsl:value-of select="normalize-space(.)" /></Titel> | |
</xsl:when> | |
--> | |
<!-- Boolesche Werte anpassen --> | |
<xsl:when test="name()='UhrAnzeigen' or | |
name()='Geloescht' or | |
name()='Anmeldung'"> | |
<xsl:element name="{name()}"> | |
<xsl:choose> | |
<xsl:when test=". = 'Y'"> | |
<xsl:text>Yes</xsl:text> | |
</xsl:when> | |
<xsl:otherwise> | |
<xsl:text>No</xsl:text> | |
</xsl:otherwise> | |
</xsl:choose> | |
</xsl:element> | |
</xsl:when> | |
<!-- Alle anderen Felder wie die Quelle ausgeben --> | |
<xsl:otherwise> | |
<xsl:element name="{name()}"><xsl:value-of select="."/></xsl:element> | |
</xsl:otherwise> | |
</xsl:choose> | |
</xsl:for-each> | |
</entry> | |
</xsl:template> | |
<!-- Zuordnung der Personen --> | |
<xsl:template match="text()" name="person_ids"> | |
<xsl:param name="pText" select="."/> | |
<xsl:if test="string-length($pText) > 0"> | |
<xsl:variable name="vNextItem" select="substring-before(concat($pText, ','), ',')"/> | |
<xsl:if test="/data/personen/entry[name=$vNextItem]/@id"> | |
<item><xsl:value-of select="/data/personen/entry[name=$vNextItem]/@id"/></item> | |
</xsl:if> | |
<xsl:call-template name="person_ids"> | |
<xsl:with-param name="pText" select="substring-after($pText, ',')"/> | |
</xsl:call-template> | |
</xsl:if> | |
</xsl:template> | |
</xsl:stylesheet> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment