xsl:value-of
选择不显示pdf中的属性,但是如果将xsl显示为html,则会显示数据,但不显示在tcpdf PDF文档中。我正在使用DOM文档和PHP,XSL以及XML和TCPDF技术。
XML代码在这里:
<?xml version="1.0" encoding="UTF-8"?>
<catalogue>
<category id="689" name="Cards" parentid="3"/>
<category id="7" name="Toys" parentid="0"/>
<category id="697" name="Boys Toys" parentid="7"/>
<category id="698" name="Girls Toys" parentid="7"/>
<category id="707" name="Play Toys" parentid="7"/>
<category id="708" name="Rides" parentid="7"/>
<category id="684" name="Swimming Accessories" parentid="7"/>
<category id="719" name="" parentid="0"/>
<category id="710" name="Cash" parentid="0"/>
<category id="711" name="Airtime" parentid="0"/>
<category id="716" name="Babies" parentid="0"/>
<category id="701" name="Baby Shower" parentid="716"/>
<category id="700" name="Infant" parentid="716"/>
<category id="713" name="Kiddies Furniture" parentid="716"/>
<category id="712" name="Protective Clothing (Baby Wear)" parentid="716"/>
<category id="715" name="Educational" parentid="0"/>
<category id="704" name="Educational Blocks" parentid="715"/>
<category id="705" name="Educational Puzzles" parentid="715"/>
<category id="695" name="Educational Toys" parentid="715"/>
<category id="3" name="Gifts" parentid="0"/>
<category id="693" name="Gift Bags" parentid="3"/>
<category id="718" name="Party" parentid="0"/>
<category id="696" name="Cake Decor" parentid="718"/>
<category id="688" name="Craft Accessories" parentid="718"/>
<category id="699" name="Decor" parentid="718"/>
<category id="694" name="Flowers" parentid="718"/>
<category id="686" name="Rentals" parentid="718"/>
<category id="687" name="Party Accessories" parentid="718"/>
<category id="687" name="Party Accessories" parentid="718"/>
<category id="720" name="Services" parentid="718"/>
<category id="686" name="Sweets" parentid="718"/>
<category id="2" name="Wedding Accessories" parentid="718"/>
<category id="717" name="Stationeries" parentid="0"/>
<category id="720" name="Stationery Reading Blocks" parentid="714"/>
<category id="4" name="Stationery" parentid="717"/>
<category id="691" name="Stationery Papers" parentid="717"/>
</catalogue>
XSL代码在这里
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes" doctype-public="-//W3C/DTD XHTML 1.0 Transitional//EN" doctype-system="
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" standalone="no" media-type="text/html" />
<xsl:template match="/">
<!-- <html>
<body>-->
<h2>Categories</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left; width: 210px">Category Name</th>
<th style="text-align:left; width: 80px">ID</th>
<th style="text-align:left; width: 80px">ParentID</th>
</tr>
<xsl:for-each select="catalogue/category">
<tr >
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="@parentid"/></td>
</tr>
</xsl:for-each>
</table>
<!--</body>
</html>-->
</xsl:template>
</xsl:stylesheet>
PHP代码在这里:
<?php
$xsl=0;
$xmldata = new DOMDocument( "1.0", "UTF-8");
$xml_file = "test005.xml";
$xmldata->load($xml_file);
$xslDoc = new DOMDocument("1.0", "UTF-8");
$xslt_file = "catalogue2.xsl";
$xslDoc->load($xslt_file);
print_r(xml2html($xmldata, $xslDoc));
function xml2html($xmldata, $xsl)
{
/* $xmldata -> your XML */
/* $xsl -> XSLT file */
$path = 'include';
$arguments = array('/_xml' => $xmldata);
$xsltproc = new XSLTProcessor();
$xsltproc->importStyleSheet($xsl);
$html = $xsltproc->transformToXML($xmldata);
if (empty($html)) {
die('XSLT processing error: ');//. XSLTxslt_error($xsltproc));
}
return $html;
}
?>
答案 0 :(得分:1)
这听起来类似于我在TCPDF中没有完全显示我已经传入的XML的问题。
在我的例子中,似乎从transformToXML返回的XML包含一个自闭合标记形式的空单元格,即。 <td />
而不是<td></td>
。当通过浏览器将其视为网页时,这会呈现正常,但TCPDF不喜欢它,并且生成的PDF在此之后是空白的。
如果你看到同样的问题,基于你的XML和XSL,类别ID 719的空白'name'属性似乎是最明显的罪魁祸首。
尝试在<xsl:for-each>
循环的表格单元格中添加空格,以查看是否会导致PDF格式正确生成;就我而言,确实如此。