# XSL und JDom



## Alenka87 (24. Nov 2011)

Hallo 

Nun, ich hab grad ein kleines "Problemchen", und zwar lese ich mit JDom eine XSL Datei, die XML-Daten transformiert. ALles kein Problem. Nun würde ich gerne wissen, ob ich mit JDom auch die XML irgendwie rauslesen kann

Bsp: ich habe folgende XSL Datei

[XML]<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery">
    <xsl:template match="/">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>
                <fo:simple-page-master master-name="default-page" page-height="11in" page-width="8.5in" margin-left="0.6in" margin-right="0.6in" margin-top="0.79in" margin-bottom="0.79in">
                    <fo:region-body/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <foage-sequence master-reference="default-page">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block>
                          <xsl:value-of select="/test/data1"/>
                    </fo:block>
                </fo:flow>
            </foage-sequence>
        </fo:root>
    </xsl:template>
</xsl:stylesheet>[/XML]

Und ich würde gerne wissen in welcher XML-Datei sich folgender Inhalt befindet:


```
<xsl:value-of select="/test/data1"/>
```

Natürlich liegt die XSL Datei und die XML datei beide in der Datenbank, aber ich hätte gerne ne Prüfung, falls zufällig (aus welchen gründen auch immer) eine falsche XML geladen wird

Muss anmerken, ich bin ein Neuling, was XML, XSL und JDom angeht ???:L


----------



## SlaterB (24. Nov 2011)

verstehe das Problem nicht,
was hat es mit dem XSL zu tun, ob andere XML-Dateien existieren in denen <test> und <data1> Tags enthalten sind?

das einzige, was du mit dem XSL machen kannst, ist, nach xsl:value-of-Tags zu schauen und damit '/test/data1' zu extrahieren,
falls dir diese konkrete Information noch nicht bekannt war,
besonders kompliziert kannst du es dir noch machen, wenn du weitere Bausteine drumherum, höhere Tag-Ebenen finden willst,
also '/welt/test/data1' könnte mit XSL innerhalb von
[xml]
<xsl:for-each select"/welt">
    <xsl:value-of select="/test/data1"/>
</for-each>
[/xml]
versteckt sein oder noch viel komplizierter, mit Templates usw. bestimmt unmöglich nachvollziebar versteckbar

-------

soweit kann das XSL angeschaut werden, solange hat es nichts mit anderen XML zu zu tun,
aus dem XSL kann (soweit ich mir das bisher denke) nur die Information '/test/data1' gewonnen werden, falls die dir nicht eh schon bekannt ist

von nun an ist das XSL uninteressant und es können ein oder mehrere XML-Dateien bemüht werden,
dort nach '/test/data1' zu suchen ist per Textsuche oder JDom nicht ganz leicht, die Tags  <test> und <data1> liegen zwar ub einer Ebene verschachtelt aber doch getrennt voneinander vor,
man muss schon mit bisschen Arbeit vorgehen, nach JDom-Knoten <test> suchen, dann in dessen childs nach <data1> schauen usw.,

leichter geht es vielleicht mit einer fertigen Suchsprache wie XPath, die XSL letzlich auch verwendet, geht es dir darum?
XPath ? Wikipedia
dahinter steht natürlich auch nicht Zauberei sonder KB an Code, welcher auf letztlich auch irgendwie Nodes anschaut usw.

war irgendeiner meiner Gedanken dazu jetzt irgendwie richtig/ spannend?


----------



## Alenka87 (25. Nov 2011)

Vielleicht habe ich mein Problem falsch geschildert....

Mal angenomen ich habe zwei XML-Dateien:

test_data1.xml:

[XML]<test>
    <data1>datensatz1</data1>
    <data2>datensatz2</data2>
</test>[/XML]

test_data2.xml:

[XML]<test>
    <data1>datensatz3</data1>
    <data2>datensatz4</data2>
</test>[/XML]


Problem:

Der Nutzer lädt sich vom System die "_test_data1.xml_" runter
Er nutzt einen WYSIWYG Editor, da dieser Nutzer X keine XSLT-Kenntnisse hat. Der Editor braucht eine Datenquelle und der Nutzer gibt  die "_test_data1.xml_" als Datenquelle an und generiert letztendlich den Code zum transformieren
Dann wird der Code im System hochgeladen.
Mit Java wird der FOP Transformer aufgerufen.
Ergebnis: PDF-Dokument

Ich würde nun gerne prüfen, ob der Nutzer tatsächlich die richtige XML-Datei im WYSIWYG-Editor genomen hat (und nicht zufällig "_test_data2.xml_", die er zufällig auch auf seinem Rechner haben könnte)
Kann ich das irgendwie mit JDom machen oder ist da nichts zu machen, wenn der Editor zu einem anderen System gehört?


----------



## SlaterB (25. Nov 2011)

wieso ist test_data1.xml richtig und test_data2.xml falsch? nur weil Sekunden vorher eine der Dateien ausgewählt wurde oder gibt es ein inhaltliches Kriterium?
wer soll überhaupt prüfen, irgendein Server, irgendein Client, irgendein 'ich', wer ist ich, eine dritte Partei auf Hawaii oder wie genau sind die Zusammenhänge,

auf welche Weise kann überhaupt gerpüft werden, klingt so als wäre maximal der Inhalt der Datei irgendwo übertragen, 
nicht aber der Dateiname, wie soll vom Inhalt etwas erschlossen werden, außer der 'Prüfer' kennt auch alle Dateien,
dann kann er natürlich inhaltlich vergleichen,
ist nur das fertige PDF übertragen und soll daraus nachvollzogen werden welche von mehreren bekannten Quellen verwendet wurde?

mit meinem letzten Satz höre ich mir selber irgendwie am vernünfigsten an,
allgemein möchte ich aber ausdrücken dass das alles noch sehr unklar klingt 

aus dem PDF würde ich am ehesten fertige Informationen wie 'datensatz1' anschauen, falls das reiner Text ist
und suchen, in welchem XML dieser Text direkt auftaucht, 
mit JDOM, XSL, Tags, XPath sehe ich wenig Hoffnung


----------

