i’m trying to implement an xsl file to an xml doc. however when i do so, it displays nothing. if i remove the reference of the xsl from the xml file, the data at least is displayed.
this is the xsl code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<div>
<div style="background:red;"><xsl:value-of select="title"/></div>
<div style="background:green;"><p><xsl:value-of select="introduction"/></p></div>
<div style="background:blue;"><xsl:for-each select="verse">
<div><xsl:value-of select="p"/></div> <br />
<div><xsl:value-of select="trla"/></div> <br />
<div><xsl:value-of select="trli"/></div> <br />
</xsl:for-each>
</div>
</div>
</xsl:template>
</xsl:stylesheet>
the xml:
<root>
<title></title>
<introduction></introduction>
<verse>
<p></p>
<trla></trla>
<trli></trli>
</verse>
</root>
and the html where the xml is being called through php:
<div id="display">
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$xmldoc = new DOMDocument();
if(!file_exists('test.xml')){
echo "Sorry this file does not exists!";
exit();
} else {
$xmldoc->load('test.xml', LIBXML_NOBLANKS);
$activities = $xmldoc->firstChild->firstChild;
if($activities != null){
while($activities != null){
?>
<div id="xml">
<span>
<?php echo $activities->textContent ?> </li></ul></span> <br />
</div>
<?php
$activities = $activities->nextSibling;
}
}
}
?>
</div>
First off, there is no data in any of the nodes, so I would expect nothing to be displayed when
value-ofis called on them.In addition, your template only matches the root element, you need to explicitly call the element with the name
root, either in the template declaration, or the different selects.Change the match rule to
<xsl:template match="/root">.Alternatively, the following will also work (provided you have data in the relevant nodes):