2016-11-09 2 views
0

Ich transformiere qualifizierten Dublin Core in MODS. Ich muss zwei Elemente zu einem kombinieren, und andere Beiträge, die ich hier gefunden habe, sind nicht anwendbar, weil sie auf ein Elternelement passen.XSLT: Kombiniere mehrere nicht verwandte Elemente zu einem Element

Dublin Core ist problematisch mit XSLT, da es keine Eltern- und Kindelemente hat ... also bin ich mir nicht sicher, welches ich wählen soll.

Hier einige Beispiel-Eingang (die wichtigen Bits sind die dc: coverage Elemente):

<?xml version="1.0"?> 
    <oai_dc:dc (schema etc.)> 
     <dc:title>This is the title</dc:title> 
     <dc:creator>Author McAuthorson</dc:creator> 
     <dc:type>Article</dc:type> 
     <dc:coverage.spatial.lat>49.101</dc:coverage.spatial.lat> 
     <dc:coverage.spatial.long>-122.720</dc:coverage.spatial.long> 
    </oai_dc:dc> 

Und hier ist der Ausgang I für die dc benötigen: coverage Elemente:

<subject> 
    <cartographics> 
    <coordinates>49.101, -122.720</coordinates> 
    </cartographics> 
</subject> 

Ich habe Lese Lösungen, die verschiedene Elemente mit dem gleichen Namen verarbeiten können, aber nichts, das zwei Elemente mit unterschiedlichen Namen kombinieren kann. Ich habe experimentiert, diese als Variablen zu setzen, aber kann nicht herausfinden, wie man die Variable von einer Vorlage (z. B. passende dc: coverage.spatial.lat) in die nächste (passende dc: coverage.spatial.long) übergibt. Also bin ich blind.

Jeder Rat (oder Links zu anwendbaren Antworten, die ich nicht finden konnte) würde sehr geschätzt werden.

+0

Kann es mehr lat/long-Paare unter dem gleichen Elternteil ('oai_dc: dc' in Ihrem Beispiel)? –

+0

Nein - es gibt nur eine Gruppe von lat/langen Paaren pro Datensatz. – Brandon

+0

Ich würde Ihre Strategie in Frage stellen, um sich XSLT beizubringen. Sie können keine Programmiersprache lernen, indem Sie im Internet nach Beispielen suchen, die genau das tun, was Sie wollen. Sie müssen die Prinzipien lernen und die Bausteine ​​beherrschen, damit Sie sie kombinieren können, um Ihre eigenen Lösungen für Ihre speziellen Probleme zu erstellen. Wenn Sie nicht herausfinden können, wie Sie Variablen von einer Vorlage an eine andere übergeben, erhalten Sie Ihre Informationen nicht von der richtigen Stelle. Holen Sie sich ein gutes XSLT-Buch und lesen Sie es. –

Antwort

0

Warum können Sie nicht einfach tun:

<xsl:template match="/oai_dc:dc"> 
    <subject> 
     <cartographics> 
      <coordinates> 
       <xsl:value-of select="dc:coverage.spatial.lat" /> 
       <xsl:text>, </xsl:text> 
       <xsl:value-of select="dc:coverage.spatial.long" /> 
      </coordinates> 
     </cartographics> 
    </subject> 
</xsl:template> 
+0

michael.hor257k: Habe einen Versuch ... funktioniert nicht, weil dies nur ein kleines Stück von einem viel größeren XSLT (mit vielen mehr Elementen als in meinem Beispiel) ist. Diese Lösung erzeugt eine Ausgabe, die alle anderen Elemente/Transformationen ignoriert. – Brandon

+0

@Brandon Sie müssen Code hinzufügen, um die anderen Knoten zu verarbeiten, die Sie in Ihre Ausgabe einbeziehen möchten. Leider weiß ich nicht, was diese sein könnten und wie sie gehandhabt werden müssen. Bitte überprüfen Sie: [MCVE]. –

Verwandte Themen