Andi: Transformationsproblem mittels XSLT

Beitrag lesen

Hallo,

bei meinem vorigem Posting ist wohl was schief geggangen. Deshalb hier nocheinmal mein Problem.
zugrunde liegt folgendes XML-Dokument:

gml:featureMember
 <bplan:BPlan gml:id="obj_0">
  bplan:gkz4711</bplan:gkz>
  bplan:datum2001-08-06</bplan:datum>
  <bplan:ebene xlink:href="#obj_1"/>
 </bplan:BPlan>
</gml:featureMember>
gml:featureMember
 <bplan:BPlanEbene gml:id="obj_1">
  bplan:ebene0</bplan:ebene>
  bplan:bedeutung/
  <bplan:gehoertZuBPlan xlink:href="#obj_0"/>
  <bplan:fachobjekt xlink:href="#obj_62"/>
                [..]
        </bplan:BPlanEbene>
</gml:featureMember>

Diese XML- Dokuemnet möchte ich wie folgt transformieren:

gml:featureMember
 <bplan:BPlan fid="obj_0">
  bplan:gkz4711</bplan:gkz>
  bplan:datum2001-08-06</bplan:datum>
  bplan:ebene
   <bplan:BPlanEbene fid="obj_1">
    bplan:ebene0</bplan:ebene>
    bplan:bedeutung/
    <bplan:gehoertZuBPlan xlink:href="#obj_0"/>
    </bplan:Ebene>
               </bplan:ebene>
       </bplan:BPlan>
</gml:featureMember>

Durch meine Transformation werden alle Elemente transformieren. Allerdings sollen alle bplan:fachobjekt Elemente nicht ins Zieldokument übernommen werden. Weiter soll das bplan:BPlan Element, welches nicht (wie im Quellfile zu sehen ist) nach dem bplan:ebene Element geschlossen wird, sondern alle folgenden Elemente beinhaltet (siehe Zieldokument.
Mein Ansatz ist:

<xsl:for-each select="//gml:featureMember/*">
 <xsl:call-template name="objekt_bauen"/>
</xsl:for-each>

<xsl:template name="objekt_bauen">
 <xsl:for-each select=".">
  <xsl:element name="{name()}">
   <xsl:attribute name="fid">
    <xsl:value-of select="@gml:id"/>
   </xsl:attribute>
   <xsl:for-each select="node()">
    <xsl:if test="not(bplan:fachobjekt)">
     <xsl:element name="{name()}">
     xsl:choose
     <!--Hier stehen Ausgaben von Attributen, etc. -->
     </xsl:choose>
     </xsl:element>
    </xsl:if>
   </xsl:for-each>
  </xsl:element>
 </xsl:for-each>
</xsl:template>

Besten Dank

andi