Olga: Kopieren, nur falls Element noch nicht vorhanden

Hallo,

bin neu hier und noch eine Anfängerin in XSL. Nun muss ich folgendes realisieren: es wir ein Knoten StyleCategories in der Zieldatei gesucht und bestimmte Elemente dorthin kopiert. Das klappt soweit:

<xsl:template match="StyleCategories">
 xsl:copy
  <xsl:apply-templates select="@* | node()"/>
  <xsl:element name="StyleCategory">
      <xsl:attribute name="ID">96</xsl:attribute>
      <xsl:attribute name="CaptionHint">Category1</xsl:attribute>
  </xsl:element>
    </xsl:template>

Nun muss ich aber prüfen, ob so ein Element dort schon früher war, und in diesem Fall nicht kopieren. Meine Kenntnisse reichen da nicht aus, und es ist zudem ziemlich dringend... Hilfe!

Danke schon mal an alle Helfenden.

  1. Hallo,

    selbst wenn es eilt, es sollte zumindest soviel Zeit sein, das problem exakt zu umschreiben und zudem wohlgeformten code anzugeben. Vielleicht hilft dir das hier:

    <xsl:template match="StyleCategories">
      <xsl:if test="not(StyleCategory)>
       xsl:copy
        <xsl:apply-templates select="@* | node()"/>
        <xsl:element name="StyleCategory">
           <xsl:attribute name="ID">96</xsl:attribute>
           <xsl:attribute name="CaptionHint">Category1</xsl:attribute>
        </xsl:element>
       </xsl:copy>
      </xsl:if>
     </xsl:template>

    Gruß, h.

    1. Entschuldigung, ich wusste nicht so recht, wie ich das formulieren soll. Das Problem ist, dass es gar icht mein Fachgebiet ist, und der Zuständige ist diese Woche nicht zu erreichen, das Problem muss aber schnellstens korrigiert werden.

      Also, es gibt z.B. Folgendes in der XML-Datei:
      <StyleCategories>
        <StyleCategory ID="65" CaptionHint="Category65" />
        <StyleCategory ID="69" CaptionHint="Category69" />
      </StyleCategories>

      Ich muss hier noch mehrere Kategorien einfügen, von denen vielleicht manche den gleichen ID haben. Diese dürfen dann nicht eingefügt werden, damit keine Duplikate entstehen. Wie mache ich das bloß?