Hallo,
mit folgendem Code möchte ich aus einer xml-Datei eine xhtml-Datei erzeugen (gefunden auf php.net). Das klappt solange, bis ich in der collection.dtd das Entity <I>test<I> definiere, das mir zukünftig als Navigation dienen soll, und in der <I>test2.xml</I> benutze.
Damit kann der xslt-Prozessor wohl nicht umgehen.
<B>out.php</B>
<PRE>
<?php
/* Load the two XML sources */
$xml = new DomDocument; // from /ext/dom
$xml->load('test2.xml');
$xsl = new DomDocument;
$xsl->load('test2.xsl');
/* Configure the transformer */
$proc = new xsltprocessor;
$proc->importStyleSheet($xsl); echo $proc->transformToXML($xml); ?>
</PRE>
<B>test2.xml</B>
<PRE>
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test2.xsl"?>
<!DOCTYPE collection SYSTEM "http://localhost/collection.dtd">
<collection>
&test;
<cd>
<title>PHP Rock</title>
<artist>Joe Coder</artist>
<year>2003</year>
</cd>
<cd>
<title>Squashing Typos on a Winter's Eve</title>
<artist>kennyt</artist>
<year>2004</year>
</cd>
</collection>
</PRE>
<B>navi.xml</B>
<PRE>
<navi>
<nav1>
1.punkt
</nav1>
<nav1>
2.punkt
</nav1>
<nav1>
2.punkt
</nav1>
</navi>
</PRE>
<B>test2.xsl</B>
<PRE>
<?xml version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xslutput method="xml" encoding="iso-8859-1" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
<xsl:template match="collection">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Titelliste</title>
</head>
<body>
<h1>Hey! Welcome to my sweet CD collection!</h1>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<h1><xsl:value-of select="title"/></h1>
<h2>by <xsl:value-of select="artist"/></h2>
<h3> - <xsl:value-of select="year"/></h3>
</xsl:template>
<xsl:template match="navi">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="nav1">
<li>
<xsl:value-of select="."/>
</li>
</xsl:template>
</xsl:stylesheet>
</PRE>
<B>collection.dtd</B>
<PRE>
<!ELEMENT collection ANY>
<!ELEMENT cd ANY>
<!ELEMENT title ANY>
<!ELEMENT artist ANY>
<!ELEMENT year ANY>
<!ELEMENT navi ANY>
<!ELEMENT nav1 ANY>
<!ENTITY test SYSTEM "http://localhost/navi.xml">
</PRE>
Bei test2.xml und test2.xsl handelt es sich um Abwandlung von Beispiel-Code, der auf php.net gepostet wurde.
Wäre großartig, wenn mir jemand weiterhelfen könnte.
Grüße Andy
mit folgendem Code möchte ich aus einer xml-Datei eine xhtml-Datei erzeugen (gefunden auf php.net). Das klappt solange, bis ich in der collection.dtd das Entity <I>test<I> definiere, das mir zukünftig als Navigation dienen soll, und in der <I>test2.xml</I> benutze.
Damit kann der xslt-Prozessor wohl nicht umgehen.
<B>out.php</B>
<PRE>
<?php
/* Load the two XML sources */
$xml = new DomDocument; // from /ext/dom
$xml->load('test2.xml');
$xsl = new DomDocument;
$xsl->load('test2.xsl');
/* Configure the transformer */
$proc = new xsltprocessor;
$proc->importStyleSheet($xsl); echo $proc->transformToXML($xml); ?>
</PRE>
<B>test2.xml</B>
<PRE>
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test2.xsl"?>
<!DOCTYPE collection SYSTEM "http://localhost/collection.dtd">
<collection>
&test;
<cd>
<title>PHP Rock</title>
<artist>Joe Coder</artist>
<year>2003</year>
</cd>
<cd>
<title>Squashing Typos on a Winter's Eve</title>
<artist>kennyt</artist>
<year>2004</year>
</cd>
</collection>
</PRE>
<B>navi.xml</B>
<PRE>
<navi>
<nav1>
1.punkt
</nav1>
<nav1>
2.punkt
</nav1>
<nav1>
2.punkt
</nav1>
</navi>
</PRE>
<B>test2.xsl</B>
<PRE>
<?xml version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xslutput method="xml" encoding="iso-8859-1" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
<xsl:template match="collection">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Titelliste</title>
</head>
<body>
<h1>Hey! Welcome to my sweet CD collection!</h1>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<h1><xsl:value-of select="title"/></h1>
<h2>by <xsl:value-of select="artist"/></h2>
<h3> - <xsl:value-of select="year"/></h3>
</xsl:template>
<xsl:template match="navi">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="nav1">
<li>
<xsl:value-of select="."/>
</li>
</xsl:template>
</xsl:stylesheet>
</PRE>
<B>collection.dtd</B>
<PRE>
<!ELEMENT collection ANY>
<!ELEMENT cd ANY>
<!ELEMENT title ANY>
<!ELEMENT artist ANY>
<!ELEMENT year ANY>
<!ELEMENT navi ANY>
<!ELEMENT nav1 ANY>
<!ENTITY test SYSTEM "http://localhost/navi.xml">
</PRE>
Bei test2.xml und test2.xsl handelt es sich um Abwandlung von Beispiel-Code, der auf php.net gepostet wurde.
Wäre großartig, wenn mir jemand weiterhelfen könnte.
Grüße Andy
Comment