ThomasM: Kopie einer XML erstellen, Tag tauschen

Beitrag lesen

Hallo Donaldinho,

Leider wird hierdurch nur eine Kopie der Datei erzeugt. Darüber hinaus würde ich jedoch noch gerne:

  1. alle office:annotation Tags umbenennen
  2. alle Tags in allen office:annotation-Knoten durch Ihre Werte (value of) ersetzen. Idealerweise durch underscore voneinander getrennt.

Das sollte reichen:

<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
  xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0">  
  
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>  
  
  <xsl:template match="@* | node()">  
    <xsl:copy>  
      <xsl:apply-templates select="@* | node()"/>  
    </xsl:copy>  
  </xsl:template>  
  
  <xsl:template match="office:annotation">  
    <neueselement>  
      <xsl:for-each select="//*/text()[normalize-space(.)]">  
        <xsl:value-of select="."/>  
        <xsl:if test="position()!=last()">_</xsl:if>  
      </xsl:for-each>  
    </neueselement>  
  </xsl:template>  
  
</xsl:stylesheet>

Mit Saxon-HE 9.2 entsteht der Dokument-Klon mit dem ersetzten office:annotation-Element in der Form:

<neueselement>TEXT _Unbekannter Autor_2009-10-07T19:42:35.01_NOTIZ1_NOTIZ2_NOTIZ3_TEXT</neueselement>

Grüeß,
Thomas