У меня есть XML, XSL-файл и 4 CSS-файла. Я пытаюсь обрабатывать XML с помощью XSLTProcessor, но он не работает.
$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 находится по адресу http://pastebin.com/Shm09jCK
Я загрузил HTMLRestOfWorldRoutingLabelRendererOrig.xsl в http://pastebin.com/QPXE3B0r
Я должен упустить что-то очевидное, но это ново для меня, и я не уверен!
В вашем XSLT-коде нет шаблона с атрибутом соответствия. Это означает, что ни один из шаблонов не выполняется, и процессор XSLT применяет встроенные шаблоны (по умолчанию) для каждого типа узлов.
Конечным результатом применения встроенных шаблонов является вывод конкатенации всех текстовых узлов в исходном XML-документе – это именно то, что вы получаете.
Решение :
Определите хотя бы один шаблон соответствия, например <xsl:template match="/">
. В коде этого шаблона вы можете назвать ваши именованные шаблоны, хотя вызов шаблонов, как правило, является плохой практикой, и применение шаблонов обычно должно быть предпочтительным.
Пытаться:
<xsl:output method="html" />