Hallo Franz,
ich habe ein Szenario erstellt, um Dir zu zeigen, was mein Problem ist:
Dokument 1:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE GRUPPE SYSTEM "C:\gruppe.dtd">
<GRUPPE>
<PERSON>
<VORNAME>Peter</VORNAME>
<NAME>Müller</NAME>
</PERSON>
<PERSON>
<VORNAME>Daniel</VORNAME>
<NAME>Meyer</NAME>
</PERSON>
<PERSON>
<VORNAME>Stefan</VORNAME>
<NAME>Schneider</NAME>
</PERSON>
</GRUPPE>
Dokument 2:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE GRUPPE SYSTEM "C:\gruppe.dtd">
<GRUPPE>
<PERSON>
<VORNAME>Thomas</VORNAME>
<NAME>Kaiser</NAME>
</PERSON>
<PERSON>
<VORNAME>Andreas</VORNAME>
<NAME>Schulz</NAME>
</PERSON>
</GRUPPE>
DTD C:\gruppe.dtd:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT GRUPPE (PERSON+)>
<!ELEMENT PERSON (VORNAME, NAME)>
<!ELEMENT VORNAME (#PCDATA)>
<!ELEMENT NAME (#PCDATA)>
----------------------------------------------
Das Ausgangsdokument sollte so aussehen:
(die Elementknoten heißen anders und Vorname und Name werden vertauscht)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TEAM SYSTEM "C:\team.dtd">
<TEAM>
<MEMBER>
<SURNAME>Müller</SURNAME>
<FIRSTNAME>Peter</FIRSTNAME>
</MEMBER>
<MEMBER>
<SURNAME>Meyer</SURNAME>
<FIRSTNAME>Daniel</FIRSTNAME>
</MEMBER>
<MEMBER>
<SURNAME>Schneider</SURNAME>
<FIRSTNAME>Stefan</FIRSTNAME>
</MEMBER>
<MEMBER>
<SURNAME>Kaiser</SURNAME>
<FIRSTNAME>Thomas</FIRSTNAME>
</MEMBER>
<MEMBER>
<SURNAME>Schulz</SURNAME>
<FIRSTNAME>Andreas</FIRSTNAME>
</MEMBER>
</TEAM>
DTD C:\team.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT TEAM (MEMBER+)>
<!ELEMENT MEMBER (SURNAME, FIRSTNAME)>
<!ELEMENT SURNAME (#PCDATA)>
<!ELEMENT FIRSTNAME (#PCDATA)>
Das XSL - OHNE Zusammenführung - könnte so aussehen:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<TEAM>
<MEMBER>
<xsl:for-each select="GRUPPE/PERSON/NAME">
<SURNAME>
<xsl:value-of select="."/>
</SURNAME>
</xsl:for-each>
<xsl:for-each select="GRUPPE/PERSON/VORNAME">
<FIRSTNAME>
<xsl:value-of select="."/>
</FIRSTNAME>
</xsl:for-each>
</MEMBER>
</TEAM>
</xsl:template>
</xsl:stylesheet>
Es stellen sich nach einigen unerfolgreichen Tests folgende Fragen:
a) ist das mit XSL und Co. überhaupt möglich?
b) Wenn ja, womit?
c) Wenn nein, womit dann?
Gruß
Alex