snowwhite: XSLT / Element

Hallo,
ich habe ein Stylesheet geschrieben, um XML-Dateien in XML-Dateien umzuwandeln.
Bei der Transformation wird das tgroup-Element nicht erzeugt und ich verstehe nicht warum.

XSLT:
...
<xsl:element name="table">
<xsl:element name="tgroup">
<xsl:attribute name="cols">xsl:text2</xsl:text></xsl:attribute>
...

Oder
...
<table>
<tgroup cols="2">
...

Ich habe beide Varianten getestet und das tgroup-Elemente wird nie erzeugt. Ich erhalte auch keine Fehlermeldung und die Tabelle wird ohne Probleme erzeugt. Nur das trgroup-Elemten wird nicht erzeugt.

Vielleicht weiß jemand von Euch Rat.
Vielen Dank auf jeden Fall im voraus.
Viele Grüße
snowwhite

  1. Hallo,

    Bei der Transformation wird das tgroup-Element nicht erzeugt und ich verstehe nicht warum.

    Du muss bitte etwas mehr von deinem Kode zeigen, sonst bleibt uns nur die  Antwort "wir auch nicht" übrigt.

    Grüße
    Thomas

    1. Hallo Thomas,
      anbei mehr von meinem Stylesheet:

      <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fn="http://www.w3.org/2005/xpath-functions">
      <xsl:output method="xml" version="1.0" encoding="UTF-8" media-type="text/xml"/>
      <xsl:template match="/NoName">
      <concept>
      xsl:choose
      <xsl:when test="//conbody/p">
      <xsl:copy-of select="conbody/."/>
      </xsl:when>
      <xsl:when test="//conbody/table">
      <xsl:element name="conbody">
      <xsl:element name="table">
      <xsl:element name="tgroup">
      <xsl:attribute name="cols">xsl:text2</xsl:text></xsl:attribute>
      <xsl:element name="thead">
      <xsl:element name="row">
      <xsl:element name="entry">
      <xsl:value-of select="."/>
      </xsl:element>
      ...       </xsl:element>
      </xsl:element>
      <xsl:element name="tbody">
      ...         </xsl:element>
      </xsl:element>
      </xsl:element>
      </xsl:element>
      </xsl:when>
      </xsl:choose>
      </concept>
      </xsl:template>
      </xsl:stylesheet>

      Vielen Dank auf jeden Fall schon einmal.
      Viele Grüße
      snowwhite

      1. Hallo,

        xsl:choose
        <xsl:when test="//conbody/p">
        <xsl:copy-of select="conbody/."/>
        </xsl:when>
        <xsl:when test="//conbody/table">

        »

        </xsl:when>
        </xsl:choose>

        Ich weiss zwar nicht, wie dein XML aussieht, aber du testest erst auf "//conbody/p" wenn das erfüllt ist (sprich _irgendwo_ in deinem XML ein "/conbody/p" existiert), ist der Test beendet. Das beduetet auch, dass der Prozessor nicht zum zweiten, dritten, etc. "when" geht.

        Das eine Tabelle erzeugt wird, dürfte daran liegen, dass du in deinem ursprung-XML eine leere <table> stehen hast, was natürlich beim kopieren, mit kopiert wird.

        Grüße
        Thomas

        1. Hallo Thomas,
          vielen Dank für Deine Hilfe.
          Das ist das Problem gewesen.

          Viele Grüße
          snowwhite