Xml / Xsl

Status
Nicht offen für weitere Antworten.

arcanum

Grünschnabel
Hallo Member von Tutorial.de,

zuerst einmal erwähne ich, daß ich ein Neuling auf dem Gebiet XML,
XSLT etc. bin, daher suche ich ein wenig Hilfe in diesem Forum, evtl.
kann mir jemand bei der Suche auf Antwort helfen, mein Problem ist
wie folgend beschrieben.

Ich möchte eine XML-Datei in einer XML-Datei einbinden/aufrufen, das
ist erfoderlich, weil ich ansonsten für diverse Artikel Kategorien
jedesmal eine neue XML- und XSL-Datei erstellen müsste und dies dann
ein Aufwand wäre, der in keinem vernünftigen Verhältnis mehr steht :p

Die XML-Datei auf die ich referenzieren möchte :
--------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="mention_alle_preise.xsl" type="text/xsl"?>

<Mention xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="mention.xsd">
<Artikel>
etc...
--------------------------------------------------------------
Nun soll also der Part ab "<Mention..." in einer eigenen Datei stehen
und von der XML-Datei mit dem Part der ersten Zeilen aufgerufen werden.

Bei Unklarheiten bezüglich meiner Formulierung einfach "meckern" ;)

Danke, besten Gruß^^
 
Zuletzt bearbeitet:
Bin ebefalls XML Neuling.
Jedoch habe ich etwas gefunden:
Im Prolog müsste folgendes stehen.

<?xml version='1.0' standalone'no'?>
Was dem Parser sagt das externe Daten geladen werden müssen.

(Wenn es auf 'yes' steht wird die Parsing-Geschwindigkeit erhöht)

Des weiteren nehme ich an, dass Du es mit xlink lösen kannst.

Schau doch mal bei http://www.w3.org/TR/xlink/ vorbei.
Ist etwas kompliziert geschrieben viellleicht findest Du noch was besseres.

Die eingefleischten XMLer hier im Forum sollen mich bitte korrigieren, wenn ich falsch liege ;)

Hoffe Dir ist damit geholfen.
Empfehle Dir ausserdem das Buch "Einführung in XML" vom O'Reilly Verlag. Mit dem bin ich gerade am XML lernen.

Grüsse
crimbler
 
Zuletzt bearbeitet:
@crimbler

Vielen Dank fuer Deine Hilfe^^, habe mir die Geschichte
mit X-Link mal angeschaut. Scheint als muesste ich meine
Arbeit umstricken :p

Schade, dachte ich koennte in der XML-Datei einfach nur
eine Art "header" erstellen mit der benoetigten XSLT und
darunter den Link zur eigentlichen XML Daten-Quelle.

Bisher muss ich die komplette XML-Datei nehmen und immer
fuer die jeweilige Notwendigkeit die entsprechende XSLT
einbinden x.x
 
Es gibt doch eine Lösung!

Ich hab nochmals nachgeforscht und etwas gefunden was Deinen Vorstellungen sehr Nahe kommt.
So gennante "Externe Entities".
Diese sind dazu gedacht Platzhalter einzufügen, um diese dann durch einen Parser ersetzen zu lassen. Beispielsweise ganze Textabschnitte häufig verwendete Firmennamen. Es lassen sich aber auch komplette XML Teile einbinden!
Dabei ist wichtig, dass in der zu importierenden Datei kein sepparater XML Header vorhanden ist. Du kannst quasi einfach den Code den du auslagern willst mit Copy&Past in eine neue Datei machen.
So nun zum praktischen Teil:

<?xml version="1.0"?>
<!DOCTYPE doc SYSTEM "PFAD ZU DEINER DTD DATEI"
[
<!ENTITY beispiel SYSTEM "beispiel.xml">
]>
<deinetags>
&beispiel
<deinetags>

Das "&beispiel" wird jetzt durch den Inhalt der Datei "beispiel.xml ersetzt.
In der "beispiel.xml" kann sich eigentlich alles mögliche befinden.
Hab das ganze noch nicht gross getestet aber denke es sollte gehen.
Wenn nicht, nochmals fragen oder mal das Thema "externe entities xml" googeln.

Grüsse
crimbler
 
hi crimbler^^

vielen Dank für die Mühe, habe das mal ausprobiert,
leider funktioniert diese Lösung nur mit einer DTD
und nicht mit einer Schema-Datei, mit einer DTD geht
es gut... nur benötige ich halt diese Schema-Datei.

Meldung:
Ein XML-Element innerhalb von DTD ist nicht zugelassen.
Schemaheader:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

...xml und Konsorten sind echt "picky" XD
 
Schade, viellleicht gibt es noch andere Lösungen.
Wenn ich mal was nützliches zum Thema finde gebe ich Dir bescheid.

Grüsse
crimbler
 
Status
Nicht offen für weitere Antworten.
Zurück