Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zalanczanie pliku xml
Forum PHP.pl > Forum > XML, AJAX > XML
slash.
Mam takie zadanie - przygotowuje dokumentacje projektu w XML'u projekt sklada sie z plikow XML, XML Schema i szablonow XSL, kazda strona posiada swoj plik XML(jest ich kilkanascie) wszystkie korzystaja z jednego pliku XSD i jednego szablonu XSL, jednak w kazdym z plikow XML ma sie znalezc nazwa projektu i jego wersja - chialbym do tego uzyc powiedzmy pliku projectinfo.xml ktory zawieralby informacje o projekcie - mialby swoj XSD w ktorym zdefiniowalbym w nim strukture - jednak chcialbym wiedziec jak zalaczyc ten plik do pozostalych plikow XML tak aby informacje w nim zawarte byly dostepne dla kazdego z nich,
czyli poprostu chodzi mi o cos takiego jak include() w php, ktos moze wie jak mi pomoc questionmark.gif
Seth
Za pomoca XSLT mozna dolaczac ronze XMLe ( <xsl:include href="..."/> ) ale nie wiem czy o to Ci chodzilo. Wiecej o dolaczaniu xmla tutaj: http://www.w3.org/TR/xslt
Dominik
Nie wiem czy dobrze rozumiem chodzi Ci o cos w rodzaju iframe/img w XHTML-u? Jesli tak to polecam XLink i/lub XInclude. Polecam to pierwsze poniewaz XInclude nie jest jeszcze oficjalna rekomendacja (chociaz wlasciwie nie przewiduje zeby cos sie zmienilo).
slash.
nie no nie wiem co mnie otumanilo chcialem za wszelka cena albo zaincludowac do pliku xml drugiego xml'a albo w jakis sposob dolaczyc do XSD aby sprawdzal dwa pliki XML ale przeciez mozna faktycznie zalaczyc w XSL'u. Dzieki ;-)
slash.
upsss chyba nie do konca sie zrozumielismy - wszystko fajnie ale <xsl:include href=""> zalancza inne szablony XSL wiec to mi chyba za duzo nie da ;-) bo ja mam cos takiego:
project.xml
[xml:1:6a9b4e8a04]
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsdproject.xsd">
<name>cso</name>
<version>1.0 alpha</version>
<desc>Niezawodny i nie powtarzalny system</desc>
<createdby>
<author fname="Michał" who="Devenloper" email="michal@qqqq.net"/>
<author fname="Piotr" who="Devenloper" email="piotr@ttt.net"/>
<author fname="Marcin" who="Designer" email="marcin@ssss.net"/>
</createdby>
<logo height="121" width="434" border="0" name="xxxx.gif"/>
<smallLogo height="121" width="434" border="0" name="xxx.gif"/>
<copyright>All rights reserved xxxx 2003</copyright>
<homesite>http://xxxxxx.net</homesite>
</project>
[/xml:1:6a9b4e8a04]
do tego mam powiedzmy plik
wstep.xml
[xml:1:6a9b4e8a04]
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xslwstep.xsl"?>
<wstep xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/wstep.xsd">
<title>Wstęp</title>

<link href="spis.xml" target="_self" name="Spis treści"/>
<link href="http://dynamicsite.net" target="_blank" name="DynamicSite Group Website"/>
</wstep>
[/xml:1:6a9b4e8a04]
Nie jesto on rozbudowany ale jak widzmy jest on przetwarzany z uzyciem szablonu XSL (pomijam tutaj plik XML Schema sprawdzajacy poprawnosc dokumenu)
[xml:1:6a9b4e8a04]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:include href="../project.xml" />
<xsl:template match="/">
<html>
<head>
<title>
<xsl:value-of select="project/name"/> - <xsl:value-of select="wstep/title"/>
</title>
<link href="css/styles.css" rel="stylesheet" media="screen"/>
</head>
<body bgcolor="#f5f5f5" leftmargin="0" marginheight="8" marginwidth="0" topmargin="8">
<div align="center">
<table width="480" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<h1>
<img>
<xsl:attribute name="src">images/<xsl:value-of select="project/logo/@name"/></xsl:attribute>
<xsl:attribute name="height"><xsl:value-of select="project/logo/@height"/></xsl:attribute>
<xsl:attribute name="width"><xsl:value-of select="project/logo/@width"/></xsl:attribute>
</img>
</h1>
<h3>
<br/>
<h2>
<i>
<xsl:value-of select="project/name"/> - <xsl:value-of select="project/version"/>
</i>
</h2>
<br/>
<xsl:value-of select="project/desc"/>
</h3>
<h3>
<br/>
</h3>
<h3>
<br/>
</h3>
<h3>
<br/>
</h3>
<div class="createdby">
<xsl:variable name="key" select="w/createdby/author"/>
<xsl:for-each select="$key">
<xsl:value-of select="@fname"/>
<xsl:if test="@nick">
<i>
&lt;<xsl:value-of select="@nick"/>&gt;
</i>
</xsl:if>
<xsl:value-of select="@lname"/>
<a>
<xsl:attribute name="href">
mailto:<xsl:value-of select="@email" />
</xsl:attribute>
&lt;<xsl:value-of select="@email"/>&gt;<br/>
</a>
<i>
<xsl:value-of select="@who"/>
</i>
<br/>
<br/>
</xsl:for-each>
</div>
<h3><br/></h3>
<h3><br/></h3>
<h3><br/></h3>
<xsl:variable name="key2" select="project/link" />
<center>|
<xsl:for-each select="$key2">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@href" />
</xsl:attribute>
<xsl:attribute name="target">
<xsl:value-of select="@target" />
</xsl:attribute>
<xsl:value-of select="@name" />
</a> |
</xsl:for-each>
</center>
<h4>
<xsl:value-of select="project/copyright"/>
</h4>
</td>
</tr>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
[/xml:1:6a9b4e8a04]
Plik ten jest dosc nie poreczny i nie poprawny ale nie wiem jak tu zaczarowac go zeby pobieral potrzebne mu dane z plikow project.xml i wstep.xml - jezeli nie dokonac zlaczenia w XSL to moze w XML'u tak jak wczesniej o tym pisalem questionmark.gif
Sorry jesli troche zamotalem ;-)
Seth
A daj tak:

[xml:1:8278ffc9ab]<include parse="xml" href="jakisplik.xml"/>[/xml:1:8278ffc9ab]
slash.
to include wewnatrz stylu XSL tak questionmark.gif ale w takim razie w jaki sposob odwolac sie do elementow tego dokumentu questionmark.gif bo w takim przypadku bede mial tak jakby dwa glowne elementy
Seth
Moze to Ci pomoze: http://www.w3.org/TR/xinclude/#XLink
slash.
no dzieki mysle ze to powinno pomoc - narazie jeszcze jestem w szkole to tego nie sprawdze ale na pierwszy rzut oka wyglada na rozwiazanie mojego problemu. No to thx.
Dominik
Cytat
A daj tak:

[xml:1:9a4b4c9efe]<include parse="xml" href="jakisplik.xml"/>[/xml:1:9a4b4c9efe]

Zaraz zaraz!! Nie zapomnij o przestrzeni nazw, bez niej ten znacznik nie istnieje.

[xml:1:9a4b4c9efe]<zacznikGlowny xmlns="jakas.przestrzen.glowna" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include parse="xml" href="jakisplik.xml"/>...[/xml:1:9a4b4c9efe]

Lub tak jak wczesniej napisalem dzieki XLink:
A to by wygladalo mniej-wiecej tak:
[xml:1:9a4b4c9efe]<znacznik
xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="simple"
xlink:href="jakisplik.xml"
xlink:show="embed"
xlink:title="to tylko przyklad" />[/xml:1:9a4b4c9efe]
slash.
no wszystko fajnie tylko jak jeszcze okreslic w XML Schema ze uzywamy tego zalaczenia questionmark.gif
Dominik
Cytat
no wszystko fajnie tylko jak jeszcze okreslic w XML Schema ze uzywamy tego zalaczenia questionmark.gif

Ale chodzi Ci o XLink? Jesli tak to zalezy od parsera (poniewaz dokladnie w specyfikacji tego nie okreslono a, ze parsera takiego nie ma wiec to jest rozmowa wirtualna. A z takimi rozmowani wiesz jak jest...
Ja jednak mam na ten temat podobne zdanie jak kulku tzw "guro XML-a" czyli dziala to analigicznie do XInclude.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.