PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit einem XSLT zwei XML validieren ?


Ladon
05.04.2006, 11:42
Hallo zusammen!

Ich will 2 xml-Dokumente auf Gleichheit prüfen.
Jedoch bekomm ich den XSLT-Code irgendwie nicht so richtig hin.

<?xml version="1.0" encoding="ISO-8859-2"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-2"
indent="yes"/>
<xsl:import href="DanebenNicht.xml"/>

<xsl:template match="/">
<xsl:variable name="test">
<xsl:apply-imports/>
</xsl:variable>
<vergleich>
<xsl:value-of select="$test" />
<xsl:apply-templates select="RegelListe/Regel/Leistung"/>
</vergleich>
</xsl:template>

</xsl:stylesheet>



So sollte man doch eigentlich die Datei "DanebenNichts.xml einbinden
können, oder?!
Die Ausgabe zeigt aber immer nur das XML an, mit dem ich das XSLT aufgerufen habe.
Es passiert also nichts mit dem Importiertem.

Und wenn ich das dann mal soweit geschafft habe,
wie kann ich dann die eingebundene Datei mit der XML-Datei validieren,
mit der ich das XSLT gestartet habe?

Was für Code muss da in das XSLT??

Vielen Dank!!


Coreyl
05.04.2006, 11:46
document funktion sollte helfen, hier kleiner codeschnipsel (bindet die datei als variable ein)
<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="iso-8859-1"/>

<xsl:variable name="theNewDocument"
select="document('file://seccond_doc.xml')"/>

<xsl:template match="*">
<xsl:for-each select="$theNewDocument/*">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

Ladon
05.04.2006, 13:28
Das Programm sagt mir immer das eine Endlosschleife vorhanden ist...

<?xml version="1.0" encoding="ISO-8859-2"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-2" indent="yes"/>


<xsl:variable name="test" select="document('DanebenNicht.xml')"/>
<xsl:template match="/">
<vergleich>
<xsl:value-of select="$test" />
</vergleich>
</xsl:template>
</xsl:stylesheet>

Coreyl
05.04.2006, 14:33
nimm das konstrukt:
<xsl:for-each select="$theNewDocument/*">
<xsl:value-of select="."/>
</xsl:for-each>

den:

<xsl:for-each select="$theNewDocument/*">
<html><head></head><body>
<xsl:value-of select="."/>
</body></html><wasauchimmer><dannebennichtmitzweiNausserdem ;) >
</xsl:for-each>

also: durch die variable iterieren, nicht deren inhalt abfragen
hab das selbst nicht getestet Ladon, musst selbst weng rumfummeln
aber im <foreach select=(variable)>(DEIN STYLESHEET)<foreach> sollte es wohl funktionieren...

http://www.w3.org/TR/xslt#document