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