使用XSL将XML转换为HTML?

时间:2012-01-18 14:12:26

标签: php xslt

我有一些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

我必须遗漏一些明显的东西,但这对我来说是新的,我不确定!

2 个答案:

答案 0 :(得分:2)

在您的XSLT代码中,没有任何具有match属性的模板。这意味着没有任何模板被执行,XSLT处理器为每个节点类型应用 built-in (默认)模板。

应用内置模板的最终结果是输出是源XML文档中所有文本节点的串联 - 这正是您得到的。

解决方案

定义至少一个匹配的模板,例如<xsl:template match="/">。在此模板的代码中,您可以调用命名模板,但调用模板通常是一种不好的做法,通常应首选应用模板。

答案 1 :(得分:0)

尝试:

<xsl:output method="html" />