我有一些XML,一个XSL文件和4个CSS文件。我正在尝试使用XSLTProcessor处理XML,但它无法正常工作。
$xml = new DomDocument;
$xml->load('label.xml');
$xsl = new DomDocument;
$xsl->load('HTMLRestOfWorldRoutingLabelRendererOrig.xsl');
$proc = new xsltprocessor;
$proc->importStyleSheet($xsl);
$result = $proc->transformToXML($xml);
echo $result;
但这只是显示以下内容而没有任何格式。
<?xml version="1.0"?>
1
1.11kg
piece1
1100123456782011641024001011
123456782|123456782||1||John Smith|TNT Express|ATHERSTONE|CV9 1TT|GB|S||TNT Corporate Head Office|Neptunusstraat 41-63|AMSTERDAM|1011 AA|NL||EX|N|PR||||0|12.34|GBP|N|piecelinegoods desc|3|1.11|1.3676310000000003|N|18 Jan 2012|13:51:00
2
1.11kg
piece1
1100123456782021641024001011
123456782|123456782||2||John Smith|TNT Express|ATHERSTONE|CV9 1TT|GB|S||TNT Corporate Head Office|Neptunusstraat 41-63|AMSTERDAM|1011 AA|NL||EX|N|PR||||0|12.34|GBP|N|piecelinegoods desc|3|1.11|1.3676310000000003|N|18 Jan 2012|13:51:00
3
1.11kg
piece3
1100123456782031641024001011
123456782|123456782||3||John Smith|TNT Express|ATHERSTONE|CV9 1TT|GB|S||TNT Corporate Head Office|Neptunusstraat 41-63|AMSTERDAM|1011 AA|NL||EX|N|PR||||0|12.34|GBP|N|piecelinegoods desc|3|1.11|1.3676310000000003|N|18 Jan 2012|13:51:00
123456782
John Smith
TNT Express
TNT House
ATHERSTONE
Warks
CV9 1TT
GB
TNT Corporate Head Office
Neptunusstraat 41-63
2132 JA Hoofddorp
AMSTERDAM
1011 AA
NL
100445
GB
3
Express
PR
2012-01-18
INT
AIR
C
2
CVT
EMA
LGG
SP8
19
2012-01-19
01
GBP 12.34
BSH
<?xml version="1.0"?>
1
1.11kg
piece1
1100123456782011641024001011
123456782|123456782||1||John Smith|TNT Express|ATHERSTONE|CV9 1TT|GB|S||TNT Corporate Head Office|Neptunusstraat 41-63|AMSTERDAM|1011 AA|NL||EX|N|PR||||0|12.34|GBP|N|piecelinegoods desc|3|1.11|1.3676310000000003|N|18 Jan 2012|13:51:00
2
1.11kg
piece1
1100123456782021641024001011
123456782|123456782||2||John Smith|TNT Express|ATHERSTONE|CV9 1TT|GB|S||TNT Corporate Head Office|Neptunusstraat 41-63|AMSTERDAM|1011 AA|NL||EX|N|PR||||0|12.34|GBP|N|piecelinegoods desc|3|1.11|1.3676310000000003|N|18 Jan 2012|13:51:00
3
1.11kg
piece3
1100123456782031641024001011
123456782|123456782||3||John Smith|TNT Express|ATHERSTONE|CV9 1TT|GB|S||TNT Corporate Head Office|Neptunusstraat 41-63|AMSTERDAM|1011 AA|NL||EX|N|PR||||0|12.34|GBP|N|piecelinegoods desc|3|1.11|1.3676310000000003|N|18 Jan 2012|13:51:00
123456782
John Smith
TNT Express
TNT House
ATHERSTONE
Warks
CV9 1TT
GB
TNT Corporate Head Office
Neptunusstraat 41-63
2132 JA Hoofddorp
AMSTERDAM
1011 AA
NL
100445
GB
3
Express
PR
2012-01-18
INT
AIR
C
2
CVT
EMA
LGG
SP8
19
2012-01-19
01
GBP 12.34
BSH
我的label.xml位于http://pastebin.com/Shm09jCK
我已将HTMLRestOfWorldRoutingLabelRendererOrig.xsl上传至http://pastebin.com/QPXE3B0r
我必须遗漏一些明显的东西,但这对我来说是新的,我不确定!
答案 0 :(得分:2)
在您的XSLT代码中,没有任何具有match
属性的模板。这意味着没有任何模板被执行,XSLT处理器为每个节点类型应用 built-in (默认)模板。
应用内置模板的最终结果是输出是源XML文档中所有文本节点的串联 - 这正是您得到的。
解决方案:
定义至少一个匹配的模板,例如<xsl:template match="/">
。在此模板的代码中,您可以调用命名模板,但调用模板通常是一种不好的做法,通常应首选应用模板。
答案 1 :(得分:0)
尝试:
<xsl:output method="html" />