ein xml dokument in einem xml-dokument einbetten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

ein xml dokument in einem xml-dokument einbetten

Beitrag von Natas12 » 11.07.2004 20:06:10

hallo,

ich bin gerade an einem punkt, wo mir mein buch über xml nicht weiterhilft. folgende struktur sei gegeben:

Code: Alles auswählen

<hier stehen viele tags/>

<plugin>


</plugin>

<hier stehen tags/>
ziel: das dokument soll mit "plugins" erweiterbar sein. also: user sollen eigene, zusätzliche tags erstellen können. hierbei sollen die plugins mit den neu definierten tags in separaten dateien liegen und mit eigener dtd (bzw. xsd) versehen werden.
auf der stylsheet-seite bekommt jedes plugin dann ein eigenes stylesheet, welches über die xslt-import - funktion im "hauptstylesheet" eingebunden wird.

mein ideal wäre also folgendes:

Code: Alles auswählen

<hier stehen viele tags/>

<plugin>

<link zu einem xml-dokument="/home/user/plugin.xml"/>

</plugin>

<hier stehen tags/>
für den parser soll das aber so aussehen, als stünde "plugin.xml" innerhalb der datei. ich bin nicht so firm in xml, deshalb weiß ich nicht, ob das eine sache von xlink oder ähnlichen technologien sein könnte...

weiß jemand rat? oder ein fähiges xml-forum...? ;-)
"In den reichen Ländern hat die Freiheit gesiegt - mit all den schrecklichen Folgen, die das für die anderen mit sich bringt und noch bringen wird. Die Demokratie ist auf andere Epochen verschoben." (L. Canfora)

Benutzeravatar
Pischti
Beiträge: 417
Registriert: 20.02.2002 12:54:18
Wohnort: dresden

Beitrag von Pischti » 14.07.2004 13:43:28

hm,
mir ist nichts bekannt, das xml das selber kann (eventuell ne pi durch den parser).

wie wärs vielleicht damit:
ein script vorschalten (z.b. php oder perl), welches deine originale xml-datei parst und nach dem <plugin> sucht. wenn es etwas findet, dann wird das originale xml-file durch dein script dynamisch erweitert ... am ende lifert das script das neu generierte xml-file aus.

gruss pischti

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 14.07.2004 14:00:59

Also für das Einbetten gibt es auf jeden Fall die Namespaces [1],[2], die dafür gedacht sind und dafür wohl auch verwendet werden sollten. In wie fern das dann mit deinen Stylsheets geht, weiß ich auch gerade nicht. Vielleicht wird dir hier [3] weitergeholfen. Ist mir aber gerade zu fett, um da mal eben durchzusteigen.

Für die Verlinkung auf externe Datein ist wohl Xlink [4],[5] vorgesehen. Damit kenn ich mich aber gar nicht aus, und kann dazu überhaupt nichts sagen.

cu

[1] http://www.w3schools.com/xml/xml_namespaces.asp
[2] http://www.schumacher-netz.de/TR/1999/R ... 14-de.html
[3] http://www.edition-w3c.de/TR/2001/REC-x ... 010502/#K3
[4] http://www.w3.org/XML/Linking
[5] http://www.edition-w3c.de/TR/2001/REC-xlink-20010627/

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Beitrag von Natas12 » 14.07.2004 14:27:20

danke,

das mit den stylesheets geht. mit xsl:import können am anfang eines stylesheets weitere externe stylesheets geladen werden, die man mit xsl:call oder mit xsl:template aufrufen kann. das funktioniert auch alles ganz gut, wenn der inhalt des plugins, welches ausgelagert werden soll, INNERHALB der quelldatei steht und einen eigenen namensraum hat.

eleganter wäre es, das ding auszulagern. so könnte man als user einfach ein paar plugins "dazukaufen" oder selber bauen, in den passenden ordner kopieren und lediglich einen verweis auf ein weiteres stylesheet (im "hauptstylesheet) einbinden (das ginge vielleicht auch mit einem skript).

hab noch einige fühler ausgestreckt und erfahren, dass das wohl eine sache für xlink sei (was eigentlich für quasi-hyperlinks innerhalb von xml-dokumenten gedacht ist).

wenn ich es herausfinde, poste ich die lösung... :-)

die links gucke ich mir trotzdem an...

gruß & dank

natas12
"In den reichen Ländern hat die Freiheit gesiegt - mit all den schrecklichen Folgen, die das für die anderen mit sich bringt und noch bringen wird. Die Demokratie ist auf andere Epochen verschoben." (L. Canfora)

Antworten